1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 | import base from './base';
|
12 | import coord from './coord';
|
13 | import nutation from './nutation';
|
14 | import solar from './solar';
|
15 | var cos = Math.cos,
|
16 | sin = Math.sin,
|
17 | tan = Math.tan;
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 | export function e(jde, earth) {
|
31 | var τ = base.J2000Century(jde) * 0.1;
|
32 | var L0 = l0(τ);
|
33 |
|
34 |
|
35 |
|
36 | var _solar$trueVSOP = solar.trueVSOP87(earth, jde),
|
37 | lon = _solar$trueVSOP.lon,
|
38 | lat = _solar$trueVSOP.lat,
|
39 | range = _solar$trueVSOP.range;
|
40 |
|
41 | var _nutation$nutation = nutation.nutation(jde),
|
42 | Δψ = _nutation$nutation[0],
|
43 | Δε = _nutation$nutation[1];
|
44 |
|
45 | var a = -20.4898 / 3600 * Math.PI / 180 / range;
|
46 | var λ = lon + Δψ + a;
|
47 | var ε = nutation.meanObliquity(jde) + Δε;
|
48 | var eq = new coord.Ecliptic(λ, lat).toEquatorial(ε);
|
49 |
|
50 | var E = L0 - 0.0057183 * Math.PI / 180 - eq.ra + Δψ * cos(ε);
|
51 | return base.pmod(E + Math.PI, 2 * Math.PI) - Math.PI;
|
52 | }
|
53 |
|
54 |
|
55 |
|
56 |
|
57 | var l0 = function l0(τ) {
|
58 | return base.horner(τ, 280.4664567, 360007.6982779, 0.03032028, 1.0 / 49931, -1.0 / 15300, -1.0 / 2000000) * Math.PI / 180;
|
59 | };
|
60 |
|
61 |
|
62 |
|
63 |
|
64 |
|
65 |
|
66 |
|
67 |
|
68 |
|
69 |
|
70 | export function eSmart(jde) {
|
71 | var ε = nutation.meanObliquity(jde);
|
72 | var t = tan(ε * 0.5);
|
73 | var y = t * t;
|
74 | var T = base.J2000Century(jde);
|
75 | var L0 = l0(T * 0.1);
|
76 | var e = solar.eccentricity(T);
|
77 | var M = solar.meanAnomaly(T);
|
78 |
|
79 | var _base$sincos = base.sincos(2 * L0),
|
80 | sin2L0 = _base$sincos[0],
|
81 | cos2L0 = _base$sincos[1];
|
82 |
|
83 | var sinM = sin(M);
|
84 |
|
85 | return y * sin2L0 - 2 * e * sinM + 4 * e * y * sinM * cos2L0 - y * y * sin2L0 * cos2L0 - 1.25 * e * e * sin(2 * M);
|
86 | }
|
87 |
|
88 | export default {
|
89 | e: e,
|
90 | eSmart: eSmart
|
91 | }; |
\ | No newline at end of file |