ootk 1.2.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{asc → .asc}/asconfig.json +0 -0
- package/{asc → .asc}/assembly/index.ts +0 -0
- package/{asc → .asc}/ex/asconfig.json +0 -0
- package/{asc → .asc}/ex/assembly/index.ts +0 -0
- package/{asc → .asc}/ex/index.html +0 -0
- package/{asc → .asc}/ex/package.json +0 -0
- package/{asc → .asc}/ex/tests/index.js +0 -0
- package/{asc → .asc}/package.json +0 -0
- package/{asc → .asc}/tests/index.js +0 -0
- package/.eslintrc.json +5 -5
- package/LICENSE.MD +299 -21
- package/README.md +17 -22
- package/dist/ootk.d.ts +16 -23
- package/dist/ootk.js +2 -1
- package/dist/ootk.js.LICENSE.txt +77 -0
- package/lib/objects/base-object.d.ts +40 -0
- package/lib/objects/base-object.js +109 -0
- package/lib/objects/base-object.js.map +1 -0
- package/lib/objects/detailed-sat.d.ts +66 -0
- package/lib/objects/detailed-sat.js +149 -0
- package/lib/objects/detailed-sat.js.map +1 -0
- package/lib/objects/index.d.ts +4 -0
- package/lib/objects/index.js +5 -0
- package/lib/objects/index.js.map +1 -0
- package/lib/objects/sat.d.ts +88 -0
- package/lib/objects/sat.js +141 -0
- package/lib/objects/sat.js.map +1 -0
- package/lib/objects/sensor.d.ts +40 -0
- package/lib/objects/sensor.js +88 -0
- package/lib/objects/sensor.js.map +1 -0
- package/lib/objects/space-object.d.ts +38 -0
- package/lib/objects/space-object.js +60 -0
- package/lib/objects/space-object.js.map +1 -0
- package/lib/objects/star.d.ts +46 -0
- package/lib/objects/star.js +91 -0
- package/lib/objects/star.js.map +1 -0
- package/lib/ootk.d.ts +16 -23
- package/lib/ootk.js +16 -23
- package/lib/ootk.js.map +1 -1
- package/{dist → lib/sgp4}/sgp4.d.ts +14 -21
- package/lib/{sgp4.js → sgp4/sgp4.js} +35 -27
- package/lib/sgp4/sgp4.js.map +1 -0
- package/lib/{utils/TleFormatData.d.ts → tle/tle-format-data.d.ts} +0 -0
- package/lib/{utils/TleFormatData.js → tle/tle-format-data.js} +1 -1
- package/lib/tle/tle-format-data.js.map +1 -0
- package/{dist → lib/tle}/tle.d.ts +12 -16
- package/lib/{tle.js → tle/tle.js} +13 -17
- package/lib/tle/tle.js.map +1 -0
- package/lib/{transforms.d.ts → transforms/transforms.d.ts} +12 -16
- package/lib/{transforms.js → transforms/transforms.js} +12 -16
- package/lib/transforms/transforms.js.map +1 -0
- package/{dist → lib/types}/types.d.ts +68 -0
- package/lib/types/types.js +34 -0
- package/lib/types/types.js.map +1 -0
- package/lib/utils/constants.d.ts +13 -16
- package/lib/utils/constants.js +13 -16
- package/lib/utils/constants.js.map +1 -1
- package/lib/utils/moon-math.d.ts +104 -0
- package/lib/utils/moon-math.js +387 -0
- package/lib/utils/moon-math.js.map +1 -0
- package/lib/utils/sun-math.d.ts +230 -0
- package/lib/utils/sun-math.js +421 -0
- package/lib/utils/sun-math.js.map +1 -0
- package/lib/utils/utils.d.ts +36 -0
- package/lib/{utils.js → utils/utils.js} +18 -18
- package/lib/utils/utils.js.map +1 -0
- package/package.json +2 -1
- package/dist/sat.d.ts +0 -51
- package/dist/transforms.d.ts +0 -59
- package/dist/utils.d.ts +0 -36
- package/lib/sat.d.ts +0 -51
- package/lib/sat.js +0 -81
- package/lib/sat.js.map +0 -1
- package/lib/sgp4.d.ts +0 -89
- package/lib/sgp4.js.map +0 -1
- package/lib/tle.d.ts +0 -378
- package/lib/tle.js.map +0 -1
- package/lib/transforms.js.map +0 -1
- package/lib/types.d.ts +0 -204
- package/lib/types.js +0 -2
- package/lib/types.js.map +0 -1
- package/lib/utils/TleFormatData.js.map +0 -1
- package/lib/utils.d.ts +0 -36
- package/lib/utils.js.map +0 -1
package/lib/utils/constants.js
CHANGED
|
@@ -5,23 +5,19 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @file Commonly used constants.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* in the Software without restriction, including without limitation the rights
|
|
11
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
12
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
13
|
-
* furnished to do so, subject to the following conditions:
|
|
8
|
+
* @license AGPL-3.0-or-later
|
|
9
|
+
* @Copyright (c) 2020-2022 Theodore Kruczek
|
|
14
10
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
11
|
+
* Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
|
|
12
|
+
* terms of the GNU Affero General Public License as published by the Free Software
|
|
13
|
+
* Foundation, either version 3 of the License, or (at your option) any later version.
|
|
17
14
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* SOFTWARE.
|
|
15
|
+
* Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
16
|
+
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
17
|
+
* See the GNU Affero General Public License for more details.
|
|
18
|
+
*
|
|
19
|
+
* You should have received a copy of the GNU Affero General Public License along with
|
|
20
|
+
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
25
21
|
*/
|
|
26
22
|
export var PI = Math.PI;
|
|
27
23
|
export var TAU = PI * 2; // https://tauday.com/tau-manifesto
|
|
@@ -30,7 +26,8 @@ export var x2o3 = 2.0 / 3.0;
|
|
|
30
26
|
export var temp4 = 1.5e-12;
|
|
31
27
|
export var RAD2DEG = 360 / TAU;
|
|
32
28
|
export var MINUTES_PER_DAY = 1440;
|
|
33
|
-
export var
|
|
29
|
+
export var MS_PER_DAY = 86400000;
|
|
30
|
+
export var DAY_TO_MS = 1.15741e-8;
|
|
34
31
|
export var cMPerSec = 299792458;
|
|
35
32
|
export var cKmPerSec = 299792458 / 1000;
|
|
36
33
|
export var cKmPerMs = 299792458 / 1000 / 1000;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,CAAS,IAAA,EAAE,GAAK,IAAI,GAAT,CAAU;AAC3B,MAAM,CAAC,IAAM,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,mCAAmC;AAC9D,MAAM,CAAC,IAAM,OAAO,GAAG,EAAE,GAAG,KAAK,CAAC;AAClC,MAAM,CAAC,IAAM,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;AAC9B,MAAM,CAAC,IAAM,KAAK,GAAG,OAAO,CAAC;AAE7B,MAAM,CAAC,IAAM,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC;AACjC,MAAM,CAAC,IAAM,eAAe,GAAG,IAAI,CAAC;AACpC,MAAM,CAAC,IAAM,UAAU,GAAG,QAAQ,CAAC;AACnC,MAAM,CAAC,IAAM,SAAS,GAAG,UAAU,CAAC;AACpC,MAAM,CAAC,IAAM,QAAQ,GAAG,SAAS,CAAC;AAClC,MAAM,CAAC,IAAM,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC;AAC1C,MAAM,CAAC,IAAM,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;AAChD,MAAM,CAAC,IAAM,eAAe,GAAG,IAAI,CAAC,CAAC,gCAAgC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Theodore Kruczek.
|
|
3
|
+
* @description Orbital Object ToolKit (OOTK) is a collection of tools for working
|
|
4
|
+
* with satellites and other orbital objects.
|
|
5
|
+
*
|
|
6
|
+
* @file MoonMath is a an extension to SunMath for calculating the position of the moon
|
|
7
|
+
* and its phases. This was originally created by Vladimir Agafonkin. Robert Gester's
|
|
8
|
+
* update was referenced for documentation. There were a couple of bugs in both versions
|
|
9
|
+
* so there will be some differences if you are migrating from either to this library.
|
|
10
|
+
*
|
|
11
|
+
*
|
|
12
|
+
* @license AGPL-3.0-or-later
|
|
13
|
+
* @Copyright (c) 2020-2022 Theodore Kruczek
|
|
14
|
+
*
|
|
15
|
+
* @Copyright (c) 2011-2015, Vladimir Agafonkin
|
|
16
|
+
* SunCalc is a JavaScript library for calculating sun/moon position and light phases.
|
|
17
|
+
* https://github.com/mourner/suncalc
|
|
18
|
+
*
|
|
19
|
+
* Reworked and enhanced by Robert Gester
|
|
20
|
+
* @Copyright (c) 2022 Robert Gester
|
|
21
|
+
* https://github.com/hypnos3/suncalc3
|
|
22
|
+
*
|
|
23
|
+
* moon calculations, based on http://aa.quae.nl/en/reken/hemelpositie.html formulas
|
|
24
|
+
*
|
|
25
|
+
* Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
|
|
26
|
+
* terms of the GNU Affero General Public License as published by the Free Software
|
|
27
|
+
* Foundation, either version 3 of the License, or (at your option) any later version.
|
|
28
|
+
*
|
|
29
|
+
* Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
30
|
+
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
31
|
+
* See the GNU Affero General Public License for more details.
|
|
32
|
+
*
|
|
33
|
+
* You should have received a copy of the GNU Affero General Public License along with
|
|
34
|
+
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
35
|
+
*/
|
|
36
|
+
import { Radians } from '../ootk';
|
|
37
|
+
declare type MoonIlluminationData = {
|
|
38
|
+
fraction: number;
|
|
39
|
+
phase: any;
|
|
40
|
+
phaseValue: number;
|
|
41
|
+
angle: any;
|
|
42
|
+
next: {
|
|
43
|
+
value: number;
|
|
44
|
+
date: string;
|
|
45
|
+
type: string;
|
|
46
|
+
newMoon: {
|
|
47
|
+
value: any;
|
|
48
|
+
date: string;
|
|
49
|
+
};
|
|
50
|
+
fullMoon: {
|
|
51
|
+
value: any;
|
|
52
|
+
date: string;
|
|
53
|
+
};
|
|
54
|
+
firstQuarter: {
|
|
55
|
+
value: any;
|
|
56
|
+
date: string;
|
|
57
|
+
};
|
|
58
|
+
thirdQuarter: {
|
|
59
|
+
value: any;
|
|
60
|
+
date: string;
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
export declare class MoonMath {
|
|
65
|
+
static moonCoords(d: any): {
|
|
66
|
+
ra: number;
|
|
67
|
+
dec: number;
|
|
68
|
+
dist: number;
|
|
69
|
+
};
|
|
70
|
+
static hoursLater(date: Date, h: number): Date;
|
|
71
|
+
static getMoonPosition(date: any, lat: any, lon: any): {
|
|
72
|
+
az: number;
|
|
73
|
+
el: number;
|
|
74
|
+
rng: number;
|
|
75
|
+
parallacticAngle: number;
|
|
76
|
+
};
|
|
77
|
+
private static moonCycles;
|
|
78
|
+
/**
|
|
79
|
+
* calculations for illumination parameters of the moon,
|
|
80
|
+
* based on http://idlastro.gsfc.nasa.gov/ftp/pro/astro/mphase.pro formulas and
|
|
81
|
+
* Chapter 48 of "Astronomical Algorithms" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998.
|
|
82
|
+
* @param {number | Date} date Date object or timestamp for calculating moon-illumination
|
|
83
|
+
* @return {MoonIlluminationData} result object of moon-illumination
|
|
84
|
+
*/
|
|
85
|
+
static getMoonIllumination(date: number | Date): MoonIlluminationData;
|
|
86
|
+
/**
|
|
87
|
+
* calculations for moon rise/set times are based on http://www.stargazing.net/kepler/moonrise.html article
|
|
88
|
+
* @param {number|Date} dateValue Date object or timestamp for calculating moon-times
|
|
89
|
+
* @param {number} lat latitude for calculating moon-times
|
|
90
|
+
* @param {number} lon longitude for calculating moon-times
|
|
91
|
+
* @param {boolean} [isUtc] defines if the calculation should be in utc or local time (default is local)
|
|
92
|
+
* @return {IMoonTimes} result object of sunTime
|
|
93
|
+
*/
|
|
94
|
+
static getMoonTimes(dateValue: Date, lat: Radians, lon: Radians, isUtc?: boolean): {
|
|
95
|
+
rise: any;
|
|
96
|
+
set: any;
|
|
97
|
+
ye: any;
|
|
98
|
+
alwaysUp: any;
|
|
99
|
+
alwaysDown: any;
|
|
100
|
+
highest: any;
|
|
101
|
+
};
|
|
102
|
+
private static calculateRiseSetTimes;
|
|
103
|
+
}
|
|
104
|
+
export {};
|
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Theodore Kruczek.
|
|
3
|
+
* @description Orbital Object ToolKit (OOTK) is a collection of tools for working
|
|
4
|
+
* with satellites and other orbital objects.
|
|
5
|
+
*
|
|
6
|
+
* @file MoonMath is a an extension to SunMath for calculating the position of the moon
|
|
7
|
+
* and its phases. This was originally created by Vladimir Agafonkin. Robert Gester's
|
|
8
|
+
* update was referenced for documentation. There were a couple of bugs in both versions
|
|
9
|
+
* so there will be some differences if you are migrating from either to this library.
|
|
10
|
+
*
|
|
11
|
+
*
|
|
12
|
+
* @license AGPL-3.0-or-later
|
|
13
|
+
* @Copyright (c) 2020-2022 Theodore Kruczek
|
|
14
|
+
*
|
|
15
|
+
* @Copyright (c) 2011-2015, Vladimir Agafonkin
|
|
16
|
+
* SunCalc is a JavaScript library for calculating sun/moon position and light phases.
|
|
17
|
+
* https://github.com/mourner/suncalc
|
|
18
|
+
*
|
|
19
|
+
* Reworked and enhanced by Robert Gester
|
|
20
|
+
* @Copyright (c) 2022 Robert Gester
|
|
21
|
+
* https://github.com/hypnos3/suncalc3
|
|
22
|
+
*
|
|
23
|
+
* moon calculations, based on http://aa.quae.nl/en/reken/hemelpositie.html formulas
|
|
24
|
+
*
|
|
25
|
+
* Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
|
|
26
|
+
* terms of the GNU Affero General Public License as published by the Free Software
|
|
27
|
+
* Foundation, either version 3 of the License, or (at your option) any later version.
|
|
28
|
+
*
|
|
29
|
+
* Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
30
|
+
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
31
|
+
* See the GNU Affero General Public License for more details.
|
|
32
|
+
*
|
|
33
|
+
* You should have received a copy of the GNU Affero General Public License along with
|
|
34
|
+
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
35
|
+
*/
|
|
36
|
+
import { DEG2RAD } from './constants';
|
|
37
|
+
import { MS_PER_DAY } from '../utils/constants';
|
|
38
|
+
import { SunMath } from './sun-math';
|
|
39
|
+
var MoonMath = /** @class */ (function () {
|
|
40
|
+
function MoonMath() {
|
|
41
|
+
}
|
|
42
|
+
MoonMath.moonCoords = function (d) {
|
|
43
|
+
// geocentric ecliptic coordinates of the moon
|
|
44
|
+
var L = DEG2RAD * (218.316 + 13.176396 * d); // ecliptic longitude
|
|
45
|
+
var M = DEG2RAD * (134.963 + 13.064993 * d); // mean anomaly
|
|
46
|
+
var F = DEG2RAD * (93.272 + 13.22935 * d); // mean distance
|
|
47
|
+
var l = L + DEG2RAD * 6.289 * Math.sin(M); // longitude
|
|
48
|
+
var b = DEG2RAD * 5.128 * Math.sin(F); // latitude
|
|
49
|
+
var dt = 385001 - 20905 * Math.cos(M); // distance to the moon in km
|
|
50
|
+
return {
|
|
51
|
+
ra: SunMath.rightAscension(l, b),
|
|
52
|
+
dec: SunMath.declination(l, b),
|
|
53
|
+
dist: dt,
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
MoonMath.hoursLater = function (date, h) {
|
|
57
|
+
return new Date(date.getTime() + (h * MS_PER_DAY) / 24);
|
|
58
|
+
};
|
|
59
|
+
MoonMath.getMoonPosition = function (date, lat, lon) {
|
|
60
|
+
var lw = DEG2RAD * -lon;
|
|
61
|
+
var phi = DEG2RAD * lat;
|
|
62
|
+
var d = SunMath.date2jSince2000(date);
|
|
63
|
+
var c = MoonMath.moonCoords(d);
|
|
64
|
+
var H = SunMath.siderealTime(d, lw) - c.ra;
|
|
65
|
+
var h = SunMath.elevation(H, phi, c.dec);
|
|
66
|
+
// formula 14.1 of "Astronomical Algorithms" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998.
|
|
67
|
+
var pa = Math.atan2(Math.sin(H), Math.tan(phi) * Math.cos(c.dec) - Math.sin(c.dec) * Math.cos(H));
|
|
68
|
+
h += SunMath.astroRefraction(h); // altitude correction for refraction
|
|
69
|
+
return {
|
|
70
|
+
az: SunMath.azimuth(H, phi, c.dec),
|
|
71
|
+
el: h,
|
|
72
|
+
rng: c.dist,
|
|
73
|
+
parallacticAngle: pa,
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* calculations for illumination parameters of the moon,
|
|
78
|
+
* based on http://idlastro.gsfc.nasa.gov/ftp/pro/astro/mphase.pro formulas and
|
|
79
|
+
* Chapter 48 of "Astronomical Algorithms" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998.
|
|
80
|
+
* @param {number | Date} date Date object or timestamp for calculating moon-illumination
|
|
81
|
+
* @return {MoonIlluminationData} result object of moon-illumination
|
|
82
|
+
*/
|
|
83
|
+
// eslint-disable-next-line max-statements
|
|
84
|
+
MoonMath.getMoonIllumination = function (date) {
|
|
85
|
+
var dateValue = date instanceof Date ? date.getTime() : date;
|
|
86
|
+
var lunarDaysMs = 2551442778; // The duration in days of a lunar cycle is 29.53058770576 days.
|
|
87
|
+
var firstNewMoon2000 = 947178840000; // first newMoon in the year 2000 2000-01-06 18:14
|
|
88
|
+
var d = SunMath.date2jSince2000(new Date(dateValue));
|
|
89
|
+
var s = SunMath.getSunRaDec(d);
|
|
90
|
+
var m = MoonMath.moonCoords(d);
|
|
91
|
+
var sdist = 149598000; // distance from Earth to Sun in km
|
|
92
|
+
var phi = Math.acos(Math.sin(s.dec) * Math.sin(m.dec) + Math.cos(s.dec) * Math.cos(m.dec) * Math.cos(s.ra - m.ra));
|
|
93
|
+
var inc = Math.atan2(sdist * Math.sin(phi), m.dist - sdist * Math.cos(phi));
|
|
94
|
+
var angle = Math.atan2(Math.cos(s.dec) * Math.sin(s.ra - m.ra), Math.sin(s.dec) * Math.cos(m.dec) - Math.cos(s.dec) * Math.sin(m.dec) * Math.cos(s.ra - m.ra));
|
|
95
|
+
var phaseValue = 0.5 + (0.5 * inc * (angle < 0 ? -1 : 1)) / Math.PI;
|
|
96
|
+
// calculates the difference in ms between the sirst fullMoon 2000 and given Date
|
|
97
|
+
var diffBase = dateValue - firstNewMoon2000;
|
|
98
|
+
// Calculate modulus to drop completed cycles
|
|
99
|
+
var cycleModMs = diffBase % lunarDaysMs;
|
|
100
|
+
// If negative number (date before new moon 2000) add lunarDaysMs
|
|
101
|
+
if (cycleModMs < 0) {
|
|
102
|
+
cycleModMs += lunarDaysMs;
|
|
103
|
+
}
|
|
104
|
+
var nextNewMoon = lunarDaysMs - cycleModMs + dateValue;
|
|
105
|
+
var nextFullMoon = lunarDaysMs / 2 - cycleModMs + dateValue;
|
|
106
|
+
if (nextFullMoon < dateValue) {
|
|
107
|
+
nextFullMoon += lunarDaysMs;
|
|
108
|
+
}
|
|
109
|
+
var quater = lunarDaysMs / 4;
|
|
110
|
+
var nextFirstQuarter = quater - cycleModMs + dateValue;
|
|
111
|
+
if (nextFirstQuarter < dateValue) {
|
|
112
|
+
nextFirstQuarter += lunarDaysMs;
|
|
113
|
+
}
|
|
114
|
+
var nextThirdQuarter = lunarDaysMs - quater - cycleModMs + dateValue;
|
|
115
|
+
if (nextThirdQuarter < dateValue) {
|
|
116
|
+
nextThirdQuarter += lunarDaysMs;
|
|
117
|
+
}
|
|
118
|
+
/*
|
|
119
|
+
* Calculate the fraction of the moon cycle
|
|
120
|
+
* const currentfrac = cycleModMs / lunarDaysMs;
|
|
121
|
+
*/
|
|
122
|
+
var next = Math.min(nextNewMoon, nextFirstQuarter, nextFullMoon, nextThirdQuarter);
|
|
123
|
+
// eslint-disable-next-line init-declarations
|
|
124
|
+
var phase;
|
|
125
|
+
for (var index = 0; index < MoonMath.moonCycles.length; index++) {
|
|
126
|
+
var element = MoonMath.moonCycles[index];
|
|
127
|
+
if (phaseValue >= element.from && phaseValue <= element.to) {
|
|
128
|
+
phase = element;
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
var type = '';
|
|
133
|
+
if (next === nextNewMoon) {
|
|
134
|
+
type = 'newMoon';
|
|
135
|
+
}
|
|
136
|
+
else if (next === nextFirstQuarter) {
|
|
137
|
+
type = 'firstQuarter';
|
|
138
|
+
}
|
|
139
|
+
else if (next === nextFullMoon) {
|
|
140
|
+
type = 'fullMoon';
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
type = 'thirdQuarter';
|
|
144
|
+
}
|
|
145
|
+
return {
|
|
146
|
+
fraction: (1 + Math.cos(inc)) / 2,
|
|
147
|
+
phase: phase,
|
|
148
|
+
phaseValue: phaseValue,
|
|
149
|
+
angle: angle,
|
|
150
|
+
next: {
|
|
151
|
+
value: next,
|
|
152
|
+
date: new Date(next).toISOString(),
|
|
153
|
+
type: type,
|
|
154
|
+
newMoon: {
|
|
155
|
+
value: nextNewMoon,
|
|
156
|
+
date: new Date(nextNewMoon).toISOString(),
|
|
157
|
+
},
|
|
158
|
+
fullMoon: {
|
|
159
|
+
value: nextFullMoon,
|
|
160
|
+
date: new Date(nextFullMoon).toISOString(),
|
|
161
|
+
},
|
|
162
|
+
firstQuarter: {
|
|
163
|
+
value: nextFirstQuarter,
|
|
164
|
+
date: new Date(nextFirstQuarter).toISOString(),
|
|
165
|
+
},
|
|
166
|
+
thirdQuarter: {
|
|
167
|
+
value: nextThirdQuarter,
|
|
168
|
+
date: new Date(nextThirdQuarter).toISOString(),
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
/**
|
|
174
|
+
* calculations for moon rise/set times are based on http://www.stargazing.net/kepler/moonrise.html article
|
|
175
|
+
* @param {number|Date} dateValue Date object or timestamp for calculating moon-times
|
|
176
|
+
* @param {number} lat latitude for calculating moon-times
|
|
177
|
+
* @param {number} lon longitude for calculating moon-times
|
|
178
|
+
* @param {boolean} [isUtc] defines if the calculation should be in utc or local time (default is local)
|
|
179
|
+
* @return {IMoonTimes} result object of sunTime
|
|
180
|
+
*/
|
|
181
|
+
MoonMath.getMoonTimes = function (dateValue, lat, lon, isUtc) {
|
|
182
|
+
if (isUtc === void 0) { isUtc = false; }
|
|
183
|
+
var t = new Date(dateValue);
|
|
184
|
+
if (isUtc) {
|
|
185
|
+
t.setUTCHours(0, 0, 0, 0);
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
t.setHours(0, 0, 0, 0);
|
|
189
|
+
}
|
|
190
|
+
var _a = MoonMath.calculateRiseSetTimes(t, lat, lon), rise = _a.rise, set = _a.set, ye = _a.ye;
|
|
191
|
+
var result = {
|
|
192
|
+
rise: null,
|
|
193
|
+
set: null,
|
|
194
|
+
ye: null,
|
|
195
|
+
alwaysUp: null,
|
|
196
|
+
alwaysDown: null,
|
|
197
|
+
highest: null,
|
|
198
|
+
};
|
|
199
|
+
if (rise) {
|
|
200
|
+
result.rise = new Date(MoonMath.hoursLater(dateValue, rise));
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
result.rise = NaN;
|
|
204
|
+
}
|
|
205
|
+
if (set) {
|
|
206
|
+
result.set = new Date(MoonMath.hoursLater(dateValue, set));
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
result.set = NaN;
|
|
210
|
+
}
|
|
211
|
+
if (!rise && !set) {
|
|
212
|
+
if (ye > 0) {
|
|
213
|
+
result.alwaysUp = true;
|
|
214
|
+
result.alwaysDown = false;
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
result.alwaysUp = false;
|
|
218
|
+
result.alwaysDown = true;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
else if (rise && set) {
|
|
222
|
+
result.alwaysUp = false;
|
|
223
|
+
result.alwaysDown = false;
|
|
224
|
+
result.highest = new Date(MoonMath.hoursLater(dateValue, Math.min(rise, set) + Math.abs(set - rise) / 2));
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
result.alwaysUp = false;
|
|
228
|
+
result.alwaysDown = false;
|
|
229
|
+
}
|
|
230
|
+
return result;
|
|
231
|
+
};
|
|
232
|
+
// eslint-disable-next-line max-statements
|
|
233
|
+
MoonMath.calculateRiseSetTimes = function (t, lat, lon) {
|
|
234
|
+
var hc = 0.133 * DEG2RAD;
|
|
235
|
+
var h0 = MoonMath.getMoonPosition(t, lat, lon).el - hc;
|
|
236
|
+
var h1 = 0;
|
|
237
|
+
var h2 = 0;
|
|
238
|
+
var rise = 0;
|
|
239
|
+
var set = 0;
|
|
240
|
+
var a = 0;
|
|
241
|
+
var b = 0;
|
|
242
|
+
var xe = 0;
|
|
243
|
+
var ye = 0;
|
|
244
|
+
var d = 0;
|
|
245
|
+
var roots = 0;
|
|
246
|
+
var x1 = 0;
|
|
247
|
+
var x2 = 0;
|
|
248
|
+
var dx = 0;
|
|
249
|
+
// go in 2-hour chunks, each time seeing if a 3-point quadratic curve crosses zero (which means rise or set)
|
|
250
|
+
for (var i = 1; i <= 24; i += 2) {
|
|
251
|
+
h1 = MoonMath.getMoonPosition(MoonMath.hoursLater(t, i), lat, lon).el - hc;
|
|
252
|
+
h2 = MoonMath.getMoonPosition(MoonMath.hoursLater(t, i + 1), lat, lon).el - hc;
|
|
253
|
+
a = (h0 + h2) / 2 - h1;
|
|
254
|
+
b = (h2 - h0) / 2;
|
|
255
|
+
xe = -b / (2 * a);
|
|
256
|
+
ye = (a * xe + b) * xe + h1;
|
|
257
|
+
d = b * b - 4 * a * h1;
|
|
258
|
+
roots = 0;
|
|
259
|
+
if (d >= 0) {
|
|
260
|
+
dx = Math.sqrt(d) / (Math.abs(a) * 2);
|
|
261
|
+
x1 = xe - dx;
|
|
262
|
+
x2 = xe + dx;
|
|
263
|
+
if (Math.abs(x1) <= 1) {
|
|
264
|
+
roots++;
|
|
265
|
+
}
|
|
266
|
+
if (Math.abs(x2) <= 1) {
|
|
267
|
+
roots++;
|
|
268
|
+
}
|
|
269
|
+
if (x1 < -1) {
|
|
270
|
+
x1 = x2;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
if (roots === 1) {
|
|
274
|
+
if (h0 < 0) {
|
|
275
|
+
rise = i + x1;
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
set = i + x1;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
else if (roots === 2) {
|
|
282
|
+
rise = i + (ye < 0 ? x2 : x1);
|
|
283
|
+
set = i + (ye < 0 ? x1 : x2);
|
|
284
|
+
}
|
|
285
|
+
if (rise && set) {
|
|
286
|
+
break;
|
|
287
|
+
}
|
|
288
|
+
h0 = h2;
|
|
289
|
+
}
|
|
290
|
+
return { rise: rise, set: set, ye: ye };
|
|
291
|
+
};
|
|
292
|
+
MoonMath.moonCycles = [
|
|
293
|
+
{
|
|
294
|
+
from: 0,
|
|
295
|
+
to: 0.033863193308711,
|
|
296
|
+
id: 'newMoon',
|
|
297
|
+
emoji: '🌚',
|
|
298
|
+
code: ':new_moon_with_face:',
|
|
299
|
+
name: 'New Moon',
|
|
300
|
+
weight: 1,
|
|
301
|
+
css: 'wi-moon-new',
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
from: 0.033863193308711,
|
|
305
|
+
to: 0.216136806691289,
|
|
306
|
+
id: 'waxingCrescentMoon',
|
|
307
|
+
emoji: '🌒',
|
|
308
|
+
code: ':waxing_crescent_moon:',
|
|
309
|
+
name: 'Waxing Crescent',
|
|
310
|
+
weight: 6.3825,
|
|
311
|
+
css: 'wi-moon-wax-cres',
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
from: 0.216136806691289,
|
|
315
|
+
to: 0.283863193308711,
|
|
316
|
+
id: 'firstQuarterMoon',
|
|
317
|
+
emoji: '🌓',
|
|
318
|
+
code: ':first_quarter_moon:',
|
|
319
|
+
name: 'First Quarter',
|
|
320
|
+
weight: 1,
|
|
321
|
+
css: 'wi-moon-first-quart',
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
from: 0.283863193308711,
|
|
325
|
+
to: 0.466136806691289,
|
|
326
|
+
id: 'waxingGibbousMoon',
|
|
327
|
+
emoji: '🌔',
|
|
328
|
+
code: ':waxing_gibbous_moon:',
|
|
329
|
+
name: 'Waxing Gibbous',
|
|
330
|
+
weight: 6.3825,
|
|
331
|
+
css: 'wi-moon-wax-gibb',
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
from: 0.466136806691289,
|
|
335
|
+
to: 0.533863193308711,
|
|
336
|
+
id: 'fullMoon',
|
|
337
|
+
emoji: '🌝',
|
|
338
|
+
code: ':full_moon_with_face:',
|
|
339
|
+
name: 'Full Moon',
|
|
340
|
+
weight: 1,
|
|
341
|
+
css: 'wi-moon-full',
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
from: 0.533863193308711,
|
|
345
|
+
to: 0.716136806691289,
|
|
346
|
+
id: 'waningGibbousMoon',
|
|
347
|
+
emoji: '🌖',
|
|
348
|
+
code: ':waning_gibbous_moon:',
|
|
349
|
+
name: 'Waning Gibbous',
|
|
350
|
+
weight: 6.3825,
|
|
351
|
+
css: 'wi-moon-wan-gibb',
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
from: 0.716136806691289,
|
|
355
|
+
to: 0.783863193308711,
|
|
356
|
+
id: 'thirdQuarterMoon',
|
|
357
|
+
emoji: '🌗',
|
|
358
|
+
code: ':last_quarter_moon:',
|
|
359
|
+
name: 'third Quarter',
|
|
360
|
+
weight: 1,
|
|
361
|
+
css: 'wi-moon-third-quart',
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
from: 0.783863193308711,
|
|
365
|
+
to: 0.966136806691289,
|
|
366
|
+
id: 'waningCrescentMoon',
|
|
367
|
+
emoji: '🌘',
|
|
368
|
+
code: ':waning_crescent_moon:',
|
|
369
|
+
name: 'Waning Crescent',
|
|
370
|
+
weight: 6.3825,
|
|
371
|
+
css: 'wi-moon-wan-cres',
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
from: 0.966136806691289,
|
|
375
|
+
to: 1,
|
|
376
|
+
id: 'newMoon',
|
|
377
|
+
emoji: '🌚',
|
|
378
|
+
code: ':new_moon_with_face:',
|
|
379
|
+
name: 'New Moon',
|
|
380
|
+
weight: 1,
|
|
381
|
+
css: 'wi-moon-new',
|
|
382
|
+
},
|
|
383
|
+
];
|
|
384
|
+
return MoonMath;
|
|
385
|
+
}());
|
|
386
|
+
export { MoonMath };
|
|
387
|
+
//# sourceMappingURL=moon-math.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moon-math.js","sourceRoot":"","sources":["../../src/utils/moon-math.ts"],"names":[],"mappings":"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"}
|