UNPKG

8.5 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.iau82 = 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 sidereal
13 */
14/**
15 * Sidereal: Chapter 12, Sidereal Time at Greenwich.
16 */
17
18exports.JDToCFrac = JDToCFrac;
19exports.mean = mean;
20exports.mean0UT = mean0UT;
21exports.apparent = apparent;
22exports.apparent0UT = apparent0UT;
23
24var _base = require('./base');
25
26var _base2 = _interopRequireDefault(_base);
27
28var _nutation = require('./nutation');
29
30var _nutation2 = _interopRequireDefault(_nutation);
31
32function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
34/**
35 * JDToCFrac returns values for use in computing sidereal time at Greenwich.
36 *
37 * Cen is centuries from J2000 of the JD at 0h UT of argument jd. This is
38 * the value to use for evaluating the IAU sidereal time polynomial.
39 * DayFrac is the fraction of jd after 0h UT. It is used to compute the
40 * final value of sidereal time.
41 *
42 * @param {number} jd - Julian Days
43 * @return {number[]} [century, fraction] century and fraction of jd after 0h UT
44 */
45function JDToCFrac(jd) {
46 var _base$modf = _base2.default.modf(jd + 0.5),
47 _base$modf2 = _slicedToArray(_base$modf, 2),
48 j0 = _base$modf2[0],
49 f = _base$modf2[1];
50
51 return [_base2.default.J2000Century(j0 - 0.5), f]; // (cen, dayFrac /* float */)
52}
53
54/**
55 * iau82 is a polynomial giving mean sidereal time at Greenwich at 0h UT.
56 *
57 * The polynomial is in centuries from J2000.0, as given by JDToCFrac.
58 * Coefficients are those adopted in 1982 by the International Astronomical
59 * Union and are given in (12.2) p. 87.
60 */
61var iau82 = exports.iau82 = [24110.54841, 8640184.812866, 0.093104, 0.0000062];
62
63/**
64 * Mean returns mean sidereal time at Greenwich for a given JD.
65 *
66 * Computation is by IAU 1982 coefficients. The result is in seconds of
67 * time and is in the range [0,86400).
68 *
69 * @param {number} jd - Julian Days
70 * @return {number}
71 */
72function mean(jd) {
73 return _base2.default.pmod(_mean(jd), 86400);
74}
75
76/**
77 * @private
78 */
79function _mean(jd) {
80 var _mean0UT2 = _mean0UT(jd),
81 _mean0UT3 = _slicedToArray(_mean0UT2, 2),
82 s = _mean0UT3[0],
83 f = _mean0UT3[1];
84
85 return s + f * 1.00273790935 * 86400;
86}
87
88/**
89 * Mean0UT returns mean sidereal time at Greenwich at 0h UT on the given JD.
90 *
91 * The result is in seconds of time and is in the range [0,86400).
92 *
93 * @param {number} jd - Julian Days
94 * @return {number}
95 */
96function mean0UT(jd /* float */) {
97 var _mean0UT4 = _mean0UT(jd),
98 _mean0UT5 = _slicedToArray(_mean0UT4, 2),
99 s = _mean0UT5[0],
100 _ = _mean0UT5[1]; // eslint-disable-line
101
102
103 return _base2.default.pmod(s, 86400);
104}
105
106/**
107 * @private
108 */
109function _mean0UT(jd /* float */) {
110 var _JDToCFrac = JDToCFrac(jd),
111 _JDToCFrac2 = _slicedToArray(_JDToCFrac, 2),
112 cen = _JDToCFrac2[0],
113 f = _JDToCFrac2[1];
114 // (12.2) p. 87
115
116
117 return [_base2.default.horner.apply(_base2.default, [cen].concat(iau82)), f]; // (sidereal, dayFrac /* float */)
118}
119
120/**
121 * Apparent returns apparent sidereal time at Greenwich for the given JD.
122 *
123 * Apparent is mean plus the nutation in right ascension.
124 *
125 * The result is in seconds of time and is in the range [0,86400).
126 *
127 * @param {number} jd - Julian Days
128 * @return {number}
129 */
130function apparent(jd) {
131 var s = _mean(jd); // seconds of time
132 var n = _nutation2.default.nutationInRA(jd); // angle (radians) of RA
133 var ns = n * 3600 * 180 / Math.PI / 15; // convert RA to time in seconds
134 return _base2.default.pmod(s + ns, 86400);
135}
136
137/**
138 * Apparent0UT returns apparent sidereal time at Greenwich at 0h UT
139 * on the given JD.
140 *
141 * The result is in seconds of time and is in the range [0,86400).
142 *
143 * @param {number} jd - Julian Days
144 * @return {number}
145 */
146function apparent0UT(jd) {
147 var _base$modf3 = _base2.default.modf(jd + 0.5),
148 _base$modf4 = _slicedToArray(_base$modf3, 2),
149 j0 = _base$modf4[0],
150 f = _base$modf4[1];
151
152 var cen = (j0 - 0.5 - _base2.default.J2000) / 36525;
153 var s = _base2.default.horner.apply(_base2.default, [cen].concat(iau82)) + f * 1.00273790935 * 86400;
154 var n = _nutation2.default.nutationInRA(j0); // angle (radians) of RA
155 var ns = n * 3600 * 180 / Math.PI / 15; // convert RA to time in seconds
156 return _base2.default.pmod(s + ns, 86400);
157}
158
159exports.default = {
160 JDToCFrac: JDToCFrac,
161 iau82: iau82,
162 mean: mean,
163 mean0UT: mean0UT,
164 apparent: apparent,
165 apparent0UT: apparent0UT
166};
\No newline at end of file