1 | ;
|
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 | * @copyright 2013 Sonia Keys
|
9 | * @copyright 2016 commenthol
|
10 | * @license MIT
|
11 | * @module eqtime
|
12 | */
|
13 | /**
|
14 | * Eqtime: Chapter 28, Equation of time.
|
15 | */
|
16 |
|
17 | exports.e = e;
|
18 | exports.eSmart = eSmart;
|
19 |
|
20 | var _base = require('./base');
|
21 |
|
22 | var _base2 = _interopRequireDefault(_base);
|
23 |
|
24 | var _coord = require('./coord');
|
25 |
|
26 | var _coord2 = _interopRequireDefault(_coord);
|
27 |
|
28 | var _nutation = require('./nutation');
|
29 |
|
30 | var _nutation2 = _interopRequireDefault(_nutation);
|
31 |
|
32 | var _solar = require('./solar');
|
33 |
|
34 | var _solar2 = _interopRequireDefault(_solar);
|
35 |
|
36 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
37 |
|
38 | var cos = Math.cos,
|
39 | sin = Math.sin,
|
40 | tan = Math.tan;
|
41 |
|
42 | /**
|
43 | * e computes the "equation of time" for the given JDE.
|
44 | *
|
45 | * Parameter planet must be a planetposition.Planet object for Earth obtained
|
46 | * with `new planetposition.Planet('earth')`.
|
47 | *
|
48 | * @param {Number} jde - Julian ephemeris day
|
49 | * @param {planetposition.Planet} earth - VSOP87 planet
|
50 | * @returns {Number} equation of time as an hour angle in radians.
|
51 | */
|
52 |
|
53 | function e(jde, earth) {
|
54 | var τ = _base2.default.J2000Century(jde) * 0.1;
|
55 | var L0 = l0(τ);
|
56 | // code duplicated from solar.ApparentEquatorialVSOP87 so that
|
57 | // we can keep Δψ and cε
|
58 |
|
59 | var _solar$trueVSOP = _solar2.default.trueVSOP87(earth, jde),
|
60 | lon = _solar$trueVSOP.lon,
|
61 | lat = _solar$trueVSOP.lat,
|
62 | range = _solar$trueVSOP.range;
|
63 |
|
64 | var _nutation$nutation = _nutation2.default.nutation(jde),
|
65 | _nutation$nutation2 = _slicedToArray(_nutation$nutation, 2),
|
66 | Δψ = _nutation$nutation2[0],
|
67 | Δε = _nutation$nutation2[1];
|
68 |
|
69 | var a = -20.4898 / 3600 * Math.PI / 180 / range;
|
70 | var λ = lon + Δψ + a;
|
71 | var ε = _nutation2.default.meanObliquity(jde) + Δε;
|
72 | var eq = new _coord2.default.Ecliptic(λ, lat).toEquatorial(ε);
|
73 | // (28.1) p. 183
|
74 | var E = L0 - 0.0057183 * Math.PI / 180 - eq.ra + Δψ * cos(ε);
|
75 | return _base2.default.pmod(E + Math.PI, 2 * Math.PI) - Math.PI;
|
76 | }
|
77 |
|
78 | /**
|
79 | * (28.2) p. 183
|
80 | */
|
81 | var l0 = function l0(τ) {
|
82 | return _base2.default.horner(τ, 280.4664567, 360007.6982779, 0.03032028, 1.0 / 49931, -1.0 / 15300, -1.0 / 2000000) * Math.PI / 180;
|
83 | };
|
84 |
|
85 | /**
|
86 | * eSmart computes the "equation of time" for the given JDE.
|
87 | *
|
88 | * Result is less accurate that e() but the function has the advantage
|
89 | * of not requiring the V87Planet object.
|
90 | *
|
91 | * @param {Number} jde - Julian ephemeris day
|
92 | * @returns {Number} equation of time as an hour angle in radians.
|
93 | */
|
94 | function eSmart(jde) {
|
95 | var ε = _nutation2.default.meanObliquity(jde);
|
96 | var t = tan(ε * 0.5);
|
97 | var y = t * t;
|
98 | var T = _base2.default.J2000Century(jde);
|
99 | var L0 = l0(T * 0.1);
|
100 | var e = _solar2.default.eccentricity(T);
|
101 | var M = _solar2.default.meanAnomaly(T);
|
102 |
|
103 | var _base$sincos = _base2.default.sincos(2 * L0),
|
104 | _base$sincos2 = _slicedToArray(_base$sincos, 2),
|
105 | sin2L0 = _base$sincos2[0],
|
106 | cos2L0 = _base$sincos2[1];
|
107 |
|
108 | var sinM = sin(M);
|
109 | // (28.3) p. 185
|
110 | return y * sin2L0 - 2 * e * sinM + 4 * e * y * sinM * cos2L0 - y * y * sin2L0 * cos2L0 - 1.25 * e * e * sin(2 * M);
|
111 | }
|
112 |
|
113 | exports.default = {
|
114 | e: e,
|
115 | eSmart: eSmart
|
116 | }; |
\ | No newline at end of file |