ootk 1.0.8 → 1.5.1

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.
Files changed (92) hide show
  1. package/{asc → .asc}/asconfig.json +0 -0
  2. package/{asc → .asc}/assembly/index.ts +0 -0
  3. package/{asc → .asc}/ex/asconfig.json +0 -0
  4. package/{asc → .asc}/ex/assembly/index.ts +0 -0
  5. package/{asc → .asc}/ex/index.html +0 -0
  6. package/{asc → .asc}/ex/package.json +0 -0
  7. package/{asc → .asc}/ex/tests/index.js +0 -0
  8. package/{asc → .asc}/package.json +0 -0
  9. package/{asc → .asc}/tests/index.js +0 -0
  10. package/.eslintrc.json +244 -0
  11. package/CHANGELOG.md +21 -1
  12. package/LICENSE.MD +299 -21
  13. package/README.md +17 -22
  14. package/dist/objects/base-object.d.ts +40 -0
  15. package/dist/objects/detailed-sat.d.ts +66 -0
  16. package/dist/objects/index.d.ts +4 -0
  17. package/dist/objects/sat.d.ts +88 -0
  18. package/dist/objects/sensor.d.ts +40 -0
  19. package/dist/objects/space-object.d.ts +38 -0
  20. package/dist/objects/star.d.ts +46 -0
  21. package/dist/ootk.d.ts +16 -21
  22. package/dist/ootk.js +2 -1
  23. package/dist/ootk.js.LICENSE.txt +77 -0
  24. package/dist/{sgp4.d.ts → sgp4/sgp4.d.ts} +14 -21
  25. package/dist/tle/tle-format-data.d.ts +6 -0
  26. package/dist/tle/tle.d.ts +374 -0
  27. package/{lib → dist/transforms}/transforms.d.ts +14 -17
  28. package/dist/{types.d.ts → types/types.d.ts} +111 -3
  29. package/dist/utils/constants.d.ts +34 -0
  30. package/dist/utils/moon-math.d.ts +104 -0
  31. package/dist/utils/sun-math.d.ts +230 -0
  32. package/dist/utils/utils.d.ts +36 -0
  33. package/lib/objects/base-object.d.ts +40 -0
  34. package/lib/objects/base-object.js +109 -0
  35. package/lib/objects/base-object.js.map +1 -0
  36. package/lib/objects/detailed-sat.d.ts +66 -0
  37. package/lib/objects/detailed-sat.js +149 -0
  38. package/lib/objects/detailed-sat.js.map +1 -0
  39. package/lib/objects/index.d.ts +4 -0
  40. package/lib/objects/index.js +5 -0
  41. package/lib/objects/index.js.map +1 -0
  42. package/lib/objects/sat.d.ts +88 -0
  43. package/lib/objects/sat.js +141 -0
  44. package/lib/objects/sat.js.map +1 -0
  45. package/lib/objects/sensor.d.ts +40 -0
  46. package/lib/objects/sensor.js +88 -0
  47. package/lib/objects/sensor.js.map +1 -0
  48. package/lib/objects/space-object.d.ts +38 -0
  49. package/lib/objects/space-object.js +60 -0
  50. package/lib/objects/space-object.js.map +1 -0
  51. package/lib/objects/star.d.ts +46 -0
  52. package/lib/objects/star.js +91 -0
  53. package/lib/objects/star.js.map +1 -0
  54. package/lib/ootk.d.ts +16 -21
  55. package/lib/ootk.js +16 -21
  56. package/lib/ootk.js.map +1 -1
  57. package/lib/{sgp4.d.ts → sgp4/sgp4.d.ts} +14 -21
  58. package/lib/{sgp4.js → sgp4/sgp4.js} +1064 -898
  59. package/lib/sgp4/sgp4.js.map +1 -0
  60. package/lib/tle/tle-format-data.d.ts +6 -0
  61. package/lib/tle/tle-format-data.js +10 -0
  62. package/lib/tle/tle-format-data.js.map +1 -0
  63. package/lib/tle/tle.d.ts +374 -0
  64. package/lib/tle/tle.js +611 -0
  65. package/lib/tle/tle.js.map +1 -0
  66. package/{dist → lib/transforms}/transforms.d.ts +14 -17
  67. package/lib/{transforms.js → transforms/transforms.js} +44 -40
  68. package/lib/transforms/transforms.js.map +1 -0
  69. package/lib/{types.d.ts → types/types.d.ts} +111 -3
  70. package/lib/types/types.js +34 -0
  71. package/lib/types/types.js.map +1 -0
  72. package/lib/utils/constants.d.ts +19 -15
  73. package/lib/utils/constants.js +20 -16
  74. package/lib/utils/constants.js.map +1 -1
  75. package/lib/utils/moon-math.d.ts +104 -0
  76. package/lib/utils/moon-math.js +387 -0
  77. package/lib/utils/moon-math.js.map +1 -0
  78. package/lib/utils/sun-math.d.ts +230 -0
  79. package/lib/utils/sun-math.js +421 -0
  80. package/lib/utils/sun-math.js.map +1 -0
  81. package/lib/utils/utils.d.ts +36 -0
  82. package/lib/utils/utils.js +81 -0
  83. package/lib/utils/utils.js.map +1 -0
  84. package/package.json +4 -3
  85. package/dist/utils.d.ts +0 -34
  86. package/lib/sgp4.js.map +0 -1
  87. package/lib/transforms.js.map +0 -1
  88. package/lib/types.js +0 -2
  89. package/lib/types.js.map +0 -1
  90. package/lib/utils.d.ts +0 -34
  91. package/lib/utils.js +0 -62
  92. package/lib/utils.js.map +0 -1
