59 double SolarSystem::atan23 (
double y,
double x)
64 if ((x == 0) && (y == 0)) result = 0;
65 else result = atan2 (y, x);
107 double hh, t, sec, dlt;
113 t = fmod(hh,1.0)*100.0;
114 mm = int(t + 0.1e-12);
115 sec = fmod(hh*100.0,1.0)*100.0;
116 hh =
ddd(deg,mm,sec);
122 void SolarSystem::ssinit()
125 ss_update_called =
false;
126 ss_moon_called =
false;
128 ss_planmat_called =
false;
129 ss_kepler_stored =
false;
130 ss_kepler_called =
false;
140 ss_del_tdut =
DefTdUt(ss_year);
145 ss_planmat =
mxidn();
149 void SolarSystem::DefTime ()
156 jd = 40587.0 + tt/86400.0;
158 caldat(jd, hh, mm, ss, hr);
167 if (ss_del_auto) ss_del_tdut =
DefTdUt(ss_year);
182 ss_del_tdut = d + 32.184;
190 ss_del_tdut =
DefTdUt(ss_year);
200 jd =
ddd(hour, min, sec) - ss_tzone;
201 jd =
mjd(day, month, year, jd);
204 ss_update_called =
false;
205 ss_moon_called =
false;
206 ss_planmat_called =
false;
207 ss_kepler_called =
false;
218 sec = double(ss_second);
219 jd =
ddd(ss_hour, ss_minute, sec);
220 jd =
mjd(ss_day, ss_month, ss_year, jd);
223 ss_update_called =
false;
224 ss_moon_called =
false;
225 ss_planmat_called =
false;
226 ss_kepler_called =
false;
237 jd =
ddd(hour, min, sec) - ss_tzone;
238 jd =
mjd(day, month, year, jd);
250 caldat((mjd + ss_tzone/24.0), day, month, year, magn);
251 dms (magn,hour,min,sec);
252 if (sec>30.0) min++;;
262 int day, month, year;
265 if (yr == 0) ss_epoch = 0;
269 b = 12.0 * (yr - double(year));
274 ss_epoch =
mjd(day, month, year, b);
276 ss_update_called =
false;
277 ss_moon_called =
false;
278 ss_planmat_called =
false;
279 ss_kepler_called =
false;
286 ss_update_called =
false;
287 ss_moon_called =
false;
288 ss_planmat_called =
false;
289 ss_kepler_called =
false;
297 if (strncmp(
"Sun", pname, 3) == 0)
302 if (strncmp(
"Moon", pname, 4) == 0)
307 if (strncmp(
"Mercury", pname, 7) == 0)
312 if (strncmp(
"Venus", pname, 5) == 0)
317 if (strncmp(
"Mars", pname, 4) == 0)
322 if (strncmp(
"Jupiter", pname, 7) == 0)
327 if (strncmp(
"Saturn", pname, 6) == 0)
332 if (strncmp(
"Uranus", pname, 6) == 0)
337 if (strncmp(
"Neptune", pname, 7) == 0)
342 ss_update_called =
false;
343 ss_moon_called =
false;
344 ss_planmat_called =
false;
345 ss_kepler_called =
false;
349 void SolarSystem::updateSolar()
353 const double ae = 23454.77992;
361 ss_update_called =
true;
364 dt = ss_time + ss_del_tdut/86400.0;
369 ss_pven = pln.
Venus(dt);
370 ss_pearth[0] = -ss_rs[0];
371 ss_pearth[1] = -ss_rs[1];
372 ss_pearth[2] = -ss_rs[2];
373 ss_pmars = pln.
Mars(dt);
384 if (ss_central_body == 2) coff -= ss_pmer;
385 if (ss_central_body == 3) coff -= ss_pven;
386 if (ss_central_body == 4) coff -= ss_pearth;
387 if (ss_central_body == 5) coff -= ss_pmars;
388 if (ss_central_body == 6) coff -= ss_pjup;
389 if (ss_central_body == 7) coff -= ss_psat;
390 if (ss_central_body == 8) coff -= ss_pura;
391 if (ss_central_body == 9) coff -= ss_pnept;
392 if (ss_central_body == 1) coff = coff + ss_rs - ss_rm;
408 ss_rs =
eclequ(dt, ss_rs);
409 ss_rm =
eclequ(dt, ss_rm);
410 ss_pmer =
eclequ(dt, ss_pmer);
411 ss_pven =
eclequ(dt, ss_pven);
412 ss_pearth =
eclequ(dt, ss_pearth);
413 ss_pmars =
eclequ(dt, ss_pmars);
414 ss_pjup =
eclequ(dt, ss_pjup);
415 ss_psat =
eclequ(dt, ss_psat);
416 ss_pura =
eclequ(dt, ss_pura);
417 ss_pnept =
eclequ(dt, ss_pnept);
424 ss_rs =
mxvct(pmx,ss_rs);
425 ss_rm =
mxvct(pmx,ss_rm);
426 ss_pmer =
mxvct(pmx,ss_pmer);
427 ss_pven =
mxvct(pmx,ss_pven);
428 ss_pearth =
mxvct(pmx,ss_pearth);
429 ss_pmars =
mxvct(pmx,ss_pmars);
430 ss_pjup =
mxvct(pmx,ss_pjup);
431 ss_psat =
mxvct(pmx,ss_psat);
432 ss_pura =
mxvct(pmx,ss_pura);
433 ss_pnept =
mxvct(pmx,ss_pnept);
439 pmx =
nutmat(dt, eps2,
false);
440 ss_rs =
mxvct(pmx,ss_rs);
441 ss_rm =
mxvct(pmx,ss_rm);
442 ss_pmer =
mxvct(pmx,ss_pmer);
443 ss_pven =
mxvct(pmx,ss_pven);
444 ss_pearth =
mxvct(pmx,ss_pearth);
445 ss_pmars =
mxvct(pmx,ss_pmars);
446 ss_pjup =
mxvct(pmx,ss_pjup);
447 ss_psat =
mxvct(pmx,ss_psat);
448 ss_pura =
mxvct(pmx,ss_pura);
449 ss_pnept =
mxvct(pmx,ss_pnept);
453 void SolarSystem::getRaDec(
Vec3 r1,
double& ra,
double& decl)
464 if (ra < 0) ra += 24.0;
466 decl = DegFDms(decl);
473 if (!ss_update_called) updateSolar();
474 if (ss_central_body == 0)
479 else getRaDec (ss_rs, ra, decl);
484 if (!ss_update_called) updateSolar();
485 if (ss_central_body != 4)
490 else getRaDec (ss_rm, ra, decl);
495 if (!ss_update_called) updateSolar();
496 if (ss_central_body == 2)
501 else getRaDec (ss_pmer, ra, decl);
506 if (!ss_update_called) updateSolar();
507 if (ss_central_body == 3)
512 else getRaDec (ss_pven, ra, decl);
517 if (!ss_update_called) updateSolar();
518 if (ss_central_body == 4)
523 else getRaDec (ss_pearth, ra, decl);
528 if (!ss_update_called) updateSolar();
529 if (ss_central_body == 5)
534 else getRaDec (ss_pmars, ra, decl);
539 if (!ss_update_called) updateSolar();
540 if (ss_central_body == 6)
545 else getRaDec (ss_pjup, ra, decl);
550 if (!ss_update_called) updateSolar();
551 if (ss_central_body == 7)
556 else getRaDec (ss_psat, ra, decl);
561 if (!ss_update_called) updateSolar();
562 if (ss_central_body == 8)
567 else getRaDec (ss_pura, ra, decl);
572 if (!ss_update_called) updateSolar();
573 if (ss_central_body == 9)
578 else getRaDec (ss_pnept, ra, decl);
586 if (ss_central_body == 0)
593 if (!ss_update_called) updateSolar();
595 pdiam = 0.00930495 /
abs(ss_rs);
596 pmag = -26.7 + 5.0 * log10(
abs(ss_rs));
603 double ia, cp, cs, ps;
605 if (ss_central_body == 2)
614 if (!ss_update_called) updateSolar();
618 ps =
abs(ss_rs - ss_pmer);
620 pdiam = 3.24831e-05 / cp;
623 if (ia == 0) ia = 1.0;
625 ia = (cp*cp + ps*ps - cs*cs) / ia;
627 pphase = 0.5 * (1.0 + ia);
631 pmag = -0.36 + 3.80*ia - 2.73*ia*ia + 2.00*ia*ia*ia;
632 pmag = pmag + 5.0 * log10(ps * cp);
639 double ia, cp, cs, ps;
641 if (ss_central_body == 3)
650 if (!ss_update_called) updateSolar();
654 ps =
abs(ss_rs - ss_pven);
656 pdiam = 8.09089e-05 / cp;
659 if (ia == 0) ia = 1.0;
661 ia = (cp*cp + ps*ps - cs*cs) / ia;
663 pphase = 0.5 * (1.0 + ia);
667 pmag = -4.29 + 0.09*ia + 2.39*ia*ia - 0.65*ia*ia*ia;
668 pmag = pmag + 5.0 * log10(ps * cp);
675 double ia, cp, cs, ps;
677 if (ss_central_body == 4)
686 if (!ss_update_called) updateSolar();
690 ps =
abs(ss_rs - ss_pearth);
692 pdiam = 8.52705e-05 / cp;
695 if (ia == 0) ia = 1.0;
697 ia = (cp*cp + ps*ps - cs*cs) / ia;
699 pphase = 0.5 * (1.0 + ia);
703 pmag = -4.0 + 0.09*ia + 2.39*ia*ia - 0.65*ia*ia*ia;
704 pmag = pmag + 5.0 * log10(ps * cp);
711 double ia, cp, cs, ps;
713 if (ss_central_body == 5)
722 if (!ss_update_called) updateSolar();
726 ps =
abs(ss_rs - ss_pmars);
728 pdiam = 4.54178e-05 / cp;
731 if (ia == 0) ia = 1.0;
733 ia = (cp*cp + ps*ps - cs*cs) / ia;
735 pphase = 0.5 * (1.0 + ia);
738 pmag = -1.52 + 0.016*ia;
739 pmag = pmag + 5.0 * log10(ps * cp);
746 double ia, cp, cs, ps;
748 if (ss_central_body == 6)
757 if (!ss_update_called) updateSolar();
761 ps =
abs(ss_rs - ss_pjup);
763 pdiam = 0.000955789 / cp;
766 if (ia == 0) ia = 1.0;
768 ia = (cp*cp + ps*ps - cs*cs) / ia;
770 pphase = 0.5 * (1.0 + ia);
773 pmag = -9.25 + 0.005*ia;
774 pmag = pmag + 5.0 * log10(ps * cp);
781 double ia, cp, cs, ps;
783 if (ss_central_body == 7)
792 if (!ss_update_called) updateSolar();
796 ps =
abs(ss_rs - ss_psat);
798 pdiam = 0.000805733 / cp;
801 if (ia == 0) ia = 1.0;
803 ia = (cp*cp + ps*ps - cs*cs) / ia;
805 pphase = 0.5 * (1.0 + ia);
810 pmag = pmag + 5.0 * log10(ps * cp);
817 double ia, cp, cs, ps;
819 if (ss_central_body == 8)
828 if (!ss_update_called) updateSolar();
832 ps =
abs(ss_rs - ss_pura);
834 pdiam = 0.000341703 / cp;
837 if (ia == 0) ia = 1.0;
839 ia = (cp*cp + ps*ps - cs*cs) / ia;
841 pphase = 0.5 * (1.0 + ia);
844 pmag = -7.19 + 0.0228*ia;
845 pmag = pmag + 5.0 * log10(ps * cp);
852 double ia, cp, cs, ps;
854 if (ss_central_body == 9)
863 if (!ss_update_called) updateSolar();
867 ps =
abs(ss_rs - ss_pnept);
869 pdiam = 0.000331074 / cp;
872 if (ia == 0) ia = 1.0;
874 ia = (cp*cp + ps*ps - cs*cs) / ia;
876 pphase = 0.5 * (1.0 + ia);
879 pmag = pmag + 5.0 * log10(ps * cp);
886 if (ss_central_body == 1)
return 0;
887 if (!ss_update_called) updateSolar();
889 return 2.32356e-05 /
abs(ss_rm);
895 if (!ss_moon_called) MoonDetails();
897 lblon = ss_moon_lblon;
898 lblat = ss_moon_lblat;
899 termt = ss_moon_term;
905 if (!ss_moon_called) MoonDetails();
907 phase = ss_moon_phase;
908 ildisk = ss_moon_ildisk;
912 Vec3 SolarSystem::SnPos (
double &ep2,
double &els)
const
922 t = ss_time + ss_del_tdut/86400.0;
937 Vec3 SolarSystem::MnPos (
double &ep2,
double &elm)
const
947 t = ss_time + ss_del_tdut/86400.0;
961 void SolarSystem::MoonLibr (
double jd,
Vec3 rm,
Vec3 sn,
962 double &lblon,
double &lblat,
double &termt)
970 double t, gam, gmp, l, omg, mln;
971 double a, b, c, ic, gn, gp, omp;
972 double const degrad =
M_PI / 180.0;
976 t = (jd - 15019.5) / 36525.0;
977 gam = 281.2208333 + ((0.33333333e-5*t + 0.45277778e-3)*t + 1.7191750)*t;
978 gmp = 334.3295556 + ((-0.125e-4*t - 0.10325e-1)*t + 4069.0340333)*t;
979 l = 279.6966778 + (0.3025e-3*t + 36000.768925)*t;
980 omg = 259.1832750 + ((0.22222222e-5*t + 0.20777778e-2)*t - 1934.1420083)*t;
981 b = 23.45229444 + ((0.50277778e-6*t -0.16388889e-5)*t - 0.130125e-1)*t;
982 mln = 270.4341639 + ((0.1888889e-5*t -0.11333e-2)*t + 481267.8831417)*t;
984 gn = (l - gam)*degrad;
985 gp = (mln - gmp)*degrad;
986 omp = (gmp - omg)*degrad;
987 a = -107.0*cos(gp) + 37.0*cos(gp+2.0*omp) -11.0*cos(2.0*(gp+omp));
988 a = a*0.000277778*degrad + ic;
989 c = (-109.0*sin(gp) + 37.0*sin(gp+2.0*omp) - 11.0*sin(2.0*(gp+omp)))/sin(ic);
990 c = (c*0.000277778 + omg)*degrad;
991 gn = -12.0*sin(gp) + 59.0*sin(gn) + 18.0*sin(2.0*omp);
992 gn = gn*0.000277778*
degrad;
995 gam = cos(a)*cos(b) + sin(a)*sin(b)*cos(c);
997 if(gmp > 1.0) gmp = 0;
998 else gmp = sqrt(1.0 - gmp);
999 gam = atan23(gmp,gam);
1000 t = cos(a)*sin(b) - sin(a)*sin(b)*cos(c);
1004 t = sin(a)*cos(b) - cos(a)*sin(b)*cos(c);
1007 c = a + mln*degrad + gn - c;
1025 if (lblon > 180.0) lblon = lblon - 360.0;
1031 if (termt > 180.0) termt = termt - 360.0;
1035 if (termt > a) termt -= 180.0;
1038 if (termt < b) termt += 180;
1042 void SolarSystem::MoonDetails ()
1047 double jd, t, lblon, lblat, termt, mnmag;
1050 double const degrad =
M_PI / 180.0;
1051 double const ae = 23454.77992;
1056 if (ss_central_body != 4)
1068 if (!ss_update_called) updateSolar();
1069 ss_moon_called =
true;
1073 rs = SnPos (ep2, els);
1077 rm = MnPos (ep2, elm);
1080 MoonLibr(jd, rm, s, lblon, lblat, termt);
1083 mnmag =
abs(rm) / 23454.77992;
1091 if (fabs(dist) <= 1.0) dist = acos(dist) /
degrad;
1093 if (dist <= 61.0) dist = -3.475256769e-2 + 2.75256769e-2*dist;
1096 if (dist < 115.0) dist = 0.6962632 * exp(1.48709985e-2*dist);
1099 if (dist < 155.0) dist = 0.6531068 * exp(1.49213e-2*dist);
1100 else dist = 1.00779e-9 * pow (dist, 4.486359);
1103 if (mnmag <= 0) mnmag = 1e-30;
1104 mnmag = 0.23 + 5.0*log10(mnmag) + dist;
1110 t = (1.0 -
dot(rs,rm)) * 0.5;
1112 if (ps < 0) ps += 2*
M_PI;
1113 ps = ps / (2.0*
M_PI);
1117 ss_moon_lblon = lblon;
1118 ss_moon_lblat = lblat;
1119 ss_moon_mag = mnmag;
1120 ss_moon_term = termt;
1123 void SolarSystem::getConstSun()
1134 ss_GM = 1.32712438e+20;
1137 void SolarSystem::getConstMoon()
1147 ss_Wd = 13.17635898;
1148 ss_GM = 4.90279412e+12;
1151 void SolarSystem::getConstMercury()
1162 ss_GM = 2.20320802e+13;
1165 void SolarSystem::getConstVenus()
1176 ss_GM = 3.24858761e+14;
1179 void SolarSystem::getConstEarth()
1183 ss_flat = 0.00335364;
1189 ss_Wd = 359.017045833334;
1190 ss_GM = 3.986005e+14;
1193 void SolarSystem::getConstMars()
1197 ss_flat = 0.00647630;
1203 ss_Wd = 350.8919830;
1204 ss_GM = 4.282828596416e+13;
1207 void SolarSystem::getConstJupiter()
1218 ss_GM = 1.2671199164e+17;
1221 void SolarSystem::getConstSaturn()
1231 ss_Wd = 810.7939024;
1232 ss_GM = 3.7934096899e+16;
1235 void SolarSystem::getConstUranus()
1246 ss_GM = 5.8031587739e+15;
1249 void SolarSystem::getConstNeptune()
1260 ss_GM = 6.8713077560e+15;
1263 Mat3 SolarSystem::getSelenographic ()
const
1268 double t, gam, gmp, l, omg, mln;
1269 double a, b, c, ic, gn, gp, omp;
1270 double const degrad =
M_PI / 180.0;
1273 t = (ss_time - 15019.5) / 36525.0;
1274 gam = 281.2208333 + ((0.33333333e-5*t + 0.45277778e-3)*t + 1.7191750)*t;
1275 gmp = 334.3295556 + ((-0.125e-4*t - 0.10325e-1)*t + 4069.0340333)*t;
1276 l = 279.6966778 + (0.3025e-3*t + 36000.768925)*t;
1277 omg = 259.1832750 + ((0.22222222e-5*t + 0.20777778e-2)*t - 1934.1420083)*t;
1278 b = 23.45229444 + ((0.50277778e-6*t -0.16388889e-5)*t - 0.130125e-1)*t;
1279 mln = 270.4341639 + ((0.1888889e-5*t -0.11333e-2)*t + 481267.8831417)*t;
1281 gn = (l - gam)*degrad;
1282 gp = (mln - gmp)*degrad;
1283 omp = (gmp - omg)*degrad;
1284 a = -107.0*cos(gp) + 37.0*cos(gp+2.0*omp) -11.0*cos(2.0*(gp+omp));
1285 a = a*0.000277778*degrad + ic;
1286 c = (-109.0*sin(gp) + 37.0*sin(gp+2.0*omp) - 11.0*sin(2.0*(gp+omp)))/sin(ic);
1287 c = (c*0.000277778 + omg)*degrad;
1288 gn = -12.0*sin(gp) + 59.0*sin(gn) + 18.0*sin(2.0*omp);
1289 gn = gn*0.000277778*
degrad;
1292 gam = cos(a)*cos(b) + sin(a)*sin(b)*cos(c);
1294 if(gmp > 1.0) gmp = 0;
1295 else gmp = sqrt(1.0 - gmp);
1296 gam = atan23(gmp,gam);
1297 t = cos(a)*sin(b) - sin(a)*sin(b)*cos(c);
1301 t = sin(a)*cos(b) - cos(a)*sin(b)*cos(c);
1304 c = a + mln*degrad + gn - c;
1313 t =
julcent(ss_time + ss_del_tdut/86400.0);
1320 void SolarSystem::getPlanMat()
1327 ss_planmat_called =
true;
1329 dt = ss_time + ss_del_tdut/86400.0;
1331 if (ss_central_body == 1) ss_planmat = getSelenographic();
1334 if (ss_central_body == 4)
1337 m1 =
nutmat(dt, ag,
false);
1343 ag = (ss_axl0 + ss_axl1 * dt) *
M_PI / 180.0;
1345 ag = (ss_axb0 + ss_axb1 * dt) *
M_PI / 180.0;
1348 m1 =
zrot((ss_W + ss_Wd*(ss_time+ss_del_tdut/86400.0-51544.5))*(
M_PI/180.0));
1350 ss_planmat = m1 * mx;
1353 if (ss_epoch != 51544.5)
1355 if (ss_epoch == 0) ag = dt;
1358 ss_planmat = ss_planmat * mx;
1371 if (!ss_update_called) updateSolar();
1372 if (!ss_planmat_called) getPlanMat();
1374 dra = 15.0*DmsDegF(ra)*
degrad;
1375 ddec = DmsDegF(decl)*
degrad;
1382 ru =
mxvct (ss_planmat, ru);
1393 double f, re, b1, b2, b3, c, sh, s, mp2;
1396 ru = getPlanetocentric (ra, decl);
1406 if (ss_lng > mp2) ss_lng -= mp2;
1407 if (ss_lng < -
M_PI) ss_lng += mp2;
1408 if (ss_lng >
M_PI) ss_lng -= mp2;
1415 ss_height =
abs(ru) - re;
1420 s = ru[0]*ru[0] + ru[1]*ru[1];
1427 if (b3 < 1e-5) b3 = sin(ss_lat);
1429 b2 = re / sqrt(1.0 - c*b3*b3);
1434 ss_lat = atan23(sh,sqrt(s));
1435 sh = sqrt(s+sh*sh) - b2;
1441 ss_lat = ss_lat * 180.0 /
M_PI;
1442 ss_lng = ss_lng * 180.0 /
M_PI;
1453 ss_kepler_stored =
true;
1454 ss_kepler_called =
false;
1470 ss_kepler_stored =
true;
1471 ss_kepler_called =
false;
1487 const double gs = 2.959122083e-4;
1489 int day, month, year;
1495 if (!ss_kepler_stored)
1503 if (!ss_update_called) updateSolar();
1505 ss_kepler_called =
true;
1509 dt = ss_time + ss_del_tdut/86400.0;
1511 kepler (gs, ss_t0, dt, ss_m0, ss_a, ss_ecc, ss_ran, ss_aper, ss_inc, r1, v1);
1514 if (ss_epoch != 0) eps2 =
julcent(ss_epoch);
1518 if (yr == 0) b = eps2;
1522 b = 12.0 * (yr - double(year));
1526 b =
mjd(day, month, year, 0);
1531 ss_comet =
mxvct(pmx,r1);
1534 ss_comet =
eclequ(eps2, ss_comet);
1540 pmx =
nutmat(dt, eps2,
false);
1541 ss_comet =
mxvct(pmx,ss_comet);
1545 ss_comet = ss_comet + ss_rs;
1547 getRaDec (ss_comet, ra, decl);
1556 if (!ss_kepler_stored)
return 0;
1558 if (!ss_kepler_called) getOrbitPosition (ra, decl);
1560 return abs(ss_comet);
1569 if (!ss_kepler_stored)
return 0;
1571 if (!ss_kepler_called) getOrbitPosition (ra, decl);
1573 return g + 5.0 * log10(
abs(ss_comet)) + k * log10(
abs(ss_comet - ss_rs));
1581 double ra, decl, s, t;
1583 if (!ss_kepler_stored)
return 0;
1585 if (!ss_kepler_called) getOrbitPosition (ra, decl);
1588 decl =
abs(ss_comet - ss_rs);
1589 t = 2.0 * ra * decl;
1592 if (t > 0) t = (ra*ra + decl*decl - s*s) / t;
1598 ra = h + 5.0 * log10(ra*decl) + g * t;
double getAsteroidMag(double h, double g)
void getUranus(double &ra, double &decl)
void setCentralBody(const char *pname)
void getDatefromMJD(double mjd, int &year, int &month, int &day, int &hour, int &min, double &sec) const
Vec3 eclequ(double t, Vec3 &r1)
void getOrbitPosition(double &ra, double &decl)
void getPhysSun(double &pdiam, double &pmag)
void getJupiter(double &ra, double &decl)
void setTimezone(double d)
double getCometMag(double g, double k)
double ddd(int d, int m, double s)
double lsidtim(double jd, double lambda, double ep2)
void getLunarLibration(double &lblon, double &lblat, double &termt)
void getNeptune(double &ra, double &decl)
static double DmsDegF(double h)
static double DegFDms(double h)
Vec3 carpol(const Vec3 &c)
Vec3 vnorm(const Vec3 &c)
Mat3 pmatequ(double t1, double t2)
void getLunarPhase(double &phase, double &ildisk, double &amag)
void getPhysEarth(double &pdiam, double &pmag, double &pphase)
void caldat(double mjd, int &day, int &month, int &year, double &hour)
void putEllipticElements(double t0, double a, double m0, double ecc, double ran, double aper, double inc, double eclep)
Mat3 pmatecl(double t1, double t2)
double abs(const Vec3 &c)
Mat3 nutmat(double t, double &ep2, bool hpr)
void kepler(double gm, double t0, double t, double m0, double a, double ecc, double ran, double aper, double inc, Vec3 &r1, Vec3 &v1)
void getVenus(double &ra, double &decl)
void getPhysUranus(double &pdiam, double &pmag, double &pphase)
void getSun(double &ra, double &decl)
void dms(double dd, int &d, int &m, double &s)
void getPhysVenus(double &pdiam, double &pmag, double &pphase)
double mjd(int day, int month, int year, double hour)
void getEarth(double &ra, double &decl)
void getMercury(double &ra, double &decl)
void getSaturn(double &ra, double &decl)
void putOrbitElements(double t0, double pdist, double ecc, double ran, double aper, double inc, double eclep)
void getMoon(double &ra, double &decl)
void getPlanetographic(double ra, double decl, double &lng, double &lat)
void getPhysSaturn(double &pdiam, double &pmag, double &pphase)
void getPhysJupiter(double &pdiam, double &pmag, double &pphase)
double julcent(double mjuld)
Vec3 aberrat(double t, Vec3 &ve)
void setDeltaTAI_UTC(double d)
void getPhysMars(double &pdiam, double &pmag, double &pphase)
double getMJD(int year, int month, int day, int hour, int min, double sec) const
double dot(const Vec3 &c1, const Vec3 &c2)
void getPhysNeptune(double &pdiam, double &pmag, double &pphase)
Vec3 polcar(const Vec3 &c)
Vec3 mxvct(const Mat3 &m1, Vec3 &v1)
Vec3 getPlanetocentric(double ra, double decl)
void setNutation(bool nut)
void getMars(double &ra, double &decl)
void getPhysMercury(double &pdiam, double &pmag, double &pphase)