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