@@ -0,0 +1,421 @@
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 SunMath is a collection of functions for calculating the position of the sun
7
+ * and other stars. 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
+ * sun calculations are based on http://aa.quae.nl/en/reken/zonpositie.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, MS_PER_DAY } from './constants';
37
+ var TAU = Math.PI * 2; // https://tauday.com/tau-manifesto
38
+ var SunMath = /** @class */ (function () {
39
+ function SunMath() {
40
+ }
41
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
42
+ SunMath.julianCycle = function (d, lw) {
43
+ var lonOffset = lw / TAU;
44
+ return Math.round(d - SunMath.J0 - lonOffset);
45
+ };
46
+ /**
47
+ * calculates the obderver angle
48
+ * @param {number} alt the observer altitude (in meters) relative to the horizon
49
+ * @returns {number} height for further calculations
50
+ */
51
+ SunMath.observerAngle = function (alt) {
52
+ return (-2.076 * Math.sqrt(alt)) / 60;
53
+ };
54
+ /**
55
+ * get solar mean anomaly
56
+ * @param {number} d - julian day
57
+ * @returns {number} solar mean anomaly
58
+ */
59
+ SunMath.solarMeanAnomaly = function (d) {
60
+ return DEG2RAD * (357.5291 + 0.98560028 * d);
61
+ };
62
+ /**
63
+ * convert Julian calendar to date object
64
+ * @param {number} julian day number in Julian calendar to convert
65
+ * @return {number} result date as timestamp
66
+ */
67
+ SunMath.julian2date = function (julian) {
68
+ return new Date((julian - SunMath.J1970) * MS_PER_DAY);
69
+ };
70
+ /**
71
+ * get number of days for a dateValue since 2000
72
+ *
73
+ * See: https://en.wikipedia.org/wiki/Epoch_(astronomy)
74
+ *
75
+ * @param {number} date date as timestamp to get days
76
+ * @return {number} count of days
77
+ */
78
+ SunMath.date2jSince2000 = function (date) {
79
+ return date.getTime() / MS_PER_DAY + SunMath.J1970 - SunMath.J2000;
80
+ };
81
+ /**
82
+ * get right ascension
83
+ * @param {number} l - ecliptic longitude
84
+ * @param {number} b - ecliptic latitude
85
+ * @returns {number} right ascension
86
+ */
87
+ SunMath.rightAscension = function (l, b) {
88
+ return Math.atan2(Math.sin(l) * Math.cos(SunMath.e) - Math.tan(b) * Math.sin(SunMath.e), Math.cos(l));
89
+ };
90
+ /**
91
+ * get declination
92
+ * @param {number} l - ecliptic longitude
93
+ * @param {number} b - ecliptic latitude
94
+ * @returns {number} declination
95
+ */
96
+ SunMath.declination = function (l, b) {
97
+ return Math.asin(Math.sin(b) * Math.cos(SunMath.e) + Math.cos(b) * Math.sin(SunMath.e) * Math.sin(l));
98
+ };
99
+ /**
100
+ * get azimuth
101
+ * @param {number} H - siderealTime
102
+ * @param {Radians} phi - latitude
103
+ * @param {Radians} dec - The declination of the sun
104
+ * @returns {Radians} azimuth in rad
105
+ */
106
+ SunMath.azimuth = function (H, phi, dec) {
107
+ return Math.PI + Math.atan2(Math.sin(H), Math.cos(H) * Math.sin(phi) - Math.tan(dec) * Math.cos(phi));
108
+ };
109
+ /**
110
+ * get elevation (sometimes called altitude)
111
+ * @param {number} H - siderealTime
112
+ * @param {Radians} phi - latitude
113
+ * @param {Radians} dec - The declination of the sun
114
+ * @returns {Radians} elevation
115
+ */
116
+ SunMath.elevation = function (H, phi, dec) {
117
+ return Math.asin(Math.sin(phi) * Math.sin(dec) + Math.cos(phi) * Math.cos(dec) * Math.cos(H));
118
+ };
119
+ /**
120
+ * side real time
121
+ * @param {number} d - julian day
122
+ * @param {Radians} lw - longitude of the observer
123
+ * @returns {number} sidereal time
124
+ */
125
+ SunMath.siderealTime = function (d, lw) {
126
+ return DEG2RAD * (280.16 + 360.9856235 * d) - lw;
127
+ };
128
+ /**
129
+ * get astro refraction
130
+ * @param {Radians} h - elevation
131
+ * @returns {number} refraction
132
+ */
133
+ SunMath.astroRefraction = function (h) {
134
+ if (h < 0) {
135
+ h = 0;
136
+ }
137
+ return 0.0002967 / Math.tan(h + 0.00312536 / (h + 0.08901179));
138
+ };
139
+ /**
140
+ * ecliptic longitude
141
+ * @param {number} M - solar mean anomaly
142
+ * @returns {number} ecliptic longitude
143
+ */
144
+ SunMath.eclipticLongitude = function (M) {
145
+ var C = DEG2RAD * (1.9148 * Math.sin(M) + 0.02 * Math.sin(2 * M) + 0.0003 * Math.sin(3 * M));
146
+ var P = DEG2RAD * 102.9372; // perihelion of Earth
147
+ return M + C + P + Math.PI; // Sun's mean longitude
148
+ };
149
+ /**
150
+ * ecliptic latitude
151
+ * @param {number} B - ?
152
+ * @returns {number} ecliptic latitude
153
+ */
154
+ SunMath.eclipticLatitude = function (B) {
155
+ var C = TAU / 360;
156
+ var L = B - 0.00569 - 0.00478 * Math.sin(C * B);
157
+ return TAU * (L + 0.0003 * Math.sin(C * 2 * L));
158
+ };
159
+ /**
160
+ * Julian cycle
161
+ * @param {number} d - number of days
162
+ * @param {number} lw - rad * -lng;
163
+ * @returns {number} julian cycle
164
+ */
165
+ SunMath.julianCyle = function (d, lw) {
166
+ return Math.round(d - SunMath.J0 - lw / ((2 * TAU) / 2));
167
+ };
168
+ /**
169
+ * approx transit
170
+ * @param {number} Ht - hourAngle
171
+ * @param {number} lw - rad * -lng
172
+ * @param {number} n - Julian cycle
173
+ * @returns {number} approx transit
174
+ */
175
+ SunMath.approxTransit = function (Ht, lw, n) {
176
+ return SunMath.J0 + (Ht + lw) / TAU + n;
177
+ };
178
+ /**
179
+ * solar transit in Julian
180
+ * @param {number} ds - approxTransit
181
+ * @param {number} M - solar mean anomal
182
+ * @param {number} L - ecliptic longitude
183
+ * @returns {number} solar transit in Julian
184
+ */
185
+ SunMath.solarTransitJulian = function (ds, M, L) {
186
+ return SunMath.J2000 + ds + 0.0053 * Math.sin(M) - 0.0069 * Math.sin(2 * L);
187
+ };
188
+ /**
189
+ * hour angle
190
+ * @param {number} h - heigh at 0
191
+ * @param {number} phi - rad * lat;
192
+ * @param {number} dec - declination
193
+ * @returns {number} hour angle
194
+ */
195
+ SunMath.hourAngle = function (h, phi, dec) {
196
+ return Math.acos((Math.sin(h) - Math.sin(phi) * Math.sin(dec)) / (Math.cos(phi) * Math.cos(dec)));
197
+ };
198
+ /**
199
+ * returns set time for the given sun altitude
200
+ * @param {number} h - heigh at 0
201
+ * @param {number} lw - rad * -lng
202
+ * @param {number} phi - rad * lat;
203
+ * @param {number} dec - declination
204
+ * @param {number} n - Julian cycle
205
+ * @param {number} M - solar mean anomal
206
+ * @param {number} L - ecliptic longitude
207
+ * @returns {number} set time
208
+ */
209
+ SunMath.getSetJulian = function (h, lw, phi, dec, n, M, L) {
210
+ var w = SunMath.hourAngle(h, phi, dec);
211
+ var a = SunMath.approxTransit(w, lw, n);
212
+ return SunMath.solarTransitJulian(a, M, L);
213
+ };
214
+ /**
215
+ * returns set time for the given sun altitude
216
+ * @param {Meters} alt - altitude at 0
217
+ * @param {Radians} lw - -lng
218
+ * @param {Radians} phi - lat;
219
+ * @param {Radians} dec - declination
220
+ * @param {number} n - Julian cycle
221
+ * @param {number} M - solar mean anomal
222
+ * @param {number} L - ecliptic longitude
223
+ * @return {J2000Value} sunset time in days since 2000
224
+ */
225
+ SunMath.getSetJ = function (alt, lw, phi, dec, n, M, L) {
226
+ var w = SunMath.hourAngle(alt, phi, dec);
227
+ var a = SunMath.approxTransit(w, lw, n);
228
+ return SunMath.solarTransitJulian(a, M, L);
229
+ };
230
+ /**
231
+ * calculates sun times for a given date and latitude/longitude
232
+ * @param {Date|number} dateVal Date object for calculating sun-times
233
+ * @param {number} lat latitude for calculating sun-times
234
+ * @param {number} lon longitude for calculating sun-times
235
+ * @param {number} [alt=0] the observer height (in meters) relative to the horizon
236
+ * @param {boolean} [isUtc=false] defines if the calculation should be in utc or local time (default is local)
237
+ * @return {SunTime} result object of sunTime
238
+ */
239
+ SunMath.getTimes = function (dateVal, lat, lon, alt, isUtc) {
240
+ if (alt === void 0) { alt = 0; }
241
+ if (isUtc === void 0) { isUtc = false; }
242
+ if (isNaN(lat)) {
243
+ throw new Error('latitude missing');
244
+ }
245
+ if (isNaN(lon)) {
246
+ throw new Error('longitude missing');
247
+ }
248
+ var date = new Date(dateVal);
249
+ if (isUtc) {
250
+ date.setUTCHours(12, 0, 0, 0);
251
+ }
252
+ else {
253
+ date.setHours(12, 0, 0, 0);
254
+ }
255
+ var i = 0;
256
+ var len = 0;
257
+ var time = [];
258
+ var h0 = 0;
259
+ var Jset = 0;
260
+ var Jrise = 0;
261
+ var _a = SunMath.calculateJnoon(lon, lat, alt, date), Jnoon = _a.Jnoon, dh = _a.dh, lw = _a.lw, phi = _a.phi, dec = _a.dec, n = _a.n, M = _a.M, L = _a.L;
262
+ // Determine when the sun is at its highest and lowest (darkest) points.
263
+ var result = {
264
+ solarNoon: SunMath.julian2date(Jnoon),
265
+ nadir: SunMath.julian2date(Jnoon + 0.5), // https://github.com/mourner/suncalc/pull/125
266
+ };
267
+ // Add all other unique times using Jnoon as a reference
268
+ for (i = 0, len = SunMath.times.length; i < len; i += 1) {
269
+ time = SunMath.times[i];
270
+ h0 = (time[0] + dh) * DEG2RAD;
271
+ Jset = SunMath.getSetJ(h0, lw, phi, dec, n, M, L);
272
+ Jrise = Jnoon - (Jset - Jnoon);
273
+ result[time[1]] = SunMath.julian2date(Jrise);
274
+ result[time[2]] = SunMath.julian2date(Jset);
275
+ }
276
+ return result;
277
+ };
278
+ SunMath.calculateJnoon = function (lon, lat, alt, date) {
279
+ var lw = DEG2RAD * -lon;
280
+ var phi = DEG2RAD * lat;
281
+ var dh = SunMath.observerAngle(alt);
282
+ var d = SunMath.date2jSince2000(date);
283
+ var n = SunMath.julianCycle(d, lw);
284
+ var ds = SunMath.approxTransit(0, lw, n);
285
+ var M = SunMath.solarMeanAnomaly(ds);
286
+ var L = SunMath.eclipticLongitude(M);
287
+ var dec = SunMath.declination(L, 0);
288
+ var Jnoon = SunMath.solarTransitJulian(ds, M, L);
289
+ return { Jnoon: Jnoon, dh: dh, lw: lw, phi: phi, dec: dec, n: n, M: M, L: L };
290
+ };
291
+ /**
292
+ * calculates time for a given azimuth angle for a given date and latitude/longitude
293
+ * @param {number|Date} dateValue Date object or timestamp for calculating sun-time
294
+ * @param {Degrees} lat latitude for calculating sun-time
295
+ * @param {Degrees} lon longitude for calculating sun-time
296
+ * @param {Radians | Degrees} az azimuth for calculating sun-time
297
+ * @param {boolean} [isDegrees] true if the az angle is in degree and not in rad
298
+ * @return {Date} result time of sun-time
299
+ */
300
+ SunMath.getSunTimeByAzimuth = function (dateValue, lat, lon, az, isDegrees) {
301
+ if (isDegrees === void 0) { isDegrees = false; }
302
+ if (isNaN(az)) {
303
+ throw new Error('azimuth missing');
304
+ }
305
+ if (isNaN(lat)) {
306
+ throw new Error('latitude missing');
307
+ }
308
+ if (isNaN(lon)) {
309
+ throw new Error('longitude missing');
310
+ }
311
+ if (isDegrees) {
312
+ az *= DEG2RAD;
313
+ }
314
+ var date = new Date(dateValue);
315
+ var lw = DEG2RAD * -lon;
316
+ var phi = DEG2RAD * lat;
317
+ var dateVal = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0).getTime();
318
+ var addval = MS_PER_DAY; // / 2);
319
+ dateVal += addval;
320
+ while (addval > 200) {
321
+ // let nazi = this.getPosition(dateVal, lat, lng).azimuth;
322
+ var d = SunMath.date2jSince2000(new Date(dateVal));
323
+ var c = SunMath.getSunRaDec(d);
324
+ var H = SunMath.siderealTime(d, lw) - c.ra;
325
+ var newAz = SunMath.getAzimuth(H, phi, c.dec);
326
+ addval /= 2;
327
+ if (newAz < az) {
328
+ dateVal += addval;
329
+ }
330
+ else {
331
+ dateVal -= addval;
332
+ }
333
+ }
334
+ return new Date(Math.floor(dateVal));
335
+ };
336
+ /**
337
+ * get azimuth
338
+ * @param {number} H - siderealTime
339
+ * @param {Radians} phi - latitude
340
+ * @param {Radians} dec - The declination of the sun
341
+ * @returns {Radians} azimuth
342
+ */
343
+ SunMath.getAzimuth = function (H, phi, dec) {
344
+ return Math.atan2(Math.sin(H), Math.cos(H) * Math.sin(phi) - Math.tan(dec) * Math.cos(phi)) + Math.PI;
345
+ };
346
+ /**
347
+ * Convert Date to Solar Date/Time
348
+ *
349
+ * Based on https://www.pveducation.org/pvcdrom/properties-of-sunlight/solar-time
350
+ *
351
+ * See: https://github.com/mourner/suncalc/pull/156
352
+ *
353
+ * @param {date} date - Date to calculate for
354
+ * @param {number} utcOffset - UTC offset in hours
355
+ * @param {Degrees} lon - Longitude in degrees
356
+ * @returns {Date} - Date Object in Solar Time
357
+ */
358
+ SunMath.getSolarTime = function (date, utcOffset, lon) {
359
+ // calculate the day of year
360
+ var start = new Date();
361
+ start.setUTCFullYear(date.getUTCFullYear(), 0, 1);
362
+ start.setUTCHours(0, 0, 0, 0);
363
+ var diff = date.getTime() - start.getTime();
364
+ var dayOfYear = Math.floor(diff / MS_PER_DAY);
365
+ var b = (360 / 365) * (dayOfYear - 81) * DEG2RAD;
366
+ var equationOfTime = 9.87 * Math.sin(2 * b) - 7.53 * Math.cos(b) - 1.5 * Math.sin(b);
367
+ var localSolarTimeMeridian = 15 * utcOffset;
368
+ var timeCorrection = equationOfTime + 4 * (lon - localSolarTimeMeridian);
369
+ return new Date(date.getTime() + timeCorrection * 60 * 1000);
370
+ };
371
+ SunMath.getStarAzEl = function (date, lat, lon, ra, dec) {
372
+ var lw = -lon * DEG2RAD;
373
+ var phi = lat * DEG2RAD;
374
+ var d = SunMath.date2jSince2000(date);
375
+ var H = SunMath.siderealTime(d, lw) - (ra / 12) * Math.PI;
376
+ var h = SunMath.elevation(H, phi, (dec / 180) * Math.PI);
377
+ h += SunMath.astroRefraction(h); // elevation correction for refraction
378
+ return {
379
+ az: SunMath.azimuth(H, phi, (dec / 180) * Math.PI),
380
+ el: h,
381
+ };
382
+ };
383
+ SunMath.getSunAzEl = function (date, lat, lon) {
384
+ var lw = -lon * DEG2RAD;
385
+ var phi = lat * DEG2RAD;
386
+ var d = SunMath.date2jSince2000(date);
387
+ var c = SunMath.getSunRaDec(d);
388
+ var H = SunMath.siderealTime(d, lw) - c.ra;
389
+ return {
390
+ az: SunMath.azimuth(H, phi, c.dec),
391
+ el: SunMath.elevation(H, phi, c.dec),
392
+ };
393
+ };
394
+ SunMath.getSunRaDec = function (d) {
395
+ var M = SunMath.solarMeanAnomaly(d);
396
+ var L = SunMath.eclipticLongitude(M);
397
+ return {
398
+ dec: SunMath.declination(L, 0),
399
+ ra: SunMath.rightAscension(L, 0),
400
+ };
401
+ };
402
+ SunMath.J1970 = 2440587.5;
403
+ SunMath.J2000 = 2451545;
404
+ SunMath.J0 = 0.0009;
405
+ SunMath.e = DEG2RAD * 23.4397;
406
+ SunMath.times = [
407
+ [6, 'goldenHourDawnEnd', 'goldenHourDuskStart'],
408
+ [-0.3, 'sunriseEnd', 'sunsetStart'],
409
+ [-0.833, 'sunriseStart', 'sunsetEnd'],
410
+ [-1, 'goldenHourDawnStart', 'goldenHourDuskEnd'],
411
+ [-4, 'blueHourDawnEnd', 'blueHourDuskStart'],
412
+ [-6, 'civilDawn', 'civilDusk'],
413
+ [-8, 'blueHourDawnStart', 'blueHourDuskEnd'],
414
+ [-12, 'nauticalDawn', 'nauticalDusk'],
415
+ [-15, 'amateurDawn', 'amateurDusk'],
416
+ [-18, 'astronomicalDawn', 'astronomicalDusk'], // ASTRO_DAWN
417
+ ];
418
+ return SunMath;
419
+ }());
420
+ export { SunMath };
421
+ //# sourceMappingURL=sun-math.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sun-math.js","sourceRoot":"","sources":["../../src/utils/sun-math.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
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 The Utils module.
7
+ *
8
+ * @license AGPL-3.0-or-later
9
+ * @Copyright (c) 2020-2022 Theodore Kruczek
10
+ *
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.
14
+ *
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/>.
21
+ */
22
+ import * as Types from '../types/types';
23
+ import { MoonMath } from './moon-math';
24
+ import { SunMath } from './sun-math';
25
+ declare class Utils {
26
+ static Types: typeof Types;
27
+ static distance(pos1: Types.EciVec3, pos2: Types.EciVec3): Types.Kilometer;
28
+ private static sign;
29
+ static dopplerFactor(location: Types.EciVec3, position: Types.EciVec3, velocity: Types.EciVec3): Types.Kilometer;
30
+ static createVec(start: number, stop: number, step: number): number[];
31
+ static jday: (year?: number, mon?: number, day?: number, hr?: number, minute?: number, sec?: number) => number;
32
+ static roundToNDecimalPlaces(value: number, places: number): number;
33
+ static SunMath: typeof SunMath;
34
+ static MoonMath: typeof MoonMath;
35
+ }
36
+ export { Utils };
@@ -0,0 +1,81 @@
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 The Utils module.
7
+ *
8
+ * @license AGPL-3.0-or-later
9
+ * @Copyright (c) 2020-2022 Theodore Kruczek
10
+ *
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.
14
+ *
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/>.
21
+ */
22
+ import * as Types from '../types/types';
23
+ import { DAY_TO_MS } from './constants';
24
+ import { MoonMath } from './moon-math';
25
+ import { SunMath } from './sun-math';
26
+ var Utils = /** @class */ (function () {
27
+ function Utils() {
28
+ }
29
+ Utils.distance = function (pos1, pos2) {
30
+ return Math.sqrt(Math.pow((pos1.x - pos2.x), 2) + Math.pow((pos1.y - pos2.y), 2) + Math.pow((pos1.z - pos2.z), 2));
31
+ };
32
+ Utils.dopplerFactor = function (location, position, velocity) {
33
+ var mfactor = 7.292115e-5;
34
+ var c = 299792.458; // Speed of light in km/s
35
+ var range = {
36
+ x: position.x - location.x,
37
+ y: position.y - location.y,
38
+ z: position.z - location.z,
39
+ };
40
+ var distance = Math.sqrt(Math.pow(range.x, 2) + Math.pow(range.y, 2) + Math.pow(range.z, 2));
41
+ var rangeVel = {
42
+ x: velocity.x + mfactor * location.y,
43
+ y: velocity.y - mfactor * location.x,
44
+ z: velocity.z,
45
+ };
46
+ var rangeRate = (range.x * rangeVel.x + range.y * rangeVel.y + range.z * rangeVel.z) / distance;
47
+ return 1 + (rangeRate / c) * Utils.sign(rangeRate);
48
+ };
49
+ Utils.createVec = function (start, stop, step) {
50
+ var array = [];
51
+ for (var i = start; i <= stop; i += step) {
52
+ array.push(i);
53
+ }
54
+ return array;
55
+ };
56
+ Utils.roundToNDecimalPlaces = function (value, places) {
57
+ return Math.round(value * Math.pow(10, places)) / Math.pow(10, places);
58
+ };
59
+ Utils.Types = Types;
60
+ Utils.sign = function (value) { return (value >= 0 ? 1 : -1); };
61
+ // eslint-disable-next-line max-params
62
+ Utils.jday = function (year, mon, day, hr, minute, sec) {
63
+ if (!year) {
64
+ var now = new Date();
65
+ var jDayStart = new Date(now.getUTCFullYear(), 0, 0);
66
+ var jDayDiff = now.getDate() - jDayStart.getDate();
67
+ return Math.floor(jDayDiff / DAY_TO_MS);
68
+ }
69
+ return (367.0 * year -
70
+ Math.floor(7 * (year + Math.floor((mon + 9) / 12.0)) * 0.25) +
71
+ Math.floor((275 * mon) / 9.0) +
72
+ day +
73
+ 1721013.5 +
74
+ ((sec / 60.0 + minute) / 60.0 + hr) / 24.0);
75
+ };
76
+ Utils.SunMath = SunMath;
77
+ Utils.MoonMath = MoonMath;
78
+ return Utils;
79
+ }());
80
+ export { Utils };
81
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ootk",
3
- "version": "1.0.8",
3
+ "version": "1.5.1",
4
4
  "description": "Orbital Object Toolkit including SGP4 Propagator and Coordinate Transforms",
