UNPKG

19 kBJavaScriptView Raw
1/**
2 * @copyright 2013 Sonia Keys
3 * @copyright 2016 commenthol
4 * @license MIT
5 * @module jupitermoons
6 */
7/**
8 * Jupitermoons: Chapter 44, Positions of the Satellites of Jupiter.
9 */
10
11import base from './base';
12import planetelements from './planetelements';
13import solar from './solar';
14
15// Moon names in order of position in Array
16export var io = 0;
17export var europa = 1;
18export var ganymede = 2;
19export var callisto = 3;
20
21var k = [17295, 21819, 27558, 36548];
22
23/**
24 * XY used for returning coordinates of moons.
25 * @param {number} x - in units of Jupiter radii
26 * @param {number} y - in units of Jupiter radii
27 */
28function XY(x, y) {
29 this.x = x;
30 this.y = y;
31}
32
33/**
34 * Positions computes positions of moons of Jupiter.
35 *
36 * Returned coordinates are in units of Jupiter radii.
37 *
38 * @param {Number} jde - Julian ephemeris day
39 * @return {Array} x, y - coordinates of the 4 Satellites of jupiter
40 */
41export function positions(jde) {
42 var d = jde - base.J2000;
43 var p = Math.PI / 180;
44 var V = 172.74 * p + 0.00111588 * p * d;
45 var M = 357.529 * p + 0.9856003 * p * d;
46 var sV = Math.sin(V);
47 var N = 20.02 * p + 0.0830853 * p * d + 0.329 * p * sV;
48 var J = 66.115 * p + 0.9025179 * p * d - 0.329 * p * sV;
49
50 var _base$sincos = base.sincos(M),
51 sM = _base$sincos[0],
52 cM = _base$sincos[1];
53
54 var _base$sincos2 = base.sincos(N),
55 sN = _base$sincos2[0],
56 cN = _base$sincos2[1];
57
58 var _base$sincos3 = base.sincos(2 * M),
59 s2M = _base$sincos3[0],
60 c2M = _base$sincos3[1];
61
62 var _base$sincos4 = base.sincos(2 * N),
63 s2N = _base$sincos4[0],
64 c2N = _base$sincos4[1];
65
66 var A = 1.915 * p * sM + 0.02 * p * s2M;
67 var B = 5.555 * p * sN + 0.168 * p * s2N;
68 var K = J + A - B;
69 var R = 1.00014 - 0.01671 * cM - 0.00014 * c2M;
70 var r = 5.20872 - 0.25208 * cN - 0.00611 * c2N;
71
72 var _base$sincos5 = base.sincos(K),
73 sK = _base$sincos5[0],
74 cK = _base$sincos5[1];
75
76 var Δ = Math.sqrt(r * r + R * R - 2 * r * R * cK);
77 var ψ = Math.asin(R / Δ * sK);
78 var λ = 34.35 * p + 0.083091 * p * d + 0.329 * p * sV + B;
79 var DS = 3.12 * p * Math.sin(λ + 42.8 * p);
80 var DE = DS - 2.22 * p * Math.sin(ψ) * Math.cos(λ + 22 * p) - 1.3 * p * (r - Δ) / Δ * Math.sin(λ - 100.5 * p);
81 var dd = d - Δ / 173;
82 var u1 = 163.8069 * p + 203.4058646 * p * dd + ψ - B;
83 var u2 = 358.414 * p + 101.2916335 * p * dd + ψ - B;
84 var u3 = 5.7176 * p + 50.234518 * p * dd + ψ - B;
85 var u4 = 224.8092 * p + 21.48798 * p * dd + ψ - B;
86 var G = 331.18 * p + 50.310482 * p * dd;
87 var H = 87.45 * p + 21.569231 * p * dd;
88
89 var _base$sincos6 = base.sincos(2 * (u1 - u2)),
90 s212 = _base$sincos6[0],
91 c212 = _base$sincos6[1];
92
93 var _base$sincos7 = base.sincos(2 * (u2 - u3)),
94 s223 = _base$sincos7[0],
95 c223 = _base$sincos7[1];
96
97 var _base$sincos8 = base.sincos(G),
98 sG = _base$sincos8[0],
99 cG = _base$sincos8[1];
100
101 var _base$sincos9 = base.sincos(H),
102 sH = _base$sincos9[0],
103 cH = _base$sincos9[1];
104
105 var c1 = 0.473 * p * s212;
106 var c2 = 1.065 * p * s223;
107 var c3 = 0.165 * p * sG;
108 var c4 = 0.843 * p * sH;
109 var r1 = 5.9057 - 0.0244 * c212;
110 var r2 = 9.3966 - 0.0882 * c223;
111 var r3 = 14.9883 - 0.0216 * cG;
112 var r4 = 26.3627 - 0.1939 * cH;
113 var sDE = Math.sin(DE);
114 var xy = function xy(u, r) {
115 var _base$sincos10 = base.sincos(u),
116 su = _base$sincos10[0],
117 cu = _base$sincos10[1];
118
119 return new XY(r * su, -r * cu * sDE);
120 };
121 return [xy(u1 + c1, r1), xy(u2 + c2, r2), xy(u3 + c3, r3), xy(u4 + c4, r4)];
122}
123
124/**
125 * Positions computes positions of moons of Jupiter.
126 *
127 * High accuracy method based on theory "E5" Results returned in
128 * argument pos, which must not be undefined. Returned coordinates in units
129 * of Jupiter radii.
130 *
131 * @param {Number} jde - Julian ephemeris day
132 * @param {planetposition.Planet} earth - VSOP87 Planet earth
133 * @param {planetposition.Planet} jupiter - VSOP87 Planet jupiter
134 * @param {Array} [pos] - reference to array of positions (same as return value)
135 * @return {Array} x, y - coordinates of the 4 Satellites of jupiter
136 */
137export function e5(jde, earth, jupiter, pos) {
138 pos = pos || new Array(4);
139
140 // variables assigned in following block
141 var λ0 = void 0,
142 β0 = void 0,
143 t = void 0;
144 var Δ = 5.0;(function () {
145 var _solar$trueVSOP = solar.trueVSOP87(earth, jde),
146 lon = _solar$trueVSOP.lon,
147 lat = _solar$trueVSOP.lat,
148 range = _solar$trueVSOP.range;
149
150 var s = lon,
151 β = lat,
152 R = range;
153
154 var _base$sincos11 = base.sincos(s),
155 ss = _base$sincos11[0],
156 cs = _base$sincos11[1];
157
158 var sβ = Math.sin(β);
159 var τ = base.lightTime(Δ);
160 var x = void 0,
161 y = void 0,
162 z = void 0;
163 function f() {
164 var _jupiter$position = jupiter.position(jde - τ),
165 lon = _jupiter$position.lon,
166 lat = _jupiter$position.lat,
167 range = _jupiter$position.range;
168
169 var _base$sincos12 = base.sincos(lon),
170 sl = _base$sincos12[0],
171 cl = _base$sincos12[1];
172
173 var _base$sincos13 = base.sincos(lat),
174 sb = _base$sincos13[0],
175 cb = _base$sincos13[1];
176
177 x = range * cb * cl + R * cs;
178 y = range * cb * sl + R * ss;
179 z = range * sb + R * sβ;
180 Δ = Math.sqrt(x * x + y * y + z * z);
181 τ = base.lightTime(Δ);
182 }
183
184 f();
185 f();
186
187 λ0 = Math.atan2(y, x);
188 β0 = Math.atan(z / Math.hypot(x, y));
189 t = jde - 2443000.5 - τ;
190 })();
191
192 var p = Math.PI / 180;
193 var l1 = 106.07719 * p + 203.48895579 * p * t;
194 var l2 = 175.73161 * p + 101.374724735 * p * t;
195 var l3 = 120.55883 * p + 50.317609207 * p * t;
196 var l4 = 84.44459 * p + 21.571071177 * p * t;
197 var π1 = 97.0881 * p + 0.16138586 * p * t;
198 var π2 = 154.8663 * p + 0.04726307 * p * t;
199 var π3 = 188.184 * p + 0.00712734 * p * t;
200 var π4 = 335.2868 * p + 0.00184 * p * t;
201 var ω1 = 312.3346 * p - 0.13279386 * p * t;
202 var ω2 = 100.4411 * p - 0.03263064 * p * t;
203 var ω3 = 119.1942 * p - 0.00717703 * p * t;
204 var ω4 = 322.6186 * p - 0.00175934 * p * t;
205 var Γ = 0.33033 * p * Math.sin(163.679 * p + 0.0010512 * p * t) + 0.03439 * p * Math.sin(34.486 * p - 0.0161731 * p * t);
206 var Φλ = 199.6766 * p + 0.1737919 * p * t;
207 var ψ = 316.5182 * p - 0.00000208 * p * t;
208 var G = 30.23756 * p + 0.0830925701 * p * t + Γ;
209 var Gʹ = 31.97853 * p + 0.0334597339 * p * t;
210 var Π = 13.469942 * p;
211
212 var Σ1 = 0.47259 * p * Math.sin(2 * (l1 - l2)) + -0.03478 * p * Math.sin(π3 - π4) + 0.01081 * p * Math.sin(l2 - 2 * l3 + π3) + 0.00738 * p * Math.sin(Φλ) + 0.00713 * p * Math.sin(l2 - 2 * l3 + π2) + -0.00674 * p * Math.sin(π1 + π3 - 2 * Π - 2 * G) + 0.00666 * p * Math.sin(l2 - 2 * l3 + π4) + 0.00445 * p * Math.sin(l1 - π3) + -0.00354 * p * Math.sin(l1 - l2) + -0.00317 * p * Math.sin(2 * ψ - 2 * Π) + 0.00265 * p * Math.sin(l1 - π4) + -0.00186 * p * Math.sin(G) + 0.00162 * p * Math.sin(π2 - π3) + 0.00158 * p * Math.sin(4 * (l1 - l2)) + -0.00155 * p * Math.sin(l1 - l3) + -0.00138 * p * Math.sin(ψ + ω3 - 2 * Π - 2 * G) + -0.00115 * p * Math.sin(2 * (l1 - 2 * l2 + ω2)) + 0.00089 * p * Math.sin(π2 - π4) + 0.00085 * p * Math.sin(l1 + π3 - 2 * Π - 2 * G) + 0.00083 * p * Math.sin(ω2 - ω3) + 0.00053 * p * Math.sin(ψ - ω2);
213 var Σ2 = 1.06476 * p * Math.sin(2 * (l2 - l3)) + 0.04256 * p * Math.sin(l1 - 2 * l2 + π3) + 0.03581 * p * Math.sin(l2 - π3) + 0.02395 * p * Math.sin(l1 - 2 * l2 + π4) + 0.01984 * p * Math.sin(l2 - π4) + -0.01778 * p * Math.sin(Φλ) + 0.01654 * p * Math.sin(l2 - π2) + 0.01334 * p * Math.sin(l2 - 2 * l3 + π2) + 0.01294 * p * Math.sin(π3 - π4) + -0.01142 * p * Math.sin(l2 - l3) + -0.01057 * p * Math.sin(G) + -0.00775 * p * Math.sin(2 * (ψ - Π)) + 0.00524 * p * Math.sin(2 * (l1 - l2)) + -0.0046 * p * Math.sin(l1 - l3) + 0.00316 * p * Math.sin(ψ - 2 * G + ω3 - 2 * Π) + -0.00203 * p * Math.sin(π1 + π3 - 2 * Π - 2 * G) + 0.00146 * p * Math.sin(ψ - ω3) + -0.00145 * p * Math.sin(2 * G) + 0.00125 * p * Math.sin(ψ - ω4) + -0.00115 * p * Math.sin(l1 - 2 * l3 + π3) + -0.00094 * p * Math.sin(2 * (l2 - ω2)) + 0.00086 * p * Math.sin(2 * (l1 - 2 * l2 + ω2)) + -0.00086 * p * Math.sin(5 * Gʹ - 2 * G + 52.225 * p) + -0.00078 * p * Math.sin(l2 - l4) + -0.00064 * p * Math.sin(3 * l3 - 7 * l4 + 4 * π4) + 0.00064 * p * Math.sin(π1 - π4) + -0.00063 * p * Math.sin(l1 - 2 * l3 + π4) + 0.00058 * p * Math.sin(ω3 - ω4) + 0.00056 * p * Math.sin(2 * (ψ - Π - G)) + 0.00056 * p * Math.sin(2 * (l2 - l4)) + 0.00055 * p * Math.sin(2 * (l1 - l3)) + 0.00052 * p * Math.sin(3 * l3 - 7 * l4 + π3 + 3 * π4) + -0.00043 * p * Math.sin(l1 - π3) + 0.00041 * p * Math.sin(5 * (l2 - l3)) + 0.00041 * p * Math.sin(π4 - Π) + 0.00032 * p * Math.sin(ω2 - ω3) + 0.00032 * p * Math.sin(2 * (l3 - G - Π));
214 var Σ3 = 0.1649 * p * Math.sin(l3 - π3) + 0.09081 * p * Math.sin(l3 - π4) + -0.06907 * p * Math.sin(l2 - l3) + 0.03784 * p * Math.sin(π3 - π4) + 0.01846 * p * Math.sin(2 * (l3 - l4)) + -0.0134 * p * Math.sin(G) + -0.01014 * p * Math.sin(2 * (ψ - Π)) + 0.00704 * p * Math.sin(l2 - 2 * l3 + π3) + -0.0062 * p * Math.sin(l2 - 2 * l3 + π2) + -0.00541 * p * Math.sin(l3 - l4) + 0.00381 * p * Math.sin(l2 - 2 * l3 + π4) + 0.00235 * p * Math.sin(ψ - ω3) + 0.00198 * p * Math.sin(ψ - ω4) + 0.00176 * p * Math.sin(Φλ) + 0.0013 * p * Math.sin(3 * (l3 - l4)) + 0.00125 * p * Math.sin(l1 - l3) + -0.00119 * p * Math.sin(5 * Gʹ - 2 * G + 52.225 * p) + 0.00109 * p * Math.sin(l1 - l2) + -0.001 * p * Math.sin(3 * l3 - 7 * l4 + 4 * π4) + 0.00091 * p * Math.sin(ω3 - ω4) + 0.0008 * p * Math.sin(3 * l3 - 7 * l4 + π3 + 3 * π4) + -0.00075 * p * Math.sin(2 * l2 - 3 * l3 + π3) + 0.00072 * p * Math.sin(π1 + π3 - 2 * Π - 2 * G) + 0.00069 * p * Math.sin(π4 - Π) + -0.00058 * p * Math.sin(2 * l3 - 3 * l4 + π4) + -0.00057 * p * Math.sin(l3 - 2 * l4 + π4) + 0.00056 * p * Math.sin(l3 + π3 - 2 * Π - 2 * G) + -0.00052 * p * Math.sin(l2 - 2 * l3 + π1) + -0.00050 * p * Math.sin(π2 - π3) + 0.00048 * p * Math.sin(l3 - 2 * l4 + π3) + -0.00045 * p * Math.sin(2 * l2 - 3 * l3 + π4) + -0.00041 * p * Math.sin(π2 - π4) + -0.00038 * p * Math.sin(2 * G) + -0.00037 * p * Math.sin(π3 - π4 + ω3 - ω4) + -0.00032 * p * Math.sin(3 * l3 - 7 * l4 + 2 * π3 + 2 * π4) + 0.0003 * p * Math.sin(4 * (l3 - l4)) + 0.00029 * p * Math.sin(l3 + π4 - 2 * Π - 2 * G) + -0.00028 * p * Math.sin(ω3 + ψ - 2 * Π - 2 * G) + 0.00026 * p * Math.sin(l3 - Π - G) + 0.00024 * p * Math.sin(l2 - 3 * l3 + 2 * l4) + 0.00021 * p * Math.sin(2 * (l3 - Π - G)) + -0.00021 * p * Math.sin(l3 - π2) + 0.00017 * p * Math.sin(2 * (l3 - π3));
215 var Σ4 = 0.84287 * p * Math.sin(l4 - π4) + 0.03431 * p * Math.sin(π4 - π3) + -0.03305 * p * Math.sin(2 * (ψ - Π)) + -0.03211 * p * Math.sin(G) + -0.01862 * p * Math.sin(l4 - π3) + 0.01186 * p * Math.sin(ψ - ω4) + 0.00623 * p * Math.sin(l4 + π4 - 2 * G - 2 * Π) + 0.00387 * p * Math.sin(2 * (l4 - π4)) + -0.00284 * p * Math.sin(5 * Gʹ - 2 * G + 52.225 * p) + -0.00234 * p * Math.sin(2 * (ψ - π4)) + -0.00223 * p * Math.sin(l3 - l4) + -0.00208 * p * Math.sin(l4 - Π) + 0.00178 * p * Math.sin(ψ + ω4 - 2 * π4) + 0.00134 * p * Math.sin(π4 - Π) + 0.00125 * p * Math.sin(2 * (l4 - G - Π)) + -0.00117 * p * Math.sin(2 * G) + -0.00112 * p * Math.sin(2 * (l3 - l4)) + 0.00107 * p * Math.sin(3 * l3 - 7 * l4 + 4 * π4) + 0.00102 * p * Math.sin(l4 - G - Π) + 0.00096 * p * Math.sin(2 * l4 - ψ - ω4) + 0.00087 * p * Math.sin(2 * (ψ - ω4)) + -0.00085 * p * Math.sin(3 * l3 - 7 * l4 + π3 + 3 * π4) + 0.00085 * p * Math.sin(l3 - 2 * l4 + π4) + -0.00081 * p * Math.sin(2 * (l4 - ψ)) + 0.00071 * p * Math.sin(l4 + π4 - 2 * Π - 3 * G) + 0.00061 * p * Math.sin(l1 - l4) + -0.00056 * p * Math.sin(ψ - ω3) + -0.00054 * p * Math.sin(l3 - 2 * l4 + π3) + 0.00051 * p * Math.sin(l2 - l4) + 0.00042 * p * Math.sin(2 * (ψ - G - Π)) + 0.00039 * p * Math.sin(2 * (π4 - ω4)) + 0.00036 * p * Math.sin(ψ + Π - π4 - ω4) + 0.00035 * p * Math.sin(2 * Gʹ - G + 188.37 * p) + -0.00035 * p * Math.sin(l4 - π4 + 2 * Π - 2 * ψ) + -0.00032 * p * Math.sin(l4 + π4 - 2 * Π - G) + 0.0003 * p * Math.sin(2 * Gʹ - 2 * G + 149.15 * p) + 0.00029 * p * Math.sin(3 * l3 - 7 * l4 + 2 * π3 + 2 * π4) + 0.00028 * p * Math.sin(l4 - π4 + 2 * ψ - 2 * Π) + -0.00028 * p * Math.sin(2 * (l4 - ω4)) + -0.00027 * p * Math.sin(π3 - π4 + ω3 - ω4) + -0.00026 * p * Math.sin(5 * Gʹ - 3 * G + 188.37 * p) + 0.00025 * p * Math.sin(ω4 - ω3) + -0.00025 * p * Math.sin(l2 - 3 * l3 + 2 * l4) + -0.00023 * p * Math.sin(3 * (l3 - l4)) + 0.00021 * p * Math.sin(2 * l4 - 2 * Π - 3 * G) + -0.00021 * p * Math.sin(2 * l3 - 3 * l4 + π4) + 0.00019 * p * Math.sin(l4 - π4 - G) + -0.00019 * p * Math.sin(2 * l4 - π3 - π4) + -0.00018 * p * Math.sin(l4 - π4 + G) + -0.00016 * p * Math.sin(l4 + π3 - 2 * Π - 2 * G);
216 var L1 = l1 + Σ1;
217 var L2 = l2 + Σ2;
218 var L3 = l3 + Σ3;
219 var L4 = l4 + Σ4;
220
221 // variables assigned in following block
222 var I = void 0;
223 var X = new Array(5).fill(0);
224 var Y = new Array(5).fill(0);
225 var Z = new Array(5).fill(0);
226 var R = void 0;(function () {
227 var L = [L1, L2, L3, L4];
228 var B = [Math.atan(0.0006393 * Math.sin(L1 - ω1) + 0.0001825 * Math.sin(L1 - ω2) + 0.0000329 * Math.sin(L1 - ω3) + -0.0000311 * Math.sin(L1 - ψ) + 0.0000093 * Math.sin(L1 - ω4) + 0.0000075 * Math.sin(3 * L1 - 4 * l2 - 1.9927 * Σ1 + ω2) + 0.0000046 * Math.sin(L1 + ψ - 2 * Π - 2 * G)), Math.atan(0.0081004 * Math.sin(L2 - ω2) + 0.0004512 * Math.sin(L2 - ω3) + -0.0003284 * Math.sin(L2 - ψ) + 0.0001160 * Math.sin(L2 - ω4) + 0.0000272 * Math.sin(l1 - 2 * l3 + 1.0146 * Σ2 + ω2) + -0.0000144 * Math.sin(L2 - ω1) + 0.0000143 * Math.sin(L2 + ψ - 2 * Π - 2 * G) + 0.0000035 * Math.sin(L2 - ψ + G) + -0.0000028 * Math.sin(l1 - 2 * l3 + 1.0146 * Σ2 + ω3)), Math.atan(0.0032402 * Math.sin(L3 - ω3) + -0.0016911 * Math.sin(L3 - ψ) + 0.0006847 * Math.sin(L3 - ω4) + -0.0002797 * Math.sin(L3 - ω2) + 0.0000321 * Math.sin(L3 + ψ - 2 * Π - 2 * G) + 0.0000051 * Math.sin(L3 - ψ + G) + -0.0000045 * Math.sin(L3 - ψ - G) + -0.0000045 * Math.sin(L3 + ψ - 2 * Π) + 0.0000037 * Math.sin(L3 + ψ - 2 * Π - 3 * G) + 0.000003 * Math.sin(2 * l2 - 3 * L3 + 4.03 * Σ3 + ω2) + -0.0000021 * Math.sin(2 * l2 - 3 * L3 + 4.03 * Σ3 + ω3)), Math.atan(-0.0076579 * Math.sin(L4 - ψ) + 0.0044134 * Math.sin(L4 - ω4) + -0.0005112 * Math.sin(L4 - ω3) + 0.0000773 * Math.sin(L4 + ψ - 2 * Π - 2 * G) + 0.0000104 * Math.sin(L4 - ψ + G) + -0.0000102 * Math.sin(L4 - ψ - G) + 0.0000088 * Math.sin(L4 + ψ - 2 * Π - 3 * G) + -0.0000038 * Math.sin(L4 + ψ - 2 * Π - G))];
229 R = [5.90569 * (1 + -0.0041339 * Math.cos(2 * (l1 - l2)) + -0.0000387 * Math.cos(l1 - π3) + -0.0000214 * Math.cos(l1 - π4) + 0.000017 * Math.cos(l1 - l2) + -0.0000131 * Math.cos(4 * (l1 - l2)) + 0.0000106 * Math.cos(l1 - l3) + -0.0000066 * Math.cos(l1 + π3 - 2 * Π - 2 * G)), 9.39657 * (1 + 0.0093848 * Math.cos(l1 - l2) + -0.0003116 * Math.cos(l2 - π3) + -0.0001744 * Math.cos(l2 - π4) + -0.0001442 * Math.cos(l2 - π2) + 0.0000553 * Math.cos(l2 - l3) + 0.0000523 * Math.cos(l1 - l3) + -0.0000290 * Math.cos(2 * (l1 - l2)) + 0.0000164 * Math.cos(2 * (l2 - ω2)) + 0.0000107 * Math.cos(l1 - 2 * l3 + π3) + -0.0000102 * Math.cos(l2 - π1) + -0.0000091 * Math.cos(2 * (l1 - l3))), 14.98832 * (1 + -0.0014388 * Math.cos(l3 - π3) + -0.0007917 * Math.cos(l3 - π4) + 0.0006342 * Math.cos(l2 - l3) + -0.0001761 * Math.cos(2 * (l3 - l4)) + 0.0000294 * Math.cos(l3 - l4) + -0.0000156 * Math.cos(3 * (l3 - l4)) + 0.0000156 * Math.cos(l1 - l3) + -0.0000153 * Math.cos(l1 - l2) + 0.000007 * Math.cos(2 * l2 - 3 * l3 + π3) + -0.0000051 * Math.cos(l3 + π3 - 2 * Π - 2 * G)), 26.36273 * (1 + -0.0073546 * Math.cos(l4 - π4) + 0.0001621 * Math.cos(l4 - π3) + 0.0000974 * Math.cos(l3 - l4) + -0.0000543 * Math.cos(l4 + π4 - 2 * Π - 2 * G) + -0.0000271 * Math.cos(2 * (l4 - π4)) + 0.0000182 * Math.cos(l4 - Π) + 0.0000177 * Math.cos(2 * (l3 - l4)) + -0.0000167 * Math.cos(2 * l4 - ψ - ω4) + 0.0000167 * Math.cos(ψ - ω4) + -0.0000155 * Math.cos(2 * (l4 - Π - G)) + 0.0000142 * Math.cos(2 * (l4 - ψ)) + 0.0000105 * Math.cos(l1 - l4) + 0.0000092 * Math.cos(l2 - l4) + -0.0000089 * Math.cos(l4 - Π - G) + -0.0000062 * Math.cos(l4 + π4 - 2 * Π - 3 * G) + 0.0000048 * Math.cos(2 * (l4 - ω4)))];
230 // p. 311
231 var T0 = (jde - 2433282.423) / base.JulianCentury;
232 var P = (1.3966626 * p + 0.0003088 * p * T0) * T0;
233 for (var i in L) {
234 L[i] += P;
235 }
236 ψ += P;
237 var T = (jde - base.J1900) / base.JulianCentury;
238 I = 3.120262 * p + 0.0006 * p * T;
239 for (var _i in L) {
240 var _base$sincos14 = base.sincos(L[_i] - ψ),
241 sLψ = _base$sincos14[0],
242 cLψ = _base$sincos14[1];
243
244 var _base$sincos15 = base.sincos(B[_i]),
245 sB = _base$sincos15[0],
246 cB = _base$sincos15[1];
247
248 X[_i] = R[_i] * cLψ * cB;
249 Y[_i] = R[_i] * sLψ * cB;
250 Z[_i] = R[_i] * sB;
251 }
252 })();
253
254 Z[4] = 1;
255 // p. 312
256 var A = new Array(5).fill(0);
257 var B = new Array(5).fill(0);
258 var C = new Array(5).fill(0);
259
260 var _base$sincos16 = base.sincos(I),
261 sI = _base$sincos16[0],
262 cI = _base$sincos16[1];
263
264 var Ω = planetelements.node(planetelements.jupiter, jde);
265
266 var _base$sincos17 = base.sincos(Ω),
267 sΩ = _base$sincos17[0],
268 cΩ = _base$sincos17[1];
269
270 var _base$sincos18 = base.sincos(ψ - Ω),
271 sΦ = _base$sincos18[0],
272 cΦ = _base$sincos18[1];
273
274 var _base$sincos19 = base.sincos(planetelements.inc(planetelements.jupiter, jde)),
275 si = _base$sincos19[0],
276 ci = _base$sincos19[1];
277
278 var _base$sincos20 = base.sincos(λ0),
2790 = _base$sincos20[0],
2800 = _base$sincos20[1];
281
282 var _base$sincos21 = base.sincos(β0),
2830 = _base$sincos21[0],
2840 = _base$sincos21[1];
285
286 for (var i in A) {
287 var a0 = void 0,
288 b0 = void 0;
289 // step 1
290 var a = X[i];
291 var b = Y[i] * cI - Z[i] * sI;
292 var c = Y[i] * sI + Z[i] * cI;
293 // step 2
294 a0 = a * cΦ - b * sΦ;
295 b = a * sΦ + b * cΦ;
296 a = a0;
297 // step 3
298 b0 = b * ci - c * si;
299 c = b * si + c * ci;
300 b = b0;
301 // step 4
302 a0 = a * cΩ - b * sΩ;
303 b = a * sΩ + b * cΩ;
304 a = a0;
305 // step 5
306 a0 = a * sλ0 - b * cλ0;
307 b = a * cλ0 + b * sλ0;
308 a = a0;
309 // step 6
310 A[i] = a;
311 B[i] = c * sβ0 + b * cβ0;
312 C[i] = c * cβ0 - b * sβ0;
313 }
314
315 var _base$sincos22 = base.sincos(Math.atan2(A[4], C[4])),
316 sD = _base$sincos22[0],
317 cD = _base$sincos22[1];
318 // p. 313
319
320
321 for (var _i2 = 0; _i2 < 4; _i2++) {
322 var x = A[_i2] * cD - C[_i2] * sD;
323 var y = A[_i2] * sD + C[_i2] * cD;
324 var z = B[_i2];
325 // differential light time
326 var d = x / R[_i2];
327 x += Math.abs(z) / k[_i2] * Math.sqrt(1 - d * d);
328 // perspective effect
329 var W = Δ / (Δ + z / 2095);
330 pos[_i2] = new XY(x * W, y * W);
331 }
332 return pos;
333}
334
335export default {
336 io: io,
337 europa: europa,
338 ganymede: ganymede,
339 callisto: callisto,
340 positions: positions,
341 e5: e5
342};
\No newline at end of file