ootk 1.8.0 → 2.0.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.
Files changed (72) hide show
  1. package/.eslintrc.json +1 -1
  2. package/dist/objects/base-object.d.ts +1 -1
  3. package/dist/objects/detailed-sat.d.ts +1 -1
  4. package/dist/objects/sat.d.ts +4 -1
  5. package/dist/objects/sensor.d.ts +35 -21
  6. package/dist/objects/space-object.d.ts +1 -1
  7. package/dist/objects/star.d.ts +6 -6
  8. package/dist/ootk.d.ts +2 -1
  9. package/dist/ootk.js +1 -1
  10. package/dist/ootk.js.LICENSE.txt +3 -3
  11. package/dist/sgp4/Sgp4Assembly.d.ts +5 -0
  12. package/dist/sgp4/sgp4.d.ts +34 -34
  13. package/dist/tle/tle.d.ts +3 -3
  14. package/dist/transforms/transforms.d.ts +1 -1
  15. package/dist/types/types.d.ts +40 -32
  16. package/dist/utils/constants.d.ts +1 -1
  17. package/dist/utils/moon-math.d.ts +6 -6
  18. package/dist/utils/sun-math.d.ts +8 -8
  19. package/dist/utils/utils.d.ts +4 -3
  20. package/lib/objects/base-object.d.ts +1 -1
  21. package/lib/objects/base-object.js +1 -1
  22. package/lib/objects/base-object.js.map +1 -1
  23. package/lib/objects/detailed-sat.d.ts +1 -1
  24. package/lib/objects/detailed-sat.js +1 -1
  25. package/lib/objects/sat.d.ts +4 -1
  26. package/lib/objects/sat.js +42 -7
  27. package/lib/objects/sat.js.map +1 -1
  28. package/lib/objects/sensor.d.ts +35 -21
  29. package/lib/objects/sensor.js +22 -7
  30. package/lib/objects/sensor.js.map +1 -1
  31. package/lib/objects/space-object.d.ts +1 -1
  32. package/lib/objects/space-object.js +1 -1
  33. package/lib/objects/star.d.ts +6 -6
  34. package/lib/objects/star.js +7 -7
  35. package/lib/objects/star.js.map +1 -1
  36. package/lib/ootk.d.ts +2 -1
  37. package/lib/ootk.js +2 -1
  38. package/lib/ootk.js.map +1 -1
  39. package/lib/sgp4/Sgp4Assembly.d.ts +5 -0
  40. package/lib/sgp4/Sgp4Assembly.js +75 -0
  41. package/lib/sgp4/Sgp4Assembly.js.map +1 -0
  42. package/lib/sgp4/sgp4.d.ts +34 -34
  43. package/lib/sgp4/sgp4.js +2927 -2906
  44. package/lib/sgp4/sgp4.js.map +1 -1
  45. package/lib/tle/tle.d.ts +3 -3
  46. package/lib/tle/tle.js +1 -1
  47. package/lib/transforms/transforms.d.ts +1 -1
  48. package/lib/transforms/transforms.js +8 -8
  49. package/lib/transforms/transforms.js.map +1 -1
  50. package/lib/types/types.d.ts +40 -32
  51. package/lib/types/types.js.map +1 -1
  52. package/lib/utils/constants.d.ts +1 -1
  53. package/lib/utils/constants.js +1 -1
  54. package/lib/utils/moon-math.d.ts +6 -6
  55. package/lib/utils/moon-math.js +4 -4
  56. package/lib/utils/moon-math.js.map +1 -1
  57. package/lib/utils/sun-math.d.ts +8 -8
  58. package/lib/utils/sun-math.js +17 -17
  59. package/lib/utils/sun-math.js.map +1 -1
  60. package/lib/utils/utils.d.ts +4 -3
  61. package/lib/utils/utils.js +2 -2
  62. package/lib/utils/utils.js.map +1 -1
  63. package/package.json +8 -8
  64. package/.asc/asconfig.json +0 -22
  65. package/.asc/assembly/index.ts +0 -1143
  66. package/.asc/ex/asconfig.json +0 -22
  67. package/.asc/ex/assembly/index.ts +0 -5
  68. package/.asc/ex/index.html +0 -10
  69. package/.asc/ex/package.json +0 -19
  70. package/.asc/ex/tests/index.js +0 -4
  71. package/.asc/package.json +0 -19
  72. package/.asc/tests/index.js +0 -4
package/dist/tle/tle.d.ts CHANGED
@@ -6,7 +6,7 @@
6
6
  * @file The TLE module contains a collection of functions for working with TLEs.
7
7
  *
8
8
  * @license AGPL-3.0-or-later
9
- * @Copyright (c) 2020-2022 Theodore Kruczek
9
+ * @Copyright (c) 2020-2023 Theodore Kruczek
10
10
  *
11
11
  * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
12
12
  * terms of the GNU Affero General Public License as published by the Free Software
@@ -20,7 +20,7 @@
20
20
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
21
21
  */
22
22
  import { Line1Data, Line2Data, TleLine1, TleLine2 } from '../types/types';
23
- declare type TleData = {
23
+ type TleData = {
24
24
  satNum: number;
25
25
  intlDes: string;
26
26
  epochYear: number;
@@ -35,7 +35,7 @@ declare type TleData = {
35
35
  meanAnomaly: number;
36
36
  meanMotion: number;
37
37
  };
38
- declare type TleDataFull = Line1Data & Line2Data;
38
+ type TleDataFull = Line1Data & Line2Data;
39
39
  export declare class Tle {
40
40
  private static lineNumber;
41
41
  private static satNum;
@@ -8,7 +8,7 @@
8
8
  * on some of the functions in satellite.js.
9
9
  *
10
10
  * @license AGPL-3.0-or-later
11
- * @Copyright (c) 2020-2022 Theodore Kruczek
11
+ * @Copyright (c) 2020-2023 Theodore Kruczek
12
12
  *
13
13
  * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
14
14
  * terms of the GNU Affero General Public License as published by the Free Software
@@ -1,31 +1,39 @@
1
- export declare type Kilometer = number;
2
- export declare type Radians = number;
3
- export declare type Degrees = number;
4
- export declare type Vec3<Type> = {
1
+ type Distinct<T, DistinctName> = T & {
2
+ __TYPE__: DistinctName;
3
+ };
4
+ export type Hours = Distinct<number, 'Hours'>;
5
+ export type Minutes = Distinct<number, 'Minutes'>;
6
+ export type Seconds = Distinct<number, 'Seconds'>;
7
+ export type Milliseconds = Distinct<number, 'Milliseconds'>;
8
+ export type Degrees = Distinct<number, 'Degrees'>;
9
+ export type Radians = Distinct<number, 'Radians'>;
10
+ export type Kilometers = Distinct<number, 'Kilometers'>;
11
+ export type Meters = Distinct<number, 'Meters'>;
12
+ export type Vec3<Type> = {
5
13
  x: Type;
6
14
  y: Type;
7
15
  z: Type;
8
16
  };
9
- export declare type EciVec3 = Vec3<Kilometer>;
10
- export declare type EcfVec3 = {
11
- x: Kilometer;
12
- y: Kilometer;
13
- z: Kilometer;
17
+ export type EciVec3 = Vec3<Kilometers>;
18
+ export type EcfVec3 = {
19
+ x: Kilometers;
20
+ y: Kilometers;
21
+ z: Kilometers;
14
22
  };
15
- export declare type LlaVec3 = {
23
+ export type LlaVec3 = {
16
24
  lat: Radians;
17
25
  lon: Radians;
18
- alt: Kilometer;
26
+ alt: Kilometers;
19
27
  };
20
- export declare type RaeVec3 = {
21
- rng: Kilometer;
22
- az: Radians;
23
- el: Radians;
28
+ export type RaeVec3 = {
29
+ rng: Kilometers;
30
+ az: Degrees;
31
+ el: Degrees;
24
32
  };
25
- export declare type SezVec3 = {
26
- s: Kilometer;
27
- e: Kilometer;
28
- z: Kilometer;
33
+ export type SezVec3 = {
34
+ s: Kilometers;
35
+ e: Kilometers;
36
+ z: Kilometers;
29
37
  };
30
38
  /**
31
39
  * @interface SatelliteRecord contains all of the orbital parameters necessary for running SGP4.
@@ -152,7 +160,7 @@ export interface SatelliteRecord {
152
160
  nm: number;
153
161
  }
154
162
  /** @typedef StateVector is a three dimensional position and velocity vector output from Sgp4.propagate.*/
155
- export declare type StateVector = {
163
+ export type StateVector = {
156
164
  position: {
157
165
  x: number;
158
166
  y: number;
@@ -165,12 +173,12 @@ export declare type StateVector = {
165
173
  } | boolean;
166
174
  };
167
175
  /** @typedef Vec3Flat is a flat three dimensional array used in vector math.*/
168
- export declare type Vec3Flat = [number, number, number];
176
+ export type Vec3Flat = [number, number, number];
169
177
  /** @typedef TleLine1 is the first line of a two line element set */
170
- export declare type TleLine1 = string;
178
+ export type TleLine1 = string;
171
179
  /** @typedef TleLine2 is the second line of a two line element set */
172
- export declare type TleLine2 = string;
173
- export declare type Line1Data = {
180
+ export type TleLine2 = string;
181
+ export type Line1Data = {
174
182
  lineNumber1: number;
175
183
  satNum: number;
176
184
  satNumRaw: string;
@@ -189,7 +197,7 @@ export declare type Line1Data = {
189
197
  elsetNum: number;
190
198
  checksum1: number;
191
199
  };
192
- export declare type Line2Data = {
200
+ export type Line2Data = {
193
201
  lineNumber2: number;
194
202
  satNum: number;
195
203
  satNumRaw: string;
@@ -233,14 +241,14 @@ export declare enum SpaceObjectType {
233
241
  LAUNCH_VEHICLE_MANUFACTURER = 27,
234
242
  ENGINE_MANUFACTURER = 28
235
243
  }
236
- export declare type GreenwichMeanSiderealTime = number;
237
- export declare type LaunchDetails = {
244
+ export type GreenwichMeanSiderealTime = number;
245
+ export type LaunchDetails = {
238
246
  launchDate?: string;
239
247
  launchMass?: string;
240
248
  launchSite?: string;
241
249
  launchVehicle?: string;
242
250
  };
243
- export declare type SpaceCraftDetails = {
251
+ export type SpaceCraftDetails = {
244
252
  lifetime?: string | number;
245
253
  maneuver?: string;
246
254
  manufacturer?: string;
@@ -255,18 +263,18 @@ export declare type SpaceCraftDetails = {
255
263
  equipment?: string;
256
264
  dryMass?: string;
257
265
  };
258
- export declare type OperationsDetails = {
266
+ export type OperationsDetails = {
259
267
  user?: string;
260
268
  mission?: string;
261
269
  owner?: string;
262
270
  country?: string;
263
271
  };
264
- export declare type AzEl = {
272
+ export type AzEl = {
265
273
  az: Radians;
266
274
  el: Radians;
267
275
  };
268
- export declare type Meters = number;
269
- export declare type SunTime = {
276
+ export type SunTime = {
270
277
  solarNoon: Date;
271
278
  nadir: Date;
272
279
  };
280
+ export {};
@@ -6,7 +6,7 @@
6
6
  * @file Commonly used constants.
7
7
  *
8
8
  * @license AGPL-3.0-or-later
9
- * @Copyright (c) 2020-2022 Theodore Kruczek
9
+ * @Copyright (c) 2020-2023 Theodore Kruczek
10
10
  *
11
11
  * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
12
12
  * terms of the GNU Affero General Public License as published by the Free Software
@@ -10,7 +10,7 @@
10
10
  *
11
11
  *
12
12
  * @license AGPL-3.0-or-later
13
- * @Copyright (c) 2020-2022 Theodore Kruczek
13
+ * @Copyright (c) 2020-2023 Theodore Kruczek
14
14
  *
15
15
  * @Copyright (c) 2011-2015, Vladimir Agafonkin
16
16
  * SunCalc is a JavaScript library for calculating sun/moon position and light phases.
@@ -34,7 +34,7 @@
34
34
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
35
35
  */
36
36
  import { Radians } from '../ootk';
37
- declare type MoonIlluminationData = {
37
+ type MoonIlluminationData = {
38
38
  fraction: number;
39
39
  phase: {
40
40
  from: number;
@@ -72,14 +72,14 @@ declare type MoonIlluminationData = {
72
72
  };
73
73
  export declare class MoonMath {
74
74
  static moonCoords(d: any): {
75
- ra: number;
76
- dec: number;
75
+ ra: Radians;
76
+ dec: Radians;
77
77
  dist: number;
78
78
  };
79
79
  static hoursLater(date: Date, h: number): Date;
80
80
  static getMoonPosition(date: any, lat: any, lon: any): {
81
- az: number;
82
- el: number;
81
+ az: Radians;
82
+ el: Radians;
83
83
  rng: number;
84
84
  parallacticAngle: number;
85
85
  };
@@ -10,7 +10,7 @@
10
10
  *
11
11
  *
12
12
  * @license AGPL-3.0-or-later
13
- * @Copyright (c) 2020-2022 Theodore Kruczek
13
+ * @Copyright (c) 2020-2023 Theodore Kruczek
14
14
  *
15
15
  * @Copyright (c) 2011-2015, Vladimir Agafonkin
16
16
  * SunCalc is a JavaScript library for calculating sun/moon position and light phases.
@@ -45,7 +45,7 @@ export declare class SunMath {
45
45
  /**
46
46
  * calculates the obderver angle
47
47
  * @param {number} alt the observer altitude (in meters) relative to the horizon
48
- * @returns {number} height for further calculations
48
+ * @returns {Degrees} height for further calculations
49
49
  */
50
50
  private static observerAngle;
51
51
  /**
@@ -111,13 +111,13 @@ export declare class SunMath {
111
111
  * @param {Radians} h - elevation
112
112
  * @returns {number} refraction
113
113
  */
114
- static astroRefraction(h: Degrees): Radians;
114
+ static astroRefraction(h: Radians): Radians;
115
115
  /**
116
116
  * ecliptic longitude
117
117
  * @param {number} M - solar mean anomaly
118
118
  * @returns {number} ecliptic longitude
119
119
  */
120
- static eclipticLongitude(M: number): number;
120
+ static eclipticLongitude(M: number): Radians;
121
121
  /**
122
122
  * ecliptic latitude
123
123
  * @param {number} B - ?
@@ -166,7 +166,7 @@ export declare class SunMath {
166
166
  * @param {number} L - ecliptic longitude
167
167
  * @returns {number} set time
168
168
  */
169
- static getSetJulian(h: number, lw: number, phi: number, dec: number, n: number, M: number, L: number): number;
169
+ static getSetJulian(h: Meters, lw: number, phi: number, dec: number, n: number, M: number, L: number): number;
170
170
  /**
171
171
  * returns set time for the given sun altitude
172
172
  * @param {Meters} alt - altitude at 0
@@ -221,10 +221,10 @@ export declare class SunMath {
221
221
  * @returns {Date} - Date Object in Solar Time
222
222
  */
223
223
  static getSolarTime(date: Date, utcOffset: number, lon: number): Date;
224
- static getStarAzEl(date: Date, lat: Degrees, lon: Degrees, ra: number, dec: number): AzEl;
224
+ static getStarAzEl(date: Date, lat: Degrees, lon: Degrees, ra: Radians, dec: Radians): AzEl;
225
225
  static getSunAzEl(date: Date, lat: Degrees, lon: Degrees): AzEl;
226
226
  static getSunRaDec(d: number): {
227
- dec: number;
228
- ra: number;
227
+ dec: Radians;
228
+ ra: Radians;
229
229
  };
230
230
  }
@@ -6,7 +6,7 @@
6
6
  * @file The Utils module.
7
7
  *
8
8
  * @license AGPL-3.0-or-later
9
- * @Copyright (c) 2020-2022 Theodore Kruczek
9
+ * @Copyright (c) 2020-2023 Theodore Kruczek
10
10
  *
11
11
  * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
12
12
  * terms of the GNU Affero General Public License as published by the Free Software
@@ -20,13 +20,14 @@
20
20
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
21
21
  */
22
22
  import * as Types from '../types/types';
23
+ import { EciVec3, Kilometers } from '../types/types';
23
24
  import { MoonMath } from './moon-math';
24
25
  import { SunMath } from './sun-math';
25
26
  declare class Utils {
26
27
  static Types: typeof Types;
27
- static distance(pos1: Types.EciVec3, pos2: Types.EciVec3): Types.Kilometer;
28
+ static distance(pos1: EciVec3, pos2: EciVec3): Kilometers;
28
29
  private static sign;
29
- static dopplerFactor(location: Types.EciVec3, position: Types.EciVec3, velocity: Types.EciVec3): Types.Kilometer;
30
+ static dopplerFactor(location: EciVec3, position: EciVec3, velocity: EciVec3): Kilometers;
30
31
  static createVec(start: number, stop: number, step: number): number[];
31
32
  static jday: (year?: number, mon?: number, day?: number, hr?: number, minute?: number, sec?: number) => number;
32
33
  static getDayOfYear(date: Date): number;
@@ -7,7 +7,7 @@
7
7
  * to ground and space based objects.
8
8
  *
9
9
  * @license AGPL-3.0-or-later
10
- * @Copyright (c) 2020-2022 Theodore Kruczek
10
+ * @Copyright (c) 2020-2023 Theodore Kruczek
11
11
  *
12
12
  * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
13
13
  * terms of the GNU Affero General Public License as published by the Free Software
@@ -7,7 +7,7 @@
7
7
  * to ground and space based objects.
8
8
  *
9
9
  * @license AGPL-3.0-or-later
10
- * @Copyright (c) 2020-2022 Theodore Kruczek
10
+ * @Copyright (c) 2020-2023 Theodore Kruczek
11
11
  *
12
12
  * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
13
13
  * terms of the GNU Affero General Public License as published by the Free Software
@@ -1 +1 @@
1
- {"version":3,"file":"base-object.js","sourceRoot":"","sources":["../../src/objects/base-object.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-object.js","sourceRoot":"","sources":["../../src/objects/base-object.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAuB,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAStE;IAME,oBAAY,IAAgB;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,OAAO,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC;QAEnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI;YAC/B,CAAC,EAAc,CAAC;YAChB,CAAC,EAAc,CAAC;YAChB,CAAC,EAAc,CAAC;SACjB,CAAC,CAAC,kEAAkE;QAErE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;IACtC,CAAC;IAEM,4BAAO,GAAd;QACE,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAEM,4BAAO,GAAd;QACE,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,sCAAsC;IAC/B,kCAAa,GAApB;QACE,QAAQ,IAAI,CAAC,IAAI,EAAE;YACjB,KAAK,eAAe,CAAC,OAAO;gBAC1B,OAAO,SAAS,CAAC;YACnB,KAAK,eAAe,CAAC,OAAO;gBAC1B,OAAO,SAAS,CAAC;YACnB,KAAK,eAAe,CAAC,WAAW;gBAC9B,OAAO,aAAa,CAAC;YACvB,KAAK,eAAe,CAAC,MAAM;gBACzB,OAAO,QAAQ,CAAC;YAClB,KAAK,eAAe,CAAC,OAAO;gBAC1B,OAAO,SAAS,CAAC;YACnB,KAAK,eAAe,CAAC,iBAAiB;gBACpC,OAAO,mBAAmB,CAAC;YAC7B,KAAK,eAAe,CAAC,WAAW;gBAC9B,OAAO,aAAa,CAAC;YACvB,KAAK,eAAe,CAAC,YAAY;gBAC/B,OAAO,cAAc,CAAC;YACxB,KAAK,eAAe,CAAC,iBAAiB;gBACpC,OAAO,mBAAmB,CAAC;YAC7B,KAAK,eAAe,CAAC,IAAI;gBACvB,OAAO,MAAM,CAAC;YAChB,KAAK,eAAe,CAAC,8BAA8B;gBACjD,OAAO,gCAAgC,CAAC;YAC1C,KAAK,eAAe,CAAC,2BAA2B;gBAC9C,OAAO,6BAA6B,CAAC;YACvC,KAAK,eAAe,CAAC,aAAa;gBAChC,OAAO,eAAe,CAAC;YACzB,KAAK,eAAe,CAAC,mDAAmD;gBACtE,OAAO,qDAAqD,CAAC;YAC/D,KAAK,eAAe,CAAC,oBAAoB;gBACvC,OAAO,sBAAsB,CAAC;YAChC,KAAK,eAAe,CAAC,aAAa;gBAChC,OAAO,eAAe,CAAC;YACzB,KAAK,eAAe,CAAC,WAAW;gBAC9B,OAAO,aAAa,CAAC;YACvB,KAAK,eAAe,CAAC,eAAe;gBAClC,OAAO,iBAAiB,CAAC;YAC3B,KAAK,eAAe,CAAC,eAAe;gBAClC,OAAO,iBAAiB,CAAC;YAC3B,KAAK,eAAe,CAAC,gBAAgB;gBACnC,OAAO,kBAAkB,CAAC;YAC5B,KAAK,eAAe,CAAC,qBAAqB;gBACxC,OAAO,uBAAuB,CAAC;YACjC,KAAK,eAAe,CAAC,OAAO;gBAC1B,OAAO,SAAS,CAAC;YACnB,KAAK,eAAe,CAAC,UAAU;gBAC7B,OAAO,YAAY,CAAC;YACtB,KAAK,eAAe,CAAC,kBAAkB;gBACrC,OAAO,oBAAoB,CAAC;YAC9B,KAAK,eAAe,CAAC,QAAQ;gBAC3B,OAAO,UAAU,CAAC;YACpB,KAAK,eAAe,CAAC,wBAAwB;gBAC3C,OAAO,0BAA0B,CAAC;YACpC,KAAK,eAAe,CAAC,OAAO;gBAC1B,OAAO,SAAS,CAAC;YACnB,KAAK,eAAe,CAAC,2BAA2B;gBAC9C,OAAO,6BAA6B,CAAC;YACvC,KAAK,eAAe,CAAC,mBAAmB;gBACtC,OAAO,qBAAqB,CAAC;YAC/B;gBACE,OAAO,SAAS,CAAC;SACpB;IACH,CAAC;IACH,iBAAC;AAAD,CAAC,AA5FD,IA4FC"}
@@ -7,7 +7,7 @@
7
7
  * properties for categorizing and filtering satellites.
8
8
  *
9
9
  * @license AGPL-3.0-or-later
10
- * @Copyright (c) 2020-2022 Theodore Kruczek
10
+ * @Copyright (c) 2020-2023 Theodore Kruczek
11
11
  *
12
12
  * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
13
13
  * terms of the GNU Affero General Public License as published by the Free Software
@@ -7,7 +7,7 @@
7
7
  * properties for categorizing and filtering satellites.
8
8
  *
9
9
  * @license AGPL-3.0-or-later
10
- * @Copyright (c) 2020-2022 Theodore Kruczek
10
+ * @Copyright (c) 2020-2023 Theodore Kruczek
11
11
  *
12
12
  * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
13
13
  * terms of the GNU Affero General Public License as published by the Free Software
@@ -7,7 +7,7 @@
7
7
  * to earth based sensors and other orbital objects.
8
8
  *
9
9
  * @license AGPL-3.0-or-later
10
- * @Copyright (c) 2020-2022 Theodore Kruczek
10
+ * @Copyright (c) 2020-2023 Theodore Kruczek
11
11
  *
12
12
  * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
13
13
  * terms of the GNU Affero General Public License as published by the Free Software
@@ -77,6 +77,9 @@ export declare class Sat extends SpaceObject {
77
77
  */
78
78
  getLla(date?: Date): LlaVec3;
79
79
  getRae(sensor: Sensor, date?: Date): RaeVec3;
80
+ getAzimuth(sensor: Sensor, date?: Date): number;
81
+ getElevation(sensor: Sensor, date?: Date): number;
82
+ getRange(sensor: Sensor, date?: Date): number;
80
83
  /**
81
84
  * Calculates the time variables for a given date relative to the TLE epoch.
82
85
  * @param {Date} date Date to calculate
@@ -7,7 +7,7 @@
7
7
  * to earth based sensors and other orbital objects.
8
8
  *
9
9
  * @license AGPL-3.0-or-later
10
- * @Copyright (c) 2020-2022 Theodore Kruczek
10
+ * @Copyright (c) 2020-2023 Theodore Kruczek
11
11
  *
12
12
  * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
13
13
  * terms of the GNU Affero General Public License as published by the Free Software
@@ -67,7 +67,11 @@ var Sat = /** @class */ (function (_super) {
67
67
  }
68
68
  Sat.prototype.propagateTo = function (date) {
69
69
  var m = Sat.calculateTimeVariables(date, this.satrec).m;
70
- var eci = Sgp4.propagate(this.satrec, m).position || { x: 0, y: 0, z: 0 };
70
+ var eci = Sgp4.propagate(this.satrec, m).position || {
71
+ x: 0,
72
+ y: 0,
73
+ z: 0,
74
+ };
71
75
  this.position = eci;
72
76
  this.time = date;
73
77
  return this;
@@ -90,8 +94,12 @@ var Sat = /** @class */ (function (_super) {
90
94
  Sat.prototype.getEci = function (date) {
91
95
  if (date === void 0) { date = this.time; }
92
96
  var m = Sat.calculateTimeVariables(date, this.satrec).m;
93
- var eci = Sgp4.propagate(this.satrec, m).position;
94
- return eci ? eci : { x: 0, y: 0, z: 0 };
97
+ var eci = Sgp4.propagate(this.satrec, m).position || {
98
+ x: 0,
99
+ y: 0,
100
+ z: 0,
101
+ };
102
+ return eci;
95
103
  };
96
104
  /**
97
105
  * Calculates ECF position at a given time.
@@ -101,7 +109,11 @@ var Sat = /** @class */ (function (_super) {
101
109
  Sat.prototype.getEcf = function (date) {
102
110
  if (date === void 0) { date = this.time; }
103
111
  var _a = Sat.calculateTimeVariables(date, this.satrec), m = _a.m, gmst = _a.gmst;
104
- var eci = Sgp4.propagate(this.satrec, m).position || { x: 0, y: 0, z: 0 };
112
+ var eci = Sgp4.propagate(this.satrec, m).position || {
113
+ x: 0,
114
+ y: 0,
115
+ z: 0,
116
+ };
105
117
  return Transforms.eci2ecf(eci, gmst);
106
118
  };
107
119
  /**
@@ -112,16 +124,39 @@ var Sat = /** @class */ (function (_super) {
112
124
  Sat.prototype.getLla = function (date) {
113
125
  if (date === void 0) { date = this.time; }
114
126
  var _a = Sat.calculateTimeVariables(date, this.satrec), m = _a.m, gmst = _a.gmst;
115
- var eci = Sgp4.propagate(this.satrec, m).position || { x: 0, y: 0, z: 0 };
127
+ var eci = Sgp4.propagate(this.satrec, m).position || {
128
+ x: 0,
129
+ y: 0,
130
+ z: 0,
131
+ };
116
132
  return Transforms.eci2lla(eci, gmst);
117
133
  };
118
134
  Sat.prototype.getRae = function (sensor, date) {
119
135
  if (date === void 0) { date = this.time; }
120
136
  var _a = Sat.calculateTimeVariables(date, this.satrec), m = _a.m, gmst = _a.gmst;
121
- var eci = Sgp4.propagate(this.satrec, m).position || { x: 0, y: 0, z: 0 };
137
+ var eci = Sgp4.propagate(this.satrec, m).position || {
138
+ x: 0,
139
+ y: 0,
140
+ z: 0,
141
+ };
122
142
  var ecf = Transforms.eci2ecf(eci, gmst);
123
143
  return Transforms.ecf2rae({ lat: sensor.lat, lon: sensor.lon, alt: sensor.alt }, ecf);
124
144
  };
145
+ Sat.prototype.getAzimuth = function (sensor, date) {
146
+ if (date === void 0) { date = this.time; }
147
+ var rae = this.getRae(sensor, date);
148
+ return rae.az;
149
+ };
150
+ Sat.prototype.getElevation = function (sensor, date) {
151
+ if (date === void 0) { date = this.time; }
152
+ var rae = this.getRae(sensor, date);
153
+ return rae.el;
154
+ };
155
+ Sat.prototype.getRange = function (sensor, date) {
156
+ if (date === void 0) { date = this.time; }
157
+ var rae = this.getRae(sensor, date);
158
+ return rae.rng;
159
+ };
125
160
  /**
126
161
  * Calculates the time variables for a given date relative to the TLE epoch.
127
162
  * @param {Date} date Date to calculate
@@ -1 +1 @@
1
- {"version":3,"file":"sat.js","sourceRoot":"","sources":["../../src/objects/sat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sat.js","sourceRoot":"","sources":["../../src/objects/sat.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  * @file The Sensor class is used for creating ground based observers.
7
7
  *
8
8
  * @license AGPL-3.0-or-later
9
- * @Copyright (c) 2020-2022 Theodore Kruczek
9
+ * @Copyright (c) 2020-2023 Theodore Kruczek
10
10
  *
11
11
  * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
12
12
  * terms of the GNU Affero General Public License as published by the Free Software
@@ -19,21 +19,21 @@
19
19
  * You should have received a copy of the GNU Affero General Public License along with
20
20
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
21
21
  */
22
- import { Degrees, Kilometer, RaeVec3, SpaceObjectType } from '../types/types';
22
+ import { Degrees, Kilometers, Radians, RaeVec3, SpaceObjectType } from '../types/types';
23
23
  import { BaseObject } from './base-object';
24
24
  import { Sat } from './sat';
25
25
  interface ObjectInfo {
26
26
  name?: string;
27
27
  type?: SpaceObjectType;
28
- lat: number;
29
- lon: number;
30
- alt: number;
31
- minAz: Degrees;
32
- maxAz: Degrees;
33
- minEl: Degrees;
34
- maxEl: Degrees;
35
- minRng: Kilometer;
36
- maxRng: Kilometer;
28
+ lat: Radians;
29
+ lon: Radians;
30
+ alt: Kilometers;
31
+ minAz?: Degrees;
32
+ maxAz?: Degrees;
33
+ minEl?: Degrees;
34
+ maxEl?: Degrees;
35
+ minRng?: Kilometers;
36
+ maxRng?: Kilometers;
37
37
  }
38
38
  export declare enum PassType {
39
39
  OUT_OF_VIEW = -1,
@@ -41,24 +41,38 @@ export declare enum PassType {
41
41
  IN_VIEW = 1,
42
42
  EXIT = 2
43
43
  }
44
- declare type Lookangles = {
44
+ type Lookangles = {
45
45
  type: PassType;
46
46
  time: Date;
47
- az: number;
48
- el: number;
49
- rng: number;
50
- maxElPass?: number;
47
+ az: Degrees;
48
+ el: Degrees;
49
+ rng: Kilometers;
50
+ maxElPass?: Degrees;
51
51
  };
52
52
  export declare class Sensor extends BaseObject {
53
- lat: number;
54
- lon: number;
55
- alt: number;
53
+ lat: Radians;
54
+ lon: Radians;
55
+ alt: Kilometers;
56
56
  minAz: Degrees;
57
57
  maxAz: Degrees;
58
58
  minEl: Degrees;
59
59
  maxEl: Degrees;
60
- minRng: Kilometer;
61
- maxRng: Kilometer;
60
+ minRng: Kilometers;
61
+ maxRng: Kilometers;
62
+ /**
63
+ * * name: Name as a string - OPTIONAL
64
+ * * type: SpaceObjectType - OPTIONAL
65
+ * * lat: Latitude in Radians
66
+ * * lon: Longitude in Radians
67
+ * * alt: Altitude in Kilometers
68
+ * * minAz: Minimum Azimuth in Degrees
69
+ * * maxAz: Maximum Azimuth in Degrees
70
+ * * minEl: Minimum Elevation in Degrees
71
+ * * maxEl: Maximum Elevation in Degrees
72
+ * * minRng: Minimum Range in Kilometers
73
+ * * maxRng: Maximum Range in Kilometers
74
+ * @param {ObjectInfo} info ObjectInfo object containing the object's information
75
+ */
62
76
  constructor(info: ObjectInfo);
63
77
  private validateInputData;
64
78
  private validateFov;
@@ -6,7 +6,7 @@
6
6
  * @file The Sensor class is used for creating ground based observers.
7
7
  *
8
8
  * @license AGPL-3.0-or-later
9
- * @Copyright (c) 2020-2022 Theodore Kruczek
9
+ * @Copyright (c) 2020-2023 Theodore Kruczek
10
10
  *
11
11
  * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
12
12
  * terms of the GNU Affero General Public License as published by the Free Software
@@ -36,6 +36,7 @@ var __extends = (this && this.__extends) || (function () {
36
36
  })();
37
37
  import { SpaceObjectType } from '../types/types';
38
38
  import { BaseObject } from './base-object';
39
+ import { RAD2DEG } from '../utils/constants';
39
40
  export var PassType;
40
41
  (function (PassType) {
41
42
  PassType[PassType["OUT_OF_VIEW"] = -1] = "OUT_OF_VIEW";
@@ -46,6 +47,20 @@ export var PassType;
46
47
  var TAU = Math.PI * 2;
47
48
  var Sensor = /** @class */ (function (_super) {
48
49
  __extends(Sensor, _super);
50
+ /**
51
+ * * name: Name as a string - OPTIONAL
52
+ * * type: SpaceObjectType - OPTIONAL
53
+ * * lat: Latitude in Radians
54
+ * * lon: Longitude in Radians
55
+ * * alt: Altitude in Kilometers
56
+ * * minAz: Minimum Azimuth in Degrees
57
+ * * maxAz: Maximum Azimuth in Degrees
58
+ * * minEl: Minimum Elevation in Degrees
59
+ * * maxEl: Maximum Elevation in Degrees
60
+ * * minRng: Minimum Range in Kilometers
61
+ * * maxRng: Maximum Range in Kilometers
62
+ * @param {ObjectInfo} info ObjectInfo object containing the object's information
63
+ */
49
64
  function Sensor(info) {
50
65
  var _this = this;
51
66
  // If there is a sensor type verify it is valid
@@ -160,20 +175,20 @@ var Sensor = /** @class */ (function (_super) {
160
175
  return sat.getRae(this, date);
161
176
  };
162
177
  Sensor.prototype.isRaeInFov = function (rae) {
163
- if (rae.el < this.minEl || rae.el > this.maxEl) {
178
+ if (rae.el * RAD2DEG < this.minEl || rae.el * RAD2DEG > this.maxEl) {
164
179
  return false;
165
180
  }
166
181
  if (rae.rng < this.minRng || rae.rng > this.maxRng) {
167
182
  return false;
168
183
  }
169
- if (this.minAz > this.maxAz) {
184
+ if (this.minAz * RAD2DEG > this.maxAz) {
170
185
  // North Facing Sensors
171
- if (rae.az < this.minAz && rae.az > this.maxAz) {
186
+ if (rae.az * RAD2DEG < this.minAz && rae.az * RAD2DEG > this.maxAz) {
172
187
  return false;
173
188
  }
174
189
  // Normal Facing Sensors
175
190
  }
176
- else if (rae.az < this.minAz || rae.az > this.maxAz) {
191
+ else if (rae.az * RAD2DEG < this.minAz || rae.az * RAD2DEG > this.maxAz) {
177
192
  return false;
178
193
  }
179
194
  return true;
@@ -192,8 +207,8 @@ var Sensor = /** @class */ (function (_super) {
192
207
  var curTime = new Date(startTime + timeOffset * 1000);
193
208
  var rae = this.getRae(sat, curTime);
194
209
  // Radians to Degrees
195
- rae.az *= 360 / TAU;
196
- rae.el *= 360 / TAU;
210
+ rae.az = ((rae.az * 360) / TAU);
211
+ rae.el = ((rae.el * 360) / TAU);
197
212
  var isInView = this.isRaeInFov(rae);
198
213
  if (timeOffset === 0) {
199
214
  // Propagate Backwards to get the previous pass