1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _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"); } }; }(); |
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 | exports.physical = physical;
|
18 | exports.physical2 = physical2;
|
19 |
|
20 | var _base = require('./base');
|
21 |
|
22 | var _base2 = _interopRequireDefault(_base);
|
23 |
|
24 | var _nutation = require('./nutation');
|
25 |
|
26 | var _nutation2 = _interopRequireDefault(_nutation);
|
27 |
|
28 | var _planetposition = require('./planetposition');
|
29 |
|
30 | var _planetposition2 = _interopRequireDefault(_planetposition);
|
31 |
|
32 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 | function physical(jde, earth, jupiter) {
|
52 |
|
53 |
|
54 | var d = jde - 2433282.5;
|
55 | var T1 = d / _base2.default.JulianCentury;
|
56 | var p = Math.PI / 180;
|
57 | var α0 = 268 * p + 0.1061 * p * T1;
|
58 | var δ0 = 64.5 * p - 0.0164 * p * T1;
|
59 |
|
60 | var W1 = 17.71 * p + 877.90003539 * p * d;
|
61 | var W2 = 16.838 * p + 870.27003539 * p * d;
|
62 |
|
63 | var pos = earth.position(jde);
|
64 | var _ref = [pos.lon, pos.lat, pos.range],
|
65 | l0 = _ref[0],
|
66 | b0 = _ref[1],
|
67 | R = _ref[2];
|
68 |
|
69 | var fk5 = _planetposition2.default.toFK5(l0, b0, jde);
|
70 | l0 = fk5.lon;
|
71 | b0 = fk5.lat;
|
72 |
|
73 |
|
74 | var _base$sincos = _base2.default.sincos(l0),
|
75 | _base$sincos2 = _slicedToArray(_base$sincos, 2),
|
76 | sl0 = _base$sincos2[0],
|
77 | cl0 = _base$sincos2[1];
|
78 |
|
79 | var sb0 = Math.sin(b0);
|
80 | var Δ = 4.0;
|
81 |
|
82 | var l = void 0,
|
83 | b = void 0,
|
84 | r = void 0,
|
85 | x = void 0,
|
86 | y = void 0,
|
87 | z = void 0;
|
88 | var f = function f() {
|
89 | var τ = _base2.default.lightTime(Δ);
|
90 | var pos = jupiter.position(jde - τ);
|
91 | l = pos.lon;
|
92 | b = pos.lat;
|
93 | r = pos.range;
|
94 | var fk5 = _planetposition2.default.toFK5(l, b, jde);
|
95 | l = fk5.lon;
|
96 | b = fk5.lat;
|
97 |
|
98 | var _base$sincos3 = _base2.default.sincos(b),
|
99 | _base$sincos4 = _slicedToArray(_base$sincos3, 2),
|
100 | sb = _base$sincos4[0],
|
101 | cb = _base$sincos4[1];
|
102 |
|
103 | var _base$sincos5 = _base2.default.sincos(l),
|
104 | _base$sincos6 = _slicedToArray(_base$sincos5, 2),
|
105 | sl = _base$sincos6[0],
|
106 | cl = _base$sincos6[1];
|
107 |
|
108 |
|
109 |
|
110 | x = r * cb * cl - R * cl0;
|
111 | y = r * cb * sl - R * sl0;
|
112 | z = r * sb - R * sb0;
|
113 |
|
114 | Δ = Math.sqrt(x * x + y * y + z * z);
|
115 | };
|
116 | f();
|
117 | f();
|
118 |
|
119 |
|
120 | var ε0 = _nutation2.default.meanObliquity(jde);
|
121 |
|
122 |
|
123 | var _base$sincos7 = _base2.default.sincos(ε0),
|
124 | _base$sincos8 = _slicedToArray(_base$sincos7, 2),
|
125 | sε0 = _base$sincos8[0],
|
126 | cε0 = _base$sincos8[1];
|
127 |
|
128 | var _base$sincos9 = _base2.default.sincos(l),
|
129 | _base$sincos10 = _slicedToArray(_base$sincos9, 2),
|
130 | sl = _base$sincos10[0],
|
131 | cl = _base$sincos10[1];
|
132 |
|
133 | var _base$sincos11 = _base2.default.sincos(b),
|
134 | _base$sincos12 = _slicedToArray(_base$sincos11, 2),
|
135 | sb = _base$sincos12[0],
|
136 | cb = _base$sincos12[1];
|
137 |
|
138 | var αs = Math.atan2(cε0 * sl - sε0 * sb / cb, cl);
|
139 | var δs = Math.asin(cε0 * sb + sε0 * cb * sl);
|
140 |
|
141 |
|
142 | var _base$sincos13 = _base2.default.sincos(δs),
|
143 | _base$sincos14 = _slicedToArray(_base$sincos13, 2),
|
144 | sδs = _base$sincos14[0],
|
145 | cδs = _base$sincos14[1];
|
146 |
|
147 | var _base$sincos15 = _base2.default.sincos(δ0),
|
148 | _base$sincos16 = _slicedToArray(_base$sincos15, 2),
|
149 | sδ0 = _base$sincos16[0],
|
150 | cδ0 = _base$sincos16[1];
|
151 |
|
152 | var DS = Math.asin(-sδ0 * sδs - cδ0 * cδs * Math.cos(α0 - αs));
|
153 |
|
154 | var u = y * cε0 - z * sε0;
|
155 | var v = y * sε0 + z * cε0;
|
156 | var α = Math.atan2(u, x);
|
157 | var δ = Math.atan(v / Math.hypot(x, u));
|
158 |
|
159 | var _base$sincos17 = _base2.default.sincos(δ),
|
160 | _base$sincos18 = _slicedToArray(_base$sincos17, 2),
|
161 | sδ = _base$sincos18[0],
|
162 | cδ = _base$sincos18[1];
|
163 |
|
164 | var _base$sincos19 = _base2.default.sincos(α0 - α),
|
165 | _base$sincos20 = _slicedToArray(_base$sincos19, 2),
|
166 | sα0α = _base$sincos20[0],
|
167 | cα0α = _base$sincos20[1];
|
168 |
|
169 | var ζ = Math.atan2(sδ0 * cδ * cα0α - sδ * cδ0, cδ * sα0α);
|
170 |
|
171 | var DE = Math.asin(-sδ0 * sδ - cδ0 * cδ * Math.cos(α0 - α));
|
172 |
|
173 | var ω1 = W1 - ζ - 5.07033 * p * Δ;
|
174 | var ω2 = W2 - ζ - 5.02626 * p * Δ;
|
175 |
|
176 | var C = (2 * r * Δ + R * R - r * r - Δ * Δ) / (4 * r * Δ);
|
177 | if (Math.sin(l - l0) < 0) {
|
178 | C = -C;
|
179 | }
|
180 | ω1 = _base2.default.pmod(ω1 + C, 2 * Math.PI);
|
181 | ω2 = _base2.default.pmod(ω2 + C, 2 * Math.PI);
|
182 |
|
183 |
|
184 | var _nutation$nutation = _nutation2.default.nutation(jde),
|
185 | _nutation$nutation2 = _slicedToArray(_nutation$nutation, 2),
|
186 | Δψ = _nutation$nutation2[0],
|
187 | Δε = _nutation$nutation2[1];
|
188 |
|
189 | var ε = ε0 + Δε;
|
190 |
|
191 |
|
192 | var _base$sincos21 = _base2.default.sincos(ε),
|
193 | _base$sincos22 = _slicedToArray(_base$sincos21, 2),
|
194 | sε = _base$sincos22[0],
|
195 | cε = _base$sincos22[1];
|
196 |
|
197 | var _base$sincos23 = _base2.default.sincos(α),
|
198 | _base$sincos24 = _slicedToArray(_base$sincos23, 2),
|
199 | sα = _base$sincos24[0],
|
200 | cα = _base$sincos24[1];
|
201 |
|
202 | α += 0.005693 * p * (cα * cl0 * cε + sα * sl0) / cδ;
|
203 | δ += 0.005693 * p * (cl0 * cε * (sε / cε * cδ - sα * sδ) + cα * sδ * sl0);
|
204 |
|
205 | var tδ = sδ / cδ;
|
206 | var Δα = (cε + sε * sα * tδ) * Δψ - cα * tδ * Δε;
|
207 | var Δδ = sε * cα * Δψ + sα * Δε;
|
208 | var αʹ = α + Δα;
|
209 | var δʹ = δ + Δδ;
|
210 |
|
211 | var _base$sincos25 = _base2.default.sincos(α0),
|
212 | _base$sincos26 = _slicedToArray(_base$sincos25, 2),
|
213 | sα0 = _base$sincos26[0],
|
214 | cα0 = _base$sincos26[1];
|
215 |
|
216 | var tδ0 = sδ0 / cδ0;
|
217 | var Δα0 = (cε + sε * sα0 * tδ0) * Δψ - cα0 * tδ0 * Δε;
|
218 | var Δδ0 = sε * cα0 * Δψ + sα0 * Δε;
|
219 | var α0ʹ = α0 + Δα0;
|
220 | var δ0ʹ = δ0 + Δδ0;
|
221 |
|
222 |
|
223 | var _base$sincos27 = _base2.default.sincos(δʹ),
|
224 | _base$sincos28 = _slicedToArray(_base$sincos27, 2),
|
225 | sδʹ = _base$sincos28[0],
|
226 | cδʹ = _base$sincos28[1];
|
227 |
|
228 | var _base$sincos29 = _base2.default.sincos(δ0ʹ),
|
229 | _base$sincos30 = _slicedToArray(_base$sincos29, 2),
|
230 | sδ0ʹ = _base$sincos30[0],
|
231 | cδ0ʹ = _base$sincos30[1];
|
232 |
|
233 | var _base$sincos31 = _base2.default.sincos(α0ʹ - αʹ),
|
234 | _base$sincos32 = _slicedToArray(_base$sincos31, 2),
|
235 | sα0ʹαʹ = _base$sincos32[0],
|
236 | cα0ʹαʹ = _base$sincos32[1];
|
237 |
|
238 |
|
239 |
|
240 | var P = Math.atan2(cδ0ʹ * sα0ʹαʹ, sδ0ʹ * cδʹ - cδ0ʹ * sδʹ * cα0ʹαʹ);
|
241 | if (P < 0) {
|
242 | P += 2 * Math.PI;
|
243 | }
|
244 | return [DS, DE, ω1, ω2, P];
|
245 | }
|
246 |
|
247 |
|
248 |
|
249 |
|
250 |
|
251 |
|
252 |
|
253 |
|
254 |
|
255 |
|
256 |
|
257 |
|
258 |
|
259 |
|
260 |
|
261 |
|
262 | function physical2(jde) {
|
263 |
|
264 | var d = jde - _base2.default.J2000;
|
265 | var p = Math.PI / 180;
|
266 | var V = 172.74 * p + 0.00111588 * p * d;
|
267 | var M = 357.529 * p + 0.9856003 * p * d;
|
268 | var sV = Math.sin(V);
|
269 | var N = 20.02 * p + 0.0830853 * p * d + 0.329 * p * sV;
|
270 | var J = 66.115 * p + 0.9025179 * p * d - 0.329 * p * sV;
|
271 |
|
272 | var _base$sincos33 = _base2.default.sincos(M),
|
273 | _base$sincos34 = _slicedToArray(_base$sincos33, 2),
|
274 | sM = _base$sincos34[0],
|
275 | cM = _base$sincos34[1];
|
276 |
|
277 | var _base$sincos35 = _base2.default.sincos(N),
|
278 | _base$sincos36 = _slicedToArray(_base$sincos35, 2),
|
279 | sN = _base$sincos36[0],
|
280 | cN = _base$sincos36[1];
|
281 |
|
282 | var _base$sincos37 = _base2.default.sincos(2 * M),
|
283 | _base$sincos38 = _slicedToArray(_base$sincos37, 2),
|
284 | s2M = _base$sincos38[0],
|
285 | c2M = _base$sincos38[1];
|
286 |
|
287 | var _base$sincos39 = _base2.default.sincos(2 * N),
|
288 | _base$sincos40 = _slicedToArray(_base$sincos39, 2),
|
289 | s2N = _base$sincos40[0],
|
290 | c2N = _base$sincos40[1];
|
291 |
|
292 | var A = 1.915 * p * sM + 0.02 * p * s2M;
|
293 | var B = 5.555 * p * sN + 0.168 * p * s2N;
|
294 | var K = J + A - B;
|
295 | var R = 1.00014 - 0.01671 * cM - 0.00014 * c2M;
|
296 | var r = 5.20872 - 0.25208 * cN - 0.00611 * c2N;
|
297 |
|
298 | var _base$sincos41 = _base2.default.sincos(K),
|
299 | _base$sincos42 = _slicedToArray(_base$sincos41, 2),
|
300 | sK = _base$sincos42[0],
|
301 | cK = _base$sincos42[1];
|
302 |
|
303 | var Δ = Math.sqrt(r * r + R * R - 2 * r * R * cK);
|
304 | var ψ = Math.asin(R / Δ * sK);
|
305 | var dd = d - Δ / 173;
|
306 | var ω1 = 210.98 * p + 877.8169088 * p * dd + ψ - B;
|
307 | var ω2 = 187.23 * p + 870.1869088 * p * dd + ψ - B;
|
308 | var C = Math.sin(ψ / 2);
|
309 | C *= C;
|
310 | if (sK > 0) {
|
311 | C = -C;
|
312 | }
|
313 | ω1 = _base2.default.pmod(ω1 + C, 2 * Math.PI);
|
314 | ω2 = _base2.default.pmod(ω2 + C, 2 * Math.PI);
|
315 | var λ = 34.35 * p + 0.083091 * p * d + 0.329 * p * sV + B;
|
316 | var DS = 3.12 * p * Math.sin(λ + 42.8 * p);
|
317 | var DE = DS - 2.22 * p * Math.sin(ψ) * Math.cos(λ + 22 * p) - 1.3 * p * (r - Δ) / Δ * Math.sin(λ - 100.5 * p);
|
318 | return [DS, DE, ω1, ω2];
|
319 | }
|
320 |
|
321 | exports.default = {
|
322 | physical: physical,
|
323 | physical2: physical2
|
324 | }; |
\ | No newline at end of file |