5
5
  "main": "dist/ootk.js",
6
6
  "scripts": {
@@ -57,8 +57,8 @@
57
57
  "@babel/preset-env": "^7.11.5",
58
58
  "@types/jest": "^28.1.5",
59
59
  "@types/node-fetch": "^2.6.2",
60
- "@typescript-eslint/eslint-plugin": "^4.13.0",
61
- "@typescript-eslint/parser": "^4.13.0",
60
+ "@typescript-eslint/eslint-plugin": "^5.30.7",
61
+ "@typescript-eslint/parser": "^5.30.7",
62
62
  "assemblyscript": "^0.20.13",
63
63
  "auto-changelog": "^2.2.1",
64
64
  "babel-eslint": "^10.1.0",
@@ -68,6 +68,7 @@
68
68
  "eslint": "^7.9.0",
69
69
  "jest": "^26.4.2",
70
70
  "node-fetch": "^2.6.7",
71
+ "prettier": "^2.7.1",
71
72
  "typescript": "^4.1.3",
72
73
  "webpack": "^5.11.1",
73
74
  "webpack-cli": "^4.10.0"
package/dist/utils.d.ts DELETED
@@ -1,34 +0,0 @@
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 The Utils module.
7
- *
8
- * Permission is hereby granted, free of charge, to any person obtaining a copy
9
- * of this software and associated documentation files (the "Software"), to deal
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:
14
- *
15
- * The above copyright notice and this permission notice shall be included in all
16
- * copies or substantial portions of the Software.
17
- *
18
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24
- * SOFTWARE.
25
- */
26
- import * as Types from './types';
27
- declare class Utils {
28
- static Types: typeof Types;
29
- static distance(pos1: Types.EciVec3, pos2: Types.EciVec3): Types.Kilometer;
30
- private static sign;
31
- static dopplerFactor(location: Types.EciVec3, position: Types.EciVec3, velocity: Types.EciVec3): Types.Kilometer;
32
- static createVec(start: number, stop: number, step: number): number[];
33
- }
34
- export { Utils };