UNPKG

25.1 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.callisto = exports.ganymede = exports.europa = exports.io = undefined;
7
8var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); /**
9 * @copyright 2013 Sonia Keys
10 * @copyright 2016 commenthol
11 * @license MIT
12 * @module jupitermoons
13 */
14/**
15 * Jupitermoons: Chapter 44, Positions of the Satellites of Jupiter.
16 */
17
18exports.positions = positions;
19exports.e5 = e5;
20
21var _base = require('./base');
22
23var _base2 = _interopRequireDefault(_base);
24
25var _planetelements = require('./planetelements');
26
27var _planetelements2 = _interopRequireDefault(_planetelements);
28
29var _solar = require('./solar');
30
31var _solar2 = _interopRequireDefault(_solar);
32
33function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
34
35// Moon names in order of position in Array
36var io = exports.io = 0;
37var europa = exports.europa = 1;
38var ganymede = exports.ganymede = 2;
39var callisto = exports.callisto = 3;
40
41var k = [17295, 21819, 27558, 36548];
42
43/**
44 * XY used for returning coordinates of moons.
45 * @param {number} x - in units of Jupiter radii
46 * @param {number} y - in units of Jupiter radii
47 */
48function XY(x, y) {
49 this.x = x;
50 this.y = y;
51}
52
53/**
54 * Positions computes positions of moons of Jupiter.
55 *
56 * Returned coordinates are in units of Jupiter radii.
57 *
58 * @param {Number} jde - Julian ephemeris day
59 * @return {Array} x, y - coordinates of the 4 Satellites of jupiter
60 */
61function positions(jde) {
62 var d = jde - _base2.default.J2000;
63 var p = Math.PI / 180;
64 var V = 172.74 * p + 0.00111588 * p * d;
65 var M = 357.529 * p + 0.9856003 * p * d;
66 var sV = Math.sin(V);
67 var N = 20.02 * p + 0.0830853 * p * d + 0.329 * p * sV;
68 var J = 66.115 * p + 0.9025179 * p * d - 0.329 * p * sV;
69
70 var _base$sincos = _base2.default.sincos(M),
71 _base$sincos2 = _slicedToArray(_base$sincos, 2),
72 sM = _base$sincos2[0],
73 cM = _base$sincos2[1];
74
75 var _base$sincos3 = _base2.default.sincos(N),
76 _base$sincos4 = _slicedToArray(_base$sincos3, 2),
77 sN = _base$sincos4[0],
78 cN = _base$sincos4[1];
79
80 var _base$sincos5 = _base2.default.sincos(2 * M),
81 _base$sincos6 = _slicedToArray(_base$sincos5, 2),
82 s2M = _base$sincos6[0],
83 c2M = _base$sincos6[1];
84
85 var _base$sincos7 = _base2.default.sincos(2 * N),
86 _base$sincos8 = _slicedToArray(_base$sincos7, 2),
87 s2N = _base$sincos8[0],
88 c2N = _base$sincos8[1];
89
90 var A = 1.915 * p * sM + 0.02 * p * s2M;
91 var B = 5.555 * p * sN + 0.168 * p * s2N;
92 var K = J + A - B;
93 var R = 1.00014 - 0.01671 * cM - 0.00014 * c2M;
94 var r = 5.20872 - 0.25208 * cN - 0.00611 * c2N;
95
96 var _base$sincos9 = _base2.default.sincos(K),
97 _base$sincos10 = _slicedToArray(_base$sincos9, 2),
98 sK = _base$sincos10[0],
99 cK = _base$sincos10[1];
100
101 var Δ = Math.sqrt(r * r + R * R - 2 * r * R * cK);
102 var ψ = Math.asin(R / Δ * sK);
103 var λ = 34.35 * p + 0.083091 * p * d + 0.329 * p * sV + B;
104 var DS = 3.12 * p * Math.sin(λ + 42.8 * p);
105 var DE = DS - 2.22 * p * Math.sin(ψ) * Math.cos(λ + 22 * p) - 1.3 * p * (r - Δ) / Δ * Math.sin(λ - 100.5 * p);
106 var dd = d - Δ / 173;
107 var u1 = 163.8069 * p + 203.4058646 * p * dd + ψ - B;
108 var u2 = 358.414 * p + 101.2916335 * p * dd + ψ - B;
109 var u3 = 5.7176 * p + 50.234518 * p * dd + ψ - B;
110 var u4 = 224.8092 * p + 21.48798 * p * dd + ψ - B;
111 var G = 331.18 * p + 50.310482 * p * dd;
112 var H = 87.45 * p + 21.569231 * p * dd;
113
114 var _base$sincos11 = _base2.default.sincos(2 * (u1 - u2)),
115 _base$sincos12 = _slicedToArray(_base$sincos11, 2),
116 s212 = _base$sincos12[0],
117 c212 = _base$sincos12[1];
118
119 var _base$sincos13 = _base2.default.sincos(2 * (u2 - u3)),
120 _base$sincos14 = _slicedToArray(_base$sincos13, 2),
121 s223 = _base$sincos14[0],
122 c223 = _base$sincos14[1];
123
124 var _base$sincos15 = _base2.default.sincos(G),
125 _base$sincos16 = _slicedToArray(_base$sincos15, 2),
126 sG = _base$sincos16[0],
127 cG = _base$sincos16[1];
128
129 var _base$sincos17 = _base2.default.sincos(H),
130 _base$sincos18 = _slicedToArray(_base$sincos17, 2),
131 sH = _base$sincos18[0],
132 cH = _base$sincos18[1];
133
134 var c1 = 0.473 * p * s212;
135 var c2 = 1.065 * p * s223;
136 var c3 = 0.165 * p * sG;
137 var c4 = 0.843 * p * sH;
138 var r1 = 5.9057 - 0.0244 * c212;
139 var r2 = 9.3966 - 0.0882 * c223;
140 var r3 = 14.9883 - 0.0216 * cG;
141 var r4 = 26.3627 - 0.1939 * cH;
142 var sDE = Math.sin(DE);
143 var xy = function xy(u, r) {
144 var _base$sincos19 = _base2.default.sincos(u),
145 _base$sincos20 = _slicedToArray(_base$sincos19, 2),
146 su = _base$sincos20[0],
147 cu = _base$sincos20[1];
148
149 return new XY(r * su, -r * cu * sDE);
150 };
151 return [xy(u1 + c1, r1), xy(u2 + c2, r2), xy(u3 + c3, r3), xy(u4 + c4, r4)];
152}
153
154/**
155 * Positions computes positions of moons of Jupiter.
156 *
157 * High accuracy method based on theory "E5" Results returned in
158 * argument pos, which must not be undefined. Returned coordinates in units
159 * of Jupiter radii.
160 *
161 * @param {Number} jde - Julian ephemeris day
162 * @param {planetposition.Planet} earth - VSOP87 Planet earth
163 * @param {planetposition.Planet} jupiter - VSOP87 Planet jupiter
164 * @param {Array} [pos] - reference to array of positions (same as return value)
165 * @return {Array} x, y - coordinates of the 4 Satellites of jupiter
166 */
167function e5(jde, earth, jupiter, pos) {
168 pos = pos || new Array(4);
169
170 // variables assigned in following block
171 var λ0 = void 0,
172 β0 = void 0,
173 t = void 0;
174 var Δ = 5.0;(function () {
175 var _solar$trueVSOP = _solar2.default.trueVSOP87(earth, jde),
176 lon = _solar$trueVSOP.lon,
177 lat = _solar$trueVSOP.lat,
178 range = _solar$trueVSOP.range;
179
180 var s = lon,
181 β = lat,
182 R = range;
183
184 var _base$sincos21 = _base2.default.sincos(s),
185 _base$sincos22 = _slicedToArray(_base$sincos21, 2),
186 ss = _base$sincos22[0],
187 cs = _base$sincos22[1];
188
189 var sβ = Math.sin(β);
190 var τ = _base2.default.lightTime(Δ);
191 var x = void 0,
192 y = void 0,
193 z = void 0;
194 function f() {
195 var _jupiter$position = jupiter.position(jde - τ),
196 lon = _jupiter$position.lon,
197 lat = _jupiter$position.lat,
198 range = _jupiter$position.range;
199
200 var _base$sincos23 = _base2.default.sincos(lon),
201 _base$sincos24 = _slicedToArray(_base$sincos23, 2),
202 sl = _base$sincos24[0],
203 cl = _base$sincos24[1];
204
205 var _base$sincos25 = _base2.default.sincos(lat),
206 _base$sincos26 = _slicedToArray(_base$sincos25, 2),
207 sb = _base$sincos26[0],
208 cb = _base$sincos26[1];
209
210 x = range * cb * cl + R * cs;
211 y = range * cb * sl + R * ss;
212 z = range * sb + R * sβ;
213 Δ = Math.sqrt(x * x + y * y + z * z);
214 τ = _base2.default.lightTime(Δ);
215 }
216
217 f();
218 f();
219
220 λ0 = Math.atan2(y, x);
221 β0 = Math.atan(z / Math.hypot(x, y));
222 t = jde - 2443000.5 - τ;
223 })();
224
225 var p = Math.PI / 180;
226 var l1 = 106.07719 * p + 203.48895579 * p * t;
227 var l2 = 175.73161 * p + 101.374724735 * p * t;
228 var l3 = 120.55883 * p + 50.317609207 * p * t;
229 var l4 = 84.44459 * p + 21.571071177 * p * t;
230 var π1 = 97.0881 * p + 0.16138586 * p * t;
231 var π2 = 154.8663 * p + 0.04726307 * p * t;
232 var π3 = 188.184 * p + 0.00712734 * p * t;
233 var π4 = 335.2868 * p + 0.00184 * p * t;
234 var ω1 = 312.3346 * p - 0.13279386 * p * t;
235 var ω2 = 100.4411 * p - 0.03263064 * p * t;
236 var ω3 = 119.1942 * p - 0.00717703 * p * t;
237 var ω4 = 322.6186 * p - 0.00175934 * p * t;
238 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);
239 var Φλ = 199.6766 * p + 0.1737919 * p * t;
240 var ψ = 316.5182 * p - 0.00000208 * p * t;
241 var G = 30.23756 * p + 0.0830925701 * p * t + Γ;
242 var Gʹ = 31.97853 * p + 0.0334597339 * p * t;
243 var Π = 13.469942 * p;
244
245 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);
246 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 - Π));
247 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));
248 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);
249 var L1 = l1 + Σ1;
250 var L2 = l2 + Σ2;
251 var L3 = l3 + Σ3;
252 var L4 = l4 + Σ4;
253
254 // variables assigned in following block
255 var I = void 0;
256 var X = new Array(5).fill(0);
257 var Y = new Array(5).fill(0);
258 var Z = new Array(5).fill(0);
259 var R = void 0;(function () {
260 var L = [L1, L2, L3, L4];
261 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))];
262 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)))];
263 // p. 311
264 var T0 = (jde - 2433282.423) / _base2.default.JulianCentury;
265 var P = (1.3966626 * p + 0.0003088 * p * T0) * T0;
266 for (var i in L) {
267 L[i] += P;
268 }
269 ψ += P;
270 var T = (jde - _base2.default.J1900) / _base2.default.JulianCentury;
271 I = 3.120262 * p + 0.0006 * p * T;
272 for (var _i in L) {
273 var _base$sincos27 = _base2.default.sincos(L[_i] - ψ),
274 _base$sincos28 = _slicedToArray(_base$sincos27, 2),
275 sLψ = _base$sincos28[0],
276 cLψ = _base$sincos28[1];
277
278 var _base$sincos29 = _base2.default.sincos(B[_i]),
279 _base$sincos30 = _slicedToArray(_base$sincos29, 2),
280 sB = _base$sincos30[0],
281 cB = _base$sincos30[1];
282
283 X[_i] = R[_i] * cLψ * cB;
284 Y[_i] = R[_i] * sLψ * cB;
285 Z[_i] = R[_i] * sB;
286 }
287 })();
288
289 Z[4] = 1;
290 // p. 312
291 var A = new Array(5).fill(0);
292 var B = new Array(5).fill(0);
293 var C = new Array(5).fill(0);
294
295 var _base$sincos31 = _base2.default.sincos(I),
296 _base$sincos32 = _slicedToArray(_base$sincos31, 2),
297 sI = _base$sincos32[0],
298 cI = _base$sincos32[1];
299
300 var Ω = _planetelements2.default.node(_planetelements2.default.jupiter, jde);
301
302 var _base$sincos33 = _base2.default.sincos(Ω),
303 _base$sincos34 = _slicedToArray(_base$sincos33, 2),
304 sΩ = _base$sincos34[0],
305 cΩ = _base$sincos34[1];
306
307 var _base$sincos35 = _base2.default.sincos(ψ - Ω),
308 _base$sincos36 = _slicedToArray(_base$sincos35, 2),
309 sΦ = _base$sincos36[0],
310 cΦ = _base$sincos36[1];
311
312 var _base$sincos37 = _base2.default.sincos(_planetelements2.default.inc(_planetelements2.default.jupiter, jde)),
313 _base$sincos38 = _slicedToArray(_base$sincos37, 2),
314 si = _base$sincos38[0],
315 ci = _base$sincos38[1];
316
317 var _base$sincos39 = _base2.default.sincos(λ0),
318 _base$sincos40 = _slicedToArray(_base$sincos39, 2),
3190 = _base$sincos40[0],
3200 = _base$sincos40[1];
321
322 var _base$sincos41 = _base2.default.sincos(β0),
323 _base$sincos42 = _slicedToArray(_base$sincos41, 2),
3240 = _base$sincos42[0],
3250 = _base$sincos42[1];
326
327 for (var i in A) {
328 var a0 = void 0,
329 b0 = void 0;
330 // step 1
331 var a = X[i];
332 var b = Y[i] * cI - Z[i] * sI;
333 var c = Y[i] * sI + Z[i] * cI;
334 // step 2
335 a0 = a * cΦ - b * sΦ;
336 b = a * sΦ + b * cΦ;
337 a = a0;
338 // step 3
339 b0 = b * ci - c * si;
340 c = b * si + c * ci;
341 b = b0;
342 // step 4
343 a0 = a * cΩ - b * sΩ;
344 b = a * sΩ + b * cΩ;
345 a = a0;
346 // step 5
347 a0 = a * sλ0 - b * cλ0;
348 b = a * cλ0 + b * sλ0;
349 a = a0;
350 // step 6
351 A[i] = a;
352 B[i] = c * sβ0 + b * cβ0;
353 C[i] = c * cβ0 - b * sβ0;
354 }
355
356 var _base$sincos43 = _base2.default.sincos(Math.atan2(A[4], C[4])),
357 _base$sincos44 = _slicedToArray(_base$sincos43, 2),
358 sD = _base$sincos44[0],
359 cD = _base$sincos44[1];
360 // p. 313
361
362
363 for (var _i2 = 0; _i2 < 4; _i2++) {
364 var x = A[_i2] * cD - C[_i2] * sD;
365 var y = A[_i2] * sD + C[_i2] * cD;
366 var z = B[_i2];
367 // differential light time
368 var d = x / R[_i2];
369 x += Math.abs(z) / k[_i2] * Math.sqrt(1 - d * d);
370 // perspective effect
371 var W = Δ / (Δ + z / 2095);
372 pos[_i2] = new XY(x * W, y * W);
373 }
374 return pos;
375}
376
377exports.default = {
378 io: io,
379 europa: europa,
380 ganymede: ganymede,
381 callisto: callisto,
382 positions: positions,
383 e5: e5
384};
\No newline at end of file