home *** CD-ROM | disk | FTP | other *** search
- /* compute the position of the m`planets and return the epli value */
- #include <stdio.h>
- #include <math.h>
-
- /* crude magnitudes of planets (x100) for output filtering by brightness */
-
- #define MAGSOL -9.9
- #define MAGMER -1.50
- #define MAGVEN -4.0
- #define MAGMAR -1.00
- #define MAGJUP -2.00
- #define MAGSAT 1.00
- #define MAGURA 5.90
- #define MAGNEP 8.00
-
- extern double rad;
- double htod(), atof(), kepler(), truean();
- double longi(), lati(), poly(), aint(), range();
- int cls(), helio_trans(), geo_trans(), speak();
-
- double
- planet_pos(jd, T0)
- double jd, T0;
- {
- double l, a, e, i, w1, w2, M, M0, M1, M2, M4, M5, M6, M7, M8;
- double a0, a1, a2, a3, RA, DEC;
- double ECC, nu, r, u, ll, b, lonpert, radpert;
- double esun, Lsun, Cen, Stheta, Snu, Sr;
- double N, D, epli, thapp, omeg;
- double nu2, P, Q, S, V, W, ze, l1pert, epert, w1pert, apert;
- double psi, H, G, eta, th;
-
-
- /* Calculate orbital elements for Mercury */
- a0 = 178.179078;
- a1 = 149474.07078;
- a2 = 0.0003011;
- a3 = 0.0;
- l = poly(a0, a1, a2, a3, T0);
- l = range(l);
- a = 0.3870986;
- a0 = 0.20561421;
- a1 = 0.00002046;
- a2 = -0.000000030;
- e = poly(a0, a1, a2, a3, T0);
- a0 = 7.002881;
- a1 = 0.0018608;
- a2 = -0.0000183;
- i = poly(a0, a1, a2, a3, T0);
- a0 = 28.753753;
- a1 = 0.3702806;
- a2 = 0.0001208;
- w1 = poly(a0, a1, a2, a3, T0);
- w1 = range(w1);
- a0 = 47.145944;
- a1 = 1.1852083;
- a2 = 0.0001739;
- w2 = poly(a0, a1, a2, a3, T0);
- w2 = range(w2);
- M1 = 102.27938 + 149472.51529 * T0 + 0.000007 * T0 * T0;
- M1 = range(M1);
-
- /* solving Kepler find the eccentric anomaly ECC */
-
- ECC = kepler(e, M1);
- nu = truean(e, ECC);
- r = a * (1.0 - e * cos(ECC * rad));
- u = l + nu - M1 - w2;
- ll = longi(w2, i, u);
- b = lati(u, i);
-
- /* Now make corrections due to perturbations */
- M2 = 212.60322 + 58517.80387 * T0 + 0.001286 * T0 * T0;
- M2 = range(M2);
- M4 = 319.51913 + 19139.85475 * T0 + 0.000181 * T0 * T0;
- M4 = range(M4);
- M5 = 225.32833 + 3034.69202 * T0 - 0.000722 * T0 * T0;
- M5 = range(M5);
- M6 = 175.46622 + 1221.55147 * T0 - 0.000502 * T0 * T0;
- M6 = range(M6);
- lonpert = 0.00204 * cos((5 * M2 - 2 * M1 + 12.220) * rad)
- + 0.00103 * cos((2 * M2 - M1 - 160.692) * rad)
- + 0.00091 * cos((2 * M5 - M1 - 37.003) * rad)
- + 0.00078 * cos((5 * M2 - 3 * M1 + 10.137) * rad);
-
- radpert = 0.000007525 * cos((2 * M5 - M1 + 53.013) * rad)
- + 0.000006802 * cos((5 * M2 - 3 * M1 - 259.918) * rad)
- + 0.000005457 * cos((2 * M2 - 2 * M1 - 71.188) * rad)
- + 0.000003569 * cos((5 * M2 - M1 - 77.75) * rad);
-
- r = r + radpert;
- ll = ll + lonpert;
-
- /* Now find the Longi and radius vector of the sun */
-
- M = 358.47583 + 35999.04975 * T0 - 0.000150 * T0 * T0
- -0.0000033 * T0 * T0 * T0;
- M = range(M);
- esun = 0.01675104 - 0.0000418 * T0 - 0.000000126 * T0 * T0;
- Lsun = 279.69668 + 36000.76892 * T0 + 0.0003025 * T0 * T0;
- Lsun = range(Lsun);
- Cen = (1.919460 - 0.004789 * T0 - 0.000014 * T0 * T0) * sin(M * rad)
- + (0.020094 - 0.000100 * T0) * sin(2 * M * rad)
- + 0.000293 * sin(3 * M * rad);
-
- Stheta = Lsun + Cen;
- Stheta = range(Stheta);
- Snu = M + Cen;
- Sr = 1.0000002 * (1.0 - esun * esun) / (1.0 + esun * cos(Snu * rad));
-
- omeg = 259.18 - 1934.142 * T0;
- thapp = Stheta - 0.00569 - 0.00479 * sin(omeg * rad);
- epli = 23.452294 - 0.0130125 * T0
- -0.00000164 * T0 * T0 + 0.000000503 * T0 * T0 * T0;
-
- N = cos(epli * rad) * sin(thapp * rad);
- D = cos(thapp * rad);
- RA = atan2(N, D) / rad;
- DEC = asin(sin(epli * rad) * sin(thapp * rad)) / rad;
- speak(RA, DEC, Sr, MAGSOL, "PS", "Sol");
- /* tansformation of coordinates on Mercury and output */
- helio_trans(r, b, ll, Stheta, Sr, epli, MAGMER, "PM", "Mercury");
-
- /* Now start on Venus */
- a0 = 342.767053;
- a1 = 58519.21191;
- a2 = 0.0003097;
- a3 = 0.0;
- l = poly(a0, a1, a2, a3, T0);
- l = range(l);
- a = 0.7233316;
- a0 = 0.00682069;
- a1 = -0.00004774;
- a2 = 0.000000091;
- e = poly(a0, a1, a2, a3, T0);
- a0 = 3.393631;
- a1 = 0.0010058;
- a2 = -0.0000010;
- i = poly(a0, a1, a2, a3, T0);
- a0 = 54.384186;
- a1 = 0.5081861;
- a2 = -0.0013864;
- w1 = poly(a0, a1, a2, a3, T0);
- w1 = range(w1);
- a0 = 75.779647;
- a1 = 0.8998500;
- a2 = 0.0004100;
- w2 = poly(a0, a1, a2, a3, T0);
- w2 = range(w2);
- /* Venus has a long period pert that needs to be added before Kelper */
- lonpert = 0.00077 * sin((237.24 + 150.27 * T0) * rad);
- l = l + lonpert;
- M0 = M2 + lonpert;
- ECC = kepler(e, M0);
- nu = truean(e, ECC);
- r = a * (1.0 - e * cos(ECC * rad));
- u = l + nu - M0 - w2;
- ll = longi(w2, i, u);
- b = lati(u, i);
-
- /* now Venus perturbations */
-
- lonpert = 0.00313 * cos((2 * M - 2 * M2 - 148.225) * rad)
- + 0.00198 * cos((3 * M - 3 * M2 + 2.565) * rad)
- + 0.00136 * cos((M - M2 - 119.107) * rad)
- + 0.00096 * cos((3 * M - 2 * M2 - 135.912) * rad)
- + 0.00082 * cos((M5 - M2 - 208.087) * rad);
- ll = ll + lonpert;
-
- radpert = 0.000022501 * cos((2 * M - 2 * M2 - 58.208) * rad)
- + 0.000019045 * cos((3 * M - 3 * M2 + 92.577) * rad)
- + 0.000006887 * cos((M5 - M2 - 118.090) * rad)
- + 0.000005172 * cos((M - M2 - 29.110) * rad)
- + 0.000003620 * cos((5 * M - 4 * M2 - 104.208) * rad)
- + 0.000003283 * cos((4 * M - 4 * M2 + 63.513) * rad)
- + 0.000003074 * cos((2 * M5 - 2 * M2 - 55.167) * rad);
- r = r + radpert;
- helio_trans(r, b, ll, Stheta, Sr, epli, MAGVEN, "PV", "Venus");
-
- /* Now start the planet Mars */
- a0 = 293.737334;
- a1 = 19141.69551;
- a2 = 0.0003107;
- a3 = 0.0;
- l = poly(a0, a1, a2, a3, T0);
- l = range(l);
- a = 1.5236883;
- a0 = 0.09331290;
- a1 = 0.000092064;
- a2 = -0.000000077;
- e = poly(a0, a1, a2, a3, T0);
- a0 = 1.850333;
- a1 = -0.0006750;
- a2 = 0.0000126;
- i = poly(a0, a1, a2, a3, T0);
- a0 = 285.431761;
- a1 = 1.0697667;
- a2 = 0.0001313;
- a3 = 0.00000414;
- w1 = poly(a0, a1, a2, a3, T0);
- w1 = range(w1);
- a0 = 48.786442;
- a1 = 0.7709917;
- a2 = -0.0000014;
- a3 = -0.00000533;
- w2 = poly(a0, a1, a2, a3, T0);
- w2 = range(w2);
-
- /* Mars has a long period perturbation */
- lonpert = -0.01133 * sin((3 * M5 - 8 * M4 + 4 * M) * rad)
- -0.00933 * cos((3 * M5 - 8 * M4 + 4 * M) * rad);
- l = l + lonpert;
- M0 = M4 + lonpert;
- ECC = kepler(e, M0);
- nu = truean(e, ECC);
- r = a * (1.0 - e * cos(ECC * rad));
- u = l + nu - M0 - w2;
- ll = longi(w2, i, u);
- b = lati(u, i);
-
- /* Now Mars Perturbations */
- lonpert = 0.00705 * cos((M5 - M4 - 48.958) * rad)
- + 0.00607 * cos((2 * M5 - M4 - 188.350) * rad)
- + 0.00445 * cos((2 * M5 - 2 * M4 - 191.897) * rad)
- + 0.00388 * cos((M - 2 * M4 + 20.495) * rad)
- + 0.00238 * cos((M - M4 + 35.097) * rad)
- + 0.00204 * cos((2 * M - 3 * M4 + 158.638) * rad)
- + 0.00177 * cos((3 * M4 - M2 - 57.602) * rad)
- + 0.00136 * cos((2 * M - 4 * M4 + 154.093) * rad)
- + 0.00104 * cos((M5 + 17.618) * rad);
- ll = ll + lonpert;
-
- radpert = 0.000053227 * cos((M5 - M4 + 41.1306) * rad)
- + 0.000050989 * cos((2 * M5 - 2 * M4 - 101.9847) * rad)
- + 0.000038278 * cos((2 * M5 - M4 - 98.3292) * rad)
- + 0.000015996 * cos((M - M4 - 55.555) * rad)
- + 0.000014764 * cos((2 * M - 3 * M4 + 68.622) * rad)
- + 0.000008966 * cos((M5 - 2 * M4 + 43.615) * rad);
- /*
- * broken into two pieces for wimpy C compilers
- */
- radpert += 0.000007914 * cos((3 * M5 - 2 * M4 - 139.737) * rad)
- + 0.000007004 * cos((2 * M5 - 3 * M4 - 102.888) * rad)
- + 0.000006620 * cos((M - 2 * M4 + 113.202) * rad)
- + 0.000004930 * cos((3 * M5 - 3 * M4 - 76.243) * rad)
- + 0.000004693 * cos((3 * M - 5 * M4 + 190.603) * rad)
- + 0.000004571 * cos((2 * M - 4 * M4 + 244.702) * rad)
- + 0.000004409 * cos((3 * M5 - M4 - 115.828) * rad);
- r = r + radpert;
- helio_trans(r, b, ll, Stheta, Sr, epli, MAGMAR, "Pm", "Mars");
-
- /* Now start Jupiter */
- a0 = 238.049257;
- a1 = 3036.301986;
- a2 = 0.0003347;
- a3 = -0.00000165;
- l = poly(a0, a1, a2, a3, T0);
- l = range(l);
- a = 5.202561;
- a0 = 0.04833475;
- a1 = 0.000164180;
- a2 = -0.0000004676;
- a3 = -0.0000000017;
- e = poly(a0, a1, a2, a3, T0);
- a0 = 1.308736;
- a1 = -0.0056961;
- a2 = 0.0000039;
- a3 = 0.0;
- i = poly(a0, a1, a2, a3, T0);
- a0 = 273.277558;
- a1 = 0.5994317;
- a2 = 0.00070405;
- a3 = 0.00000508;
- w1 = poly(a0, a1, a2, a3, T0);
- w1 = range(w1);
- a0 = 99.443414;
- a1 = 1.0105300;
- a2 = 0.00035222;
- a3 = -0.00000851;
- w2 = poly(a0, a1, a2, a3, T0);
- w2 = range(w2);
- /*
- * Now start perturbation calclations
- */
-
- nu2 = T0 / 5.0 + 0.1;
- P = 237.47555 + 3034.9061 * T0;
- Q = 265.91650 + 1222.1139 * T0;
- S = 243.51721 + 428.4677 * T0;
- V = 5.0 * Q - 2.0 * P;
- W = 2.0 * P - 6.0 * Q + 3.0 * S;
- ze = Q - P;
- psi = S - Q;
-
- P = range(P) * rad;
- Q = range(Q) * rad;
- S = range(S) * rad;
- V = range(V) * rad;
- W = range(W) * rad;
- ze = range(ze) * rad;
- psi = range(psi) * rad;
-
- l1pert = (0.331364 - 0.010281 * nu2 - 0.004692 * nu2 * nu2) * sin(V)
- + (0.003228 - 0.064436 * nu2 + 0.002075 * nu2 * nu2) * cos(V)
- -(0.003083 + 0.000275 * nu2 - 0.000489 * nu2 * nu2) * sin(2 * V)
- + 0.002472 * sin(W)
- + 0.013619 * sin(ze)
- + 0.018472 * sin(2 * ze)
- + 0.006717 * sin(3 * ze)
- + 0.002775 * sin(4 * ze)
- + (0.007275 - 0.001253 * nu2) * sin(ze) * sin(Q)
- + 0.006417 * sin(2 * ze) * sin(Q)
- + 0.002439 * sin(3 * ze) * sin(Q);
-
- l1pert = l1pert - (0.033839 + 0.001125 * nu2) * cos(ze) * sin(Q)
- -0.003767 * cos(2 * ze) * sin(Q)
- -(0.035681 + 0.001208 * nu2) * sin(ze) * cos(Q)
- -0.004261 * sin(2 * ze) * cos(Q)
- + 0.002178 * cos(Q)
- + (-0.006333 + 0.001161 * nu2) * cos(ze) * cos(Q)
- -0.006675 * cos(2 * ze) * cos(Q)
- -0.002664 * cos(3 * ze) * cos(Q)
- -0.002572 * sin(ze) * sin(2 * Q)
- -0.003567 * sin(2 * ze) * sin(2 * Q)
- + 0.002094 * cos(ze) * cos(2 * Q)
- + 0.003342 * cos(2 * ze) * cos(2 * Q);
-
- epert = (.0003606 + .0000130 * nu2 - .0000043 * nu2 * nu2) * sin(V)
- + (.0001289 - .0000580 * nu2) * cos(V)
- -.0006764 * sin(ze) * sin(Q)
- -.0001110 * sin(2 * ze) * sin(Q)
- -.0000224 * sin(3 * ze) * sin(Q)
- -.0000204 * sin(Q)
- + (.0001284 + .0000116 * nu2) * cos(ze) * sin(Q)
- + .0000188 * cos(2 * ze) * sin(Q)
- + (.0001460 + .0000130 * nu2) * sin(ze) * cos(Q)
- + .0000224 * sin(2 * ze) * cos(Q)
- -.0000817 * cos(Q);
-
- epert = epert + .0006074 * cos(ze) * cos(Q)
- + .0000992 * cos(2 * ze) * cos(Q)
- + .0000508 * cos(3 * ze) * cos(Q)
- + .0000230 * cos(4 * ze) * cos(Q)
- + .0000108 * cos(5 * ze) * cos(Q)
- -(.0000956 + .0000073 * nu2) * sin(ze) * sin(2 * Q)
- + .0000448 * sin(2 * ze) * sin(2 * Q)
- + .0000137 * sin(3 * ze) * sin(2 * Q)
- + (-.0000997 + .0000108 * nu2) * cos(ze) * sin(2 * Q)
- + .0000480 * cos(2 * ze) * sin(2 * Q);
-
- epert = epert + .0000148 * cos(3 * ze) * sin(2 * Q)
- + (-.0000956 + .0000099 * nu2) * sin(ze) * cos(2 * Q)
- + .0000490 * sin(2 * ze) * cos(2 * Q)
- + .0000158 * sin(3 * ze) * cos(2 * Q)
- + .0000179 * cos(2 * Q)
- + (.0001024 + .0000075 * nu2) * cos(ze) * cos(2 * Q)
- -.0000437 * cos(2 * ze) * cos(2 * Q)
- -.0000132 * cos(3 * ze) * cos(2 * Q);
-
- w1pert = (0.007192 - 0.003147 * nu2) * sin(V)
- + (-0.020428 - 0.000675 * nu2 + 0.000197 * nu2 * nu2) * cos(V)
- + (0.007269 + 0.000672 * nu2) * sin(ze) * sin(Q)
- -0.004344 * sin(Q)
- + 0.034036 * cos(ze) * sin(Q)
- + 0.005614 * cos(2 * ze) * sin(Q)
- + 0.002964 * cos(3 * ze) * sin(Q)
- + 0.037761 * sin(ze) * cos(Q);
-
- w1pert = w1pert
- + 0.006158 * sin(2 * ze) * cos(Q)
- -0.006603 * cos(ze) * cos(Q)
- -0.005356 * sin(ze) * sin(2 * Q)
- + 0.002722 * sin(2 * ze) * sin(2 * Q)
- + 0.004483 * cos(ze) * sin(2 * Q)
- -0.002642 * cos(2 * ze) * sin(2 * Q)
- + 0.004403 * sin(ze) * cos(2 * Q)
- -0.002536 * sin(2 * ze) * cos(2 * Q)
- + 0.005547 * cos(ze) * cos(2 * Q)
- -0.002689 * cos(2 * ze) * cos(2 * Q);
-
- lonpert = l1pert - (w1pert / e);
- l = l + l1pert;
- M0 = M5 + lonpert;
- e = e + epert;
- w1 = w1 + w1pert;
-
- apert = -.000263 * cos(V)
- + .000205 * cos(ze)
- + .000693 * cos(2 * ze)
- + .000312 * cos(3 * ze)
- + .000147 * cos(4 * ze)
- + .000299 * sin(ze) * sin(Q)
- + .000181 * cos(2 * ze) * sin(Q)
- + .000204 * sin(2 * ze) * cos(Q)
- + .000111 * sin(3 * ze) * cos(Q)
- -.000337 * cos(ze) * cos(Q)
- -.000111 * cos(2 * ze) * cos(Q);
-
- a = a + apert;
- ECC = kepler(e, M0);
- nu = truean(e, ECC);
- r = a * (1.0 - e * cos(ECC * rad));
- u = l + nu - M0 - w2;
- ll = longi(w2, i, u);
- b = lati(u, i);
-
- helio_trans(r, b, ll, Stheta, Sr, epli, MAGJUP, "PJ", "Jupiter");
-
- /* Now start Saturn */
-
- a0 = 266.564377;
- a1 = 1223.509884;
- a2 = 0.0003245;
- a3 = -0.0000058;
- l = poly(a0, a1, a2, a3, T0);
- l = range(l);
- a = 9.554747;
- a0 = 0.05589232;
- a1 = -0.00034550;
- a2 = -0.000000728;
- a3 = 0.00000000074;
- e = poly(a0, a1, a2, a3, T0);
- a0 = 2.492519;
- a1 = -0.0039189;
- a2 = -0.00001549;
- a3 = 0.00000004;
- i = poly(a0, a1, a2, a3, T0);
- a0 = 338.307800;
- a1 = 1.0852207;
- a2 = 0.00097854;
- a3 = 0.00000992;
- w1 = poly(a0, a1, a2, a3, T0);
- w1 = range(w1);
- a0 = 112.790414;
- a1 = 0.8731951;
- a2 = -0.00015218;
- a3 = -0.00000531;
- w2 = poly(a0, a1, a2, a3, T0);
- w2 = range(w2);
-
- /* Now Saturn's perturbations */
-
- l1pert = (-0.814181 + 0.018150 * nu2 + 0.016714 * nu2 * nu2) * sin(V)
- + (-0.010497 + 0.160906 * nu2 - 0.004100 * nu2 * nu2) * cos(V)
- + 0.007581 * sin(2 * V)
- -0.007986 * sin(W)
- -0.148811 * sin(ze)
- -0.040786 * sin(2 * ze)
- -0.015208 * sin(3 * ze)
- -0.006339 * sin(4 * ze)
- -0.006244 * sin(Q);
- l1pert = l1pert
- + (0.008931 + 0.002728 * nu2) * sin(ze) * sin(Q)
- -0.016500 * sin(2 * ze) * sin(Q)
- -0.005775 * sin(3 * ze) * sin(Q)
- + (0.081344 + 0.003206 * nu2) * cos(ze) * sin(Q)
- + 0.015019 * cos(2 * ze) * sin(Q)
- + (0.085581 + 0.002494 * nu2) * sin(ze) * cos(Q)
- + (0.025328 - 0.003117 * nu2) * cos(ze) * cos(Q);
- l1pert = l1pert
- + 0.014394 * cos(2 * ze) * cos(Q)
- + 0.006319 * cos(3 * ze) * cos(Q)
- + 0.006369 * sin(ze) * sin(2 * Q)
- + 0.009156 * sin(2 * ze) * sin(2 * Q)
- + 0.007525 * sin(3 * psi) * sin(2 * Q)
- -0.005236 * cos(ze) * cos(2 * Q)
- -0.007736 * cos(2 * ze) * cos(2 * Q)
- -0.007528 * cos(3 * psi) * cos(2 * Q);
-
- epert = (-.0007927 + .0002548 * nu2 + .0000091 * nu2 * nu2) * sin(V)
- + (.0013381 + .0001226 * nu2 - .0000253 * nu2 * nu2) * cos(V)
- + (.0000248 - .0000121 * nu2) * sin(2 * V)
- -(.0000305 + .0000091 * nu2) * cos(2 * V)
- + .0000412 * sin(2 * ze)
- + .0012415 * sin(Q)
- + (.0000390 - .0000617 * nu2) * sin(ze) * sin(Q)
- + (.0000165 - .0000204 * nu2) * sin(2 * ze) * sin(Q)
- + .0026599 * cos(ze) * sin(Q)
- -.0004687 * cos(2 * ze) * sin(Q);
- epert = epert
- -.0001870 * cos(3 * ze) * sin(Q)
- -.0000821 * cos(4 * ze) * sin(Q)
- -.0000377 * cos(5 * ze) * sin(Q)
- + .0000497 * cos(2 * psi) * sin(Q)
- + (.0000163 - .0000611 * nu2) * cos(Q)
- -.0012696 * sin(ze) * cos(Q)
- -.0004200 * sin(2 * ze) * cos(Q)
- -.0001503 * sin(3 * ze) * cos(Q)
- -.0000619 * sin(4 * ze) * cos(Q)
- -.0000268 * sin(5 * ze) * cos(Q);
- epert = epert
- -(.0000282 + .0001306 * nu2) * cos(ze) * cos(Q)
- + (-.0000086 + .0000230 * nu2) * cos(2 * ze) * cos(Q)
- + .0000461 * sin(2 * psi) * cos(Q)
- -.0000350 * sin(2 * Q)
- + (.0002211 - .0000286 * nu2) * sin(ze) * sin(2 * Q)
- -.0002208 * sin(2 * ze) * sin(2 * Q)
- -.0000568 * sin(3 * ze) * sin(2 * Q)
- -.0000346 * sin(4 * ze) * sin(2 * Q)
- -(.0002780 + .0000222 * nu2) * cos(ze) * sin(2 * Q)
- + (.0002022 + .0000263 * nu2) * cos(2 * ze) * sin(2 * Q);
- epert = epert
- + .0000248 * cos(3 * ze) * sin(2 * Q)
- + .0000242 * sin(3 * psi) * sin(2 * Q)
- + .0000467 * cos(3 * psi) * sin(2 * Q)
- -.0000490 * cos(2 * Q)
- -(.0002842 + .0000279 * nu2) * sin(ze) * cos(2 * Q)
- + (.0000128 + .0000226 * nu2) * sin(2 * ze) * cos(2 * Q)
- + .0000224 * sin(3 * ze) * cos(2 * Q)
- + (-.0001594 + .0000282 * nu2) * cos(ze) * cos(2 * Q)
- + (.0002162 - .0000207 * nu2) * cos(2 * ze) * cos(2 * Q)
- + .0000561 * cos(3 * ze) * cos(2 * Q);
- epert = epert
- + .0000343 * cos(4 * ze) * cos(2 * Q)
- + .0000469 * sin(3 * psi) * cos(2 * Q)
- -.0000242 * cos(3 * psi) * cos(2 * Q)
- -.0000205 * sin(ze) * sin(3 * Q)
- + .0000262 * sin(3 * ze) * sin(3 * Q)
- + .0000208 * cos(ze) * cos(3 * Q)
- -.0000271 * cos(3 * ze) * cos(3 * Q)
- -.0000382 * cos(3 * ze) * sin(4 * Q)
- -.0000376 * sin(3 * ze) * cos(4 * Q);
-
- w1pert = (0.077108 + 0.007186 * nu2 - 0.001533 * nu2 * nu2) * sin(V)
- + (0.045803 - 0.014766 * nu2 - 0.000536 * nu2 * nu2) * cos(V)
- -0.007075 * sin(ze)
- -0.075825 * sin(ze) * sin(Q)
- -0.024839 * sin(2 * ze) * sin(Q)
- -0.008631 * sin(3 * ze) * sin(Q)
- -0.072586 * cos(Q)
- -0.150383 * cos(ze) * cos(Q)
- + 0.026897 * cos(2 * ze) * cos(Q)
- + 0.010053 * cos(3 * ze) * cos(Q);
- w1pert = w1pert
- -(0.013597 + 0.001719 * nu2) * sin(ze) * sin(2 * Q)
- + (-0.007742 + 0.001517 * nu2) * cos(ze) * sin(2 * Q)
- + (0.013586 - 0.001375 * nu2) * cos(2 * ze) * sin(2 * Q)
- + (-0.013667 + 0.001239 * nu2) * sin(ze) * cos(2 * Q)
- + 0.011981 * sin(2 * ze) * cos(2 * Q)
- + (0.014861 + 0.001136 * nu2) * cos(ze) * cos(2 * Q)
- -(0.013064 + 0.001628 * nu2) * cos(2 * ze) * cos(2 * Q);
-
- lonpert = l1pert - (w1pert / e);
- l = l + l1pert;
- M0 = M6 + lonpert;
- e = e + epert;
- w1 = w1 + w1pert;
-
- apert = .000572 * sin(V) - .001590 * sin(2 * ze) * cos(Q)
- + .002933 * cos(V) - .000647 * sin(3 * ze) * cos(Q)
- + .033629 * cos(ze) - .000344 * sin(4 * ze) * cos(Q)
- -.003081 * cos(2 * ze) + .002885 * cos(ze) * cos(Q)
- -.001423 * cos(3 * ze) + (.002172 + .000102 * nu2) * cos(2 * ze) * cos(Q)
- -.000671 * cos(4 * ze) + .000296 * cos(3 * ze) * cos(Q)
- -.000320 * cos(5 * ze) - .000267 * sin(2 * ze) * sin(2 * Q);
- apert = apert
- + .001098 * sin(Q) - .000778 * cos(ze) * sin(2 * Q)
- -.002812 * sin(ze) * sin(Q) + .000495 * cos(2 * ze) * sin(2 * Q)
- + .000688 * sin(2 * ze) * sin(Q) + .000250 * cos(3 * ze) * sin(2 * Q);
- apert = apert
- -.000393 * sin(3 * ze) * sin(Q)
- -.000228 * sin(4 * ze) * sin(Q)
- + .002138 * cos(ze) * sin(Q)
- -.000999 * cos(2 * ze) * sin(Q)
- -.000642 * cos(3 * ze) * sin(Q)
- -.000325 * cos(4 * ze) * sin(Q)
- -.000890 * cos(Q)
- + .002206 * sin(ze) * cos(Q);
- apert = apert
- -.000856 * sin(ze) * cos(2 * Q)
- + .000441 * sin(2 * ze) * cos(2 * Q)
- + .000296 * cos(2 * ze) * cos(2 * Q)
- + .000211 * cos(3 * ze) * cos(2 * Q)
- -.000427 * sin(ze) * sin(3 * Q)
- + .000398 * sin(3 * ze) * sin(3 * Q)
- + .000344 * cos(ze) * cos(3 * Q)
- -.000427 * cos(3 * ze) * cos(3 * Q);
-
- a = a + apert;
- ECC = kepler(e, M0);
- nu = truean(e, ECC);
- r = a * (1.0 - e * cos(ECC * rad));
- u = l + nu - M0 - w2;
- ll = longi(w2, i, u);
- b = lati(u, i);
-
- b = b
- + 0.000747 * cos(ze) * sin(Q)
- + 0.001069 * cos(ze) * cos(Q)
- + 0.002108 * sin(2 * ze) * sin(2 * Q)
- + 0.001261 * cos(2 * ze) * sin(2 * Q)
- + 0.001236 * sin(2 * ze) * cos(2 * Q)
- -0.002075 * cos(2 * ze) * cos(2 * Q);
-
- helio_trans(r, b, ll, Stheta, Sr, epli, MAGSAT, "Ps", "Saturn");
-
- /* Now Start on Uranus */
- a0 = 244.197470;
- a1 = 429.863546;
- a2 = 0.0003160;
- a3 = -0.00000060;
- l = poly(a0, a1, a2, a3, T0);
- l = range(l);
- a = 19.21814;
- a0 = 0.0463444;
- a1 = -0.00002658;
- a2 = 0.000000077;
- a3 = 0.0;
- e = poly(a0, a1, a2, a3, T0);
- a0 = 0.772464;
- a1 = 0.0006253;
- a2 = 0.0000395;
- i = poly(a0, a1, a2, a3, T0);
- a0 = 98.071581;
- a1 = 0.9857650;
- a2 = -0.0010745;
- a3 = -0.00000061;
- w1 = poly(a0, a1, a2, a3, T0);
- w1 = range(w1);
- a0 = 73.477111;
- a1 = 0.4986678;
- a2 = 0.0013117;
- a3 = 0.0;
- w2 = poly(a0, a1, a2, a3, T0);
- w2 = range(w2);
- M7 = 72.64878 + 428.37911 * T0 + 0.000079 * T0 * T0;
- M7 = range(M7);
- /* now perturbation corrections for Uranus */
- G = 83.76922 + 218.4901 * T0;
- S = S / rad;
- P = P / rad;
- Q = Q / rad;
- H = 2.0 * G - S;
- ze = S - P;
- eta = S - Q;
- th = G - S;
- S = S * rad;
- G = range(G) * rad;
- P = P * rad;
- Q = Q * rad;
- H = range(H) * rad;
- ze = range(ze) * rad;
- eta = range(eta) * rad;
- th = range(th) * rad;
-
- l1pert = (0.864319 - 0.001583 * nu2) * sin(H)
- + (0.082222 - 0.006833 * nu2) * cos(H)
- + 0.036017 * sin(2 * H)
- -0.003019 * cos(2 * H)
- + 0.008122 * sin(W);
-
- epert = (-.0003349 + .0000163 * nu2) * sin(H)
- + .0020981 * cos(H)
- + .0001311 * cos(H);
-
- w1pert = 0.120303 * sin(H)
- + (0.019472 - 0.000947 * nu2) * cos(H)
- + 0.006197 * sin(2 * H);
-
- lonpert = l1pert - (w1pert / e);
- l = l + l1pert;
- M0 = M7 + lonpert;
- e = e + epert;
- w1 = w1 + w1pert;
-
- a = a - 0.003825 * cos(H);
- ECC = kepler(e, M0);
- nu = truean(e, ECC);
- r = a * (1.0 - e * cos(ECC * rad));
- u = l + nu - M0 - w2;
- ll = longi(w2, i, u);
- b = lati(u, i);
-
- ll = ll
- + (0.010122 - 0.000988 * nu2) * sin(S + eta)
- + (-0.038581 + 0.002031 * nu2 - 0.001910 * nu2 * nu2) * cos(S + eta)
- + (0.034964 - 0.001038 * nu2 + 0.000868 * nu2 * nu2) * cos(2 * S + eta)
- + 0.005594 * sin(S + 3 * th);
- ll = ll
- -0.014808 * sin(ze)
- -0.005794 * sin(eta)
- + 0.002347 * cos(eta)
- + 0.009872 * sin(th)
- + 0.008803 * sin(2 * th)
- -0.004308 * sin(3 * th);
-
- b = b
- + (0.000458 * sin(eta) - 0.000642 * cos(eta) - 0.000517 * cos(4 * th))
- *sin(S)
- -(0.000347 * sin(eta) + 0.000853 * cos(eta) + 0.000517 * sin(4 * eta))
- *cos(S)
- + 0.000403 * (cos(2 * th) * sin(2 * S) + sin(2 * th) * cos(2 * S));
-
- r = r
- -.025948
- + .004985 * cos(ze)
- -.001230 * cos(S)
- + .003354 * cos(eta)
- + (.005795 * cos(S) - .001165 * sin(S) + .001388 * cos(2 * S)) * sin(eta)
- + (.001351 * cos(S) + .005702 * sin(S) + .001388 * sin(2 * S)) * cos(eta)
- + .000904 * cos(2 * th)
- + .000894 * (cos(th) - cos(3 * th));
- helio_trans(r, b, ll, Stheta, Sr, epli, MAGURA, "PU", "Uranus");
-
- /* Now start Neptune */
- a0 = 84.457994;
- a1 = 219.885914;
- a2 = 0.0003205;
- a3 = -0.00000060;
- l = poly(a0, a1, a2, a3, T0);
- l = range(l);
- a = 30.10957;
- a0 = 0.00899704;
- a1 = 0.000006330;
- a2 = -0.000000002;
- a3 = 0.0;
- e = poly(a0, a1, a2, a3, T0);
- a0 = 1.779242;
- a1 = -0.0095436;
- a2 = -0.0000091;
- i = poly(a0, a1, a2, a3, T0);
- a0 = 276.045975;
- a1 = 0.3256394;
- a2 = 0.00014095;
- a3 = 0.000004113;
- w1 = poly(a0, a1, a2, a3, T0);
- w1 = range(w1);
- a0 = 130.681389;
- a1 = 1.0989350;
- a2 = 0.00024987;
- a3 = -0.000004718;
- w2 = poly(a0, a1, a2, a3, T0);
- w2 = range(w2);
- M8 = 37.73063 + 218.46134 * T0 - 0.000070 * T0 * T0;
-
- /* now perturbation corrections for neptune */
- G = G / rad;
- P = P / rad;
- Q = Q / rad;
- S = S / rad;
- ze = G - P;
- eta = G - Q;
- th = G - S;
- G = G * rad;
- P = P * rad;
- Q = Q * rad;
- S = S * rad;
- ze = range(ze) * rad;
- eta = range(eta) * rad;
- th = range(th) * rad;
-
- l1pert = (-0.589833 + 0.001089 * nu2) * sin(H)
- + (-0.056094 + 0.004658 * nu2) * cos(H)
- -0.024286 * sin(2 * H);
-
- epert = .0004389 * sin(H)
- + .0004262 * cos(H)
- + .0001129 * sin(2 * H)
- + .0001089 * cos(2 * H);
-
- w1pert = 0.024039 * sin(H)
- -0.025303 * cos(H)
- + 0.006206 * sin(2 * H)
- -0.005992 * cos(2 * H);
-
-
- lonpert = l1pert - (w1pert / e);
- l = l + l1pert;
- M0 = M8 + lonpert;
- e = e + epert;
- w1 = w1 + w1pert;
-
- a = a - 0.000817 * sin(H)
- + 0.008189 * cos(H)
- + 0.000781 * cos(2 * H);
-
- ECC = kepler(e, M0);
- nu = truean(e, ECC);
- r = a * (1.0 - e * cos(ECC * rad));
- u = l + nu - M0 - w2;
- ll = longi(w2, i, u);
- b = lati(u, i);
-
- ll = ll
- -0.009556 * sin(ze)
- -0.005178 * sin(eta)
- + 0.002572 * sin(2 * th)
- -0.002972 * cos(2 * th) * sin(G)
- -0.002833 * sin(2 * th) * cos(G);
-
- b = b
- + 0.000336 * cos(2 * th) * sin(G)
- + 0.000364 * sin(2 * th) * cos(G);
-
- r = r
- -.040596
- + .004992 * cos(ze)
- + .002744 * cos(eta)
- + .002044 * cos(th)
- + .001051 * cos(2 * th);
- helio_trans(r, b, ll, Stheta, Sr, epli, MAGNEP, "PN", "Neptune");
-
- return epli;
- }
-
-
-