ootk 4.0.0-8 → 4.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 (222) hide show
  1. package/CHANGELOG.md +80 -1
  2. package/README.md +4 -4
  3. package/dist/coordinate/Hill.d.ts +2 -2
  4. package/dist/coordinate/Hill.js +1 -1
  5. package/dist/coordinate/Hill.js.map +1 -1
  6. package/dist/coordinate/index.d.ts +1 -1
  7. package/dist/coordinate/index.js +1 -1
  8. package/dist/coordinate/index.js.map +1 -1
  9. package/dist/covariance/CovarianceSample.d.ts +3 -3
  10. package/dist/covariance/CovarianceSample.js +3 -3
  11. package/dist/covariance/CovarianceSample.js.map +1 -1
  12. package/dist/covariance/StateCovariance.js.map +1 -1
  13. package/dist/enums/CatalogSource.d.ts +2 -0
  14. package/dist/enums/CatalogSource.js +2 -0
  15. package/dist/enums/CatalogSource.js.map +1 -1
  16. package/dist/enums/CommLink.d.ts +7 -0
  17. package/dist/enums/CommLink.js +9 -0
  18. package/dist/enums/CommLink.js.map +1 -0
  19. package/dist/enums/index.d.ts +2 -1
  20. package/dist/enums/index.js +2 -1
  21. package/dist/enums/index.js.map +1 -1
  22. package/dist/force/AtmosphericDrag.d.ts +1 -1
  23. package/dist/force/AtmosphericDrag.js.map +1 -1
  24. package/dist/force/EarthGravity.d.ts +27 -1
  25. package/dist/force/EarthGravity.js +26 -1
  26. package/dist/force/EarthGravity.js.map +1 -1
  27. package/dist/force/ForceModel.d.ts +9 -1
  28. package/dist/force/ForceModel.js +13 -5
  29. package/dist/force/ForceModel.js.map +1 -1
  30. package/dist/force/Gravity.d.ts +1 -1
  31. package/dist/force/SolarRadiationPressure.d.ts +1 -1
  32. package/dist/force/SolarRadiationPressure.js +1 -1
  33. package/dist/force/SolarRadiationPressure.js.map +1 -1
  34. package/dist/force/ThirdBodyGravity.d.ts +1 -1
  35. package/dist/force/ThirdBodyGravity.js.map +1 -1
  36. package/dist/force/Thrust.d.ts +1 -1
  37. package/dist/force/index.d.ts +1 -0
  38. package/dist/force/index.js +2 -0
  39. package/dist/force/index.js.map +1 -0
  40. package/dist/interfaces/RfSensorParams.d.ts +12 -6
  41. package/dist/interfaces/RfSensorParams.js +1 -1
  42. package/dist/interfaces/index.d.ts +1 -1
  43. package/dist/interpolator/ChebyshevCoefficients.js.map +1 -1
  44. package/dist/interpolator/ChebyshevInterpolator.d.ts +2 -2
  45. package/dist/interpolator/ChebyshevInterpolator.js +1 -1
  46. package/dist/interpolator/ChebyshevInterpolator.js.map +1 -1
  47. package/dist/interpolator/CubicSplineInterpolator.d.ts +2 -2
  48. package/dist/interpolator/CubicSplineInterpolator.js +2 -2
  49. package/dist/interpolator/CubicSplineInterpolator.js.map +1 -1
  50. package/dist/interpolator/FieldInterpolator.d.ts +1 -1
  51. package/dist/interpolator/FieldInterpolator.js +1 -1
  52. package/dist/interpolator/FieldInterpolator.js.map +1 -1
  53. package/dist/interpolator/Interpolator.js.map +1 -1
  54. package/dist/interpolator/LagrangeInterpolator.d.ts +1 -1
  55. package/dist/interpolator/LagrangeInterpolator.js +1 -1
  56. package/dist/interpolator/LagrangeInterpolator.js.map +1 -1
  57. package/dist/interpolator/StateInterpolator.d.ts +1 -1
  58. package/dist/interpolator/StateInterpolator.js +1 -1
  59. package/dist/interpolator/StateInterpolator.js.map +1 -1
  60. package/dist/interpolator/VerletBlendInterpolator.d.ts +3 -3
  61. package/dist/interpolator/VerletBlendInterpolator.js +3 -3
  62. package/dist/interpolator/VerletBlendInterpolator.js.map +1 -1
  63. package/dist/main.d.ts +10 -8
  64. package/dist/main.js +10 -8
  65. package/dist/main.js.map +1 -1
  66. package/dist/maneuver/TwoBurnOrbitTransfer.d.ts +1 -1
  67. package/dist/maneuver/TwoBurnOrbitTransfer.js +1 -1
  68. package/dist/maneuver/TwoBurnOrbitTransfer.js.map +1 -1
  69. package/dist/maneuver/Waypoint.d.ts +3 -3
  70. package/dist/maneuver/Waypoint.js +5 -5
  71. package/dist/maneuver/Waypoint.js.map +1 -1
  72. package/dist/objects/DetailedSatellite.d.ts +4 -3
  73. package/dist/objects/DetailedSatellite.js +4 -1
  74. package/dist/objects/DetailedSatellite.js.map +1 -1
  75. package/dist/objects/DetailedSensor.d.ts +15 -19
  76. package/dist/objects/DetailedSensor.js +22 -33
  77. package/dist/objects/DetailedSensor.js.map +1 -1
  78. package/dist/objects/RfSensor.d.ts +45 -12
  79. package/dist/objects/RfSensor.js +66 -20
  80. package/dist/objects/RfSensor.js.map +1 -1
  81. package/dist/objects/index.d.ts +5 -5
  82. package/dist/objects/index.js +5 -5
  83. package/dist/objects/index.js.map +1 -1
  84. package/dist/observation/Observation.d.ts +3 -3
  85. package/dist/observation/ObservationOptical.d.ts +4 -4
  86. package/dist/observation/ObservationOptical.js +2 -2
  87. package/dist/observation/ObservationOptical.js.map +1 -1
  88. package/dist/observation/ObservationRadar.d.ts +4 -4
  89. package/dist/observation/ObservationRadar.js +2 -2
  90. package/dist/observation/ObservationRadar.js.map +1 -1
  91. package/dist/observation/ObservationUtils.js.map +1 -1
  92. package/dist/observation/PropagatorPairs.d.ts +1 -1
  93. package/dist/operations/BoxMuller.js.map +1 -1
  94. package/dist/operations/Quaternion.js.map +1 -1
  95. package/dist/operations/RandomGaussianSource.js +1 -1
  96. package/dist/operations/RandomGaussianSource.js.map +1 -1
  97. package/dist/operations/index.d.ts +4 -4
  98. package/dist/operations/index.js +4 -4
  99. package/dist/operations/index.js.map +1 -1
  100. package/dist/optimize/ChebyshevCompressor.d.ts +2 -2
  101. package/dist/optimize/ChebyshevCompressor.js +2 -2
  102. package/dist/optimize/ChebyshevCompressor.js.map +1 -1
  103. package/dist/optimize/DownhillSimplex.d.ts +1 -1
  104. package/dist/optimize/DownhillSimplex.js +1 -1
  105. package/dist/optimize/DownhillSimplex.js.map +1 -1
  106. package/dist/optimize/GoldenSection.d.ts +1 -1
  107. package/dist/optimize/GoldenSection.js.map +1 -1
  108. package/dist/optimize/PolynomialRegression.d.ts +1 -1
  109. package/dist/optimize/PolynomialRegression.js +2 -2
  110. package/dist/optimize/PolynomialRegression.js.map +1 -1
  111. package/dist/optimize/SimpleLinearRegression.js.map +1 -1
  112. package/dist/orbit_determination/BatchLeastSquaresOD.d.ts +7 -3
  113. package/dist/orbit_determination/BatchLeastSquaresOD.js +10 -10
  114. package/dist/orbit_determination/BatchLeastSquaresOD.js.map +1 -1
  115. package/dist/orbit_determination/BatchLeastSquaresResult.d.ts +1 -1
  116. package/dist/orbit_determination/GibbsIOD.js +2 -2
  117. package/dist/orbit_determination/GibbsIOD.js.map +1 -1
  118. package/dist/orbit_determination/GoodingIOD.d.ts +1 -1
  119. package/dist/orbit_determination/GoodingIOD.js +4 -4
  120. package/dist/orbit_determination/GoodingIOD.js.map +1 -1
  121. package/dist/orbit_determination/LambertIOD.js.map +1 -1
  122. package/dist/orbit_determination/ModifiedGoodingIOD.d.ts +1 -1
  123. package/dist/orbit_determination/ModifiedGoodingIOD.js +4 -4
  124. package/dist/orbit_determination/ModifiedGoodingIOD.js.map +1 -1
  125. package/dist/propagator/DormandPrince54Propagator.d.ts +1 -1
  126. package/dist/propagator/DormandPrince54Propagator.js +1 -1
  127. package/dist/propagator/DormandPrince54Propagator.js.map +1 -1
  128. package/dist/propagator/KeplerPropagator.d.ts +3 -3
  129. package/dist/propagator/KeplerPropagator.js +2 -2
  130. package/dist/propagator/KeplerPropagator.js.map +1 -1
  131. package/dist/propagator/Propagator.d.ts +2 -2
  132. package/dist/propagator/Propagator.js +2 -2
  133. package/dist/propagator/Propagator.js.map +1 -1
  134. package/dist/propagator/RungeKutta4Propagator.d.ts +4 -4
  135. package/dist/propagator/RungeKutta4Propagator.js +3 -3
  136. package/dist/propagator/RungeKutta4Propagator.js.map +1 -1
  137. package/dist/propagator/RungeKutta89Propagator.d.ts +1 -1
  138. package/dist/propagator/RungeKutta89Propagator.js +1 -1
  139. package/dist/propagator/RungeKutta89Propagator.js.map +1 -1
  140. package/dist/propagator/RungeKuttaAdaptive.d.ts +4 -4
  141. package/dist/propagator/RungeKuttaAdaptive.js +5 -5
  142. package/dist/propagator/RungeKuttaAdaptive.js.map +1 -1
  143. package/dist/propagator/Sgp4Propagator.d.ts +45 -3
  144. package/dist/propagator/Sgp4Propagator.js +43 -3
  145. package/dist/propagator/Sgp4Propagator.js.map +1 -1
  146. package/dist/propagator/index.d.ts +3 -0
  147. package/dist/propagator/index.js +4 -0
  148. package/dist/propagator/index.js.map +1 -0
  149. package/dist/smoothing/ExponentialSmoothing.js.map +1 -1
  150. package/dist/transforms/index.d.ts +1 -1
  151. package/dist/transforms/index.js +1 -1
  152. package/dist/transforms/index.js.map +1 -1
  153. package/dist/transforms/transforms.d.ts +5 -3
  154. package/dist/transforms/transforms.js +8 -6
  155. package/dist/transforms/transforms.js.map +1 -1
  156. package/dist/types/types.d.ts +8 -14
  157. package/dist/types/types.js.map +1 -1
  158. package/dist/utils/functions.d.ts +1 -1
  159. package/dist/utils/index.d.ts +2 -2
  160. package/dist/utils/index.js +2 -2
  161. package/dist/utils/index.js.map +1 -1
  162. package/dist/utils/jacobian.d.ts +1 -1
  163. package/dist/utils/jacobian.js.map +1 -1
  164. package/package.json +17 -15
  165. package/src/coordinate/Hill.ts +2 -2
  166. package/src/coordinate/index.ts +1 -1
  167. package/src/covariance/CovarianceSample.ts +4 -4
  168. package/src/enums/CatalogSource.ts +3 -1
  169. package/src/enums/CommLink.ts +7 -0
  170. package/src/enums/index.ts +2 -1
  171. package/src/force/AtmosphericDrag.ts +1 -1
  172. package/src/force/EarthGravity.ts +27 -2
  173. package/src/force/ForceModel.ts +15 -7
  174. package/src/force/Gravity.ts +1 -1
  175. package/src/force/SolarRadiationPressure.ts +1 -1
  176. package/src/force/ThirdBodyGravity.ts +1 -1
  177. package/src/force/Thrust.ts +1 -1
  178. package/src/force/index.ts +1 -0
  179. package/src/interfaces/RfSensorParams.ts +12 -6
  180. package/src/interfaces/index.ts +1 -1
  181. package/src/interpolator/ChebyshevInterpolator.ts +2 -2
  182. package/src/interpolator/CubicSplineInterpolator.ts +2 -2
  183. package/src/interpolator/FieldInterpolator.ts +1 -1
  184. package/src/interpolator/LagrangeInterpolator.ts +1 -1
  185. package/src/interpolator/StateInterpolator.ts +1 -1
  186. package/src/interpolator/VerletBlendInterpolator.ts +3 -3
  187. package/src/main.ts +10 -8
  188. package/src/maneuver/TwoBurnOrbitTransfer.ts +1 -1
  189. package/src/maneuver/Waypoint.ts +6 -6
  190. package/src/objects/DetailedSatellite.ts +8 -4
  191. package/src/objects/DetailedSensor.ts +27 -36
  192. package/src/objects/RfSensor.ts +71 -22
  193. package/src/objects/index.ts +5 -5
  194. package/src/observation/Observation.ts +3 -3
  195. package/src/observation/ObservationOptical.ts +5 -5
  196. package/src/observation/ObservationRadar.ts +5 -5
  197. package/src/observation/PropagatorPairs.ts +1 -1
  198. package/src/operations/RandomGaussianSource.ts +1 -1
  199. package/src/operations/index.ts +4 -4
  200. package/src/optimize/ChebyshevCompressor.ts +3 -3
  201. package/src/optimize/DownhillSimplex.ts +1 -1
  202. package/src/optimize/GoldenSection.ts +1 -1
  203. package/src/optimize/PolynomialRegression.ts +2 -2
  204. package/src/orbit_determination/BatchLeastSquaresOD.ts +12 -12
  205. package/src/orbit_determination/BatchLeastSquaresResult.ts +1 -1
  206. package/src/orbit_determination/GibbsIOD.ts +2 -2
  207. package/src/orbit_determination/GoodingIOD.ts +5 -5
  208. package/src/orbit_determination/ModifiedGoodingIOD.ts +6 -6
  209. package/src/propagator/DormandPrince54Propagator.ts +1 -1
  210. package/src/propagator/KeplerPropagator.ts +3 -3
  211. package/src/propagator/Propagator.ts +3 -3
  212. package/src/propagator/RungeKutta4Propagator.ts +4 -4
  213. package/src/propagator/RungeKutta89Propagator.ts +1 -1
  214. package/src/propagator/RungeKuttaAdaptive.ts +6 -6
  215. package/src/propagator/Sgp4Propagator.ts +45 -5
  216. package/src/propagator/index.ts +3 -0
  217. package/src/transforms/index.ts +1 -1
  218. package/src/transforms/transforms.ts +9 -6
  219. package/src/types/types.ts +8 -14
  220. package/src/utils/functions.ts +1 -1
  221. package/src/utils/index.ts +2 -2
  222. package/src/utils/jacobian.ts +1 -1
@@ -1,4 +1,4 @@
1
- export { BoxMuller } from './BoxMuller';
2
- export { EulerAngles } from './EulerAngles';
3
- export { Quaternion } from './Quaternion';
4
- export { RandomGaussianSource } from './RandomGaussianSource';
1
+ export { BoxMuller } from './BoxMuller.js';
2
+ export { EulerAngles } from './EulerAngles.js';
3
+ export { Quaternion } from './Quaternion.js';
4
+ export { RandomGaussianSource } from './RandomGaussianSource.js';
@@ -16,9 +16,9 @@
16
16
  */
17
17
 
18
18
  import { EpochUTC, Seconds, Vector3D } from 'ootk-core';
19
- import { StateInterpolator } from '../interpolator/StateInterpolator';
20
- import { ChebyshevCoefficients } from './../interpolator/ChebyshevCoefficients';
21
- import { ChebyshevInterpolator } from './../interpolator/ChebyshevInterpolator';
19
+ import { StateInterpolator } from '../interpolator/StateInterpolator.js';
20
+ import { ChebyshevCoefficients } from './../interpolator/ChebyshevCoefficients.js';
21
+ import { ChebyshevInterpolator } from './../interpolator/ChebyshevInterpolator.js';
22
22
 
23
23
  // / Ephemeris compressor.
24
24
  export class ChebyshevCompressor {
@@ -15,7 +15,7 @@
15
15
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
16
16
  */
17
17
 
18
- import { CostFunction, SimplexEntry } from './SimplexEntry';
18
+ import { CostFunction, SimplexEntry } from './SimplexEntry.js';
19
19
 
20
20
  // / Derivative-free Nelder-Mead simplex optimizer.
21
21
  export class DownhillSimplex {
@@ -15,7 +15,7 @@
15
15
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
16
16
  */
17
17
 
18
- import { DifferentiableFunction } from '../main';
18
+ import { DifferentiableFunction } from '../main.js';
19
19
 
20
20
  // / Golden Section bounded single value optimizer.
21
21
  export class GoldenSection {
@@ -18,8 +18,8 @@
18
18
  /* eslint-disable require-jsdoc */
19
19
  /* eslint-disable func-style */
20
20
  import { evalPoly } from 'ootk-core';
21
- import { DownhillSimplex } from './DownhillSimplex';
22
- import { PolynomicalRegressionResult } from './PolynomicalRegressionResult';
21
+ import { DownhillSimplex } from './DownhillSimplex.js';
22
+ import { PolynomicalRegressionResult } from './PolynomicalRegressionResult.js';
23
23
  // / Polynomial regression optimizer.
24
24
  export class PolynomialRegression {
25
25
  private constructor() {
@@ -16,26 +16,26 @@
16
16
  */
17
17
 
18
18
  import { concat, EpochUTC, J2000, Kilometers, KilometersPerSecond, Matrix, Vector, Vector3D } from 'ootk-core';
19
- import { Observation } from '../observation/Observation';
20
- import { PropagatorPairs } from '../observation/PropagatorPairs';
21
- import { Propagator } from '../propagator/Propagator';
22
- import { CovarianceFrame, StateCovariance } from './../covariance/StateCovariance';
23
- import { ForceModel } from './../force/ForceModel';
24
- import { KeplerPropagator } from './../propagator/KeplerPropagator';
25
- import { RungeKutta89Propagator } from './../propagator/RungeKutta89Propagator';
26
- import { BatchLeastSquaresResult } from './BatchLeastSquaresResult';
19
+ import { Observation } from '../observation/Observation.js';
20
+ import { PropagatorPairs } from '../observation/PropagatorPairs.js';
21
+ import { Propagator } from '../propagator/Propagator.js';
22
+ import { CovarianceFrame, StateCovariance } from './../covariance/StateCovariance.js';
23
+ import { ForceModel } from './../force/ForceModel.js';
24
+ import { KeplerPropagator } from './../propagator/KeplerPropagator.js';
25
+ import { RungeKutta89Propagator } from './../propagator/RungeKutta89Propagator.js';
26
+ import { BatchLeastSquaresResult } from './BatchLeastSquaresResult.js';
27
27
 
28
28
  /**
29
29
  * Batch least squares orbit determination.
30
30
  */
31
31
  export class BatchLeastSquaresOD {
32
- // / Propagator pair cache, for generating observation Jacobians.
32
+ /** Propagator pair cache, for generating observation Jacobians. */
33
33
  private propPairs_: PropagatorPairs;
34
- // / Nominal state propagator.
34
+ /** Nominal state propagator. */
35
35
  private propagator_: Propagator;
36
- // / State estimate during solve.
36
+ /** State estimate during solve. */
37
37
  private nominal_: J2000;
38
- // / Solve start epoch.
38
+ /** Solve start epoch. */
39
39
  private start_: EpochUTC;
40
40
 
41
41
  /**
@@ -16,7 +16,7 @@
16
16
  */
17
17
 
18
18
  import { J2000 } from 'ootk-core';
19
- import { StateCovariance } from './../covariance/StateCovariance';
19
+ import { StateCovariance } from './../covariance/StateCovariance.js';
20
20
 
21
21
  // / Batch least squares orbit determination result.
22
22
  export class BatchLeastSquaresResult {
@@ -16,8 +16,8 @@
16
16
  */
17
17
 
18
18
  import { DEG2RAD, Earth, EpochUTC, halfPi, J2000, Kilometers, KilometersPerSecond, Radians, Vector3D } from 'ootk-core';
19
- import { ForceModel } from './../force/ForceModel';
20
- import { RungeKutta89Propagator } from './../propagator/RungeKutta89Propagator';
19
+ import { ForceModel } from './../force/ForceModel.js';
20
+ import { RungeKutta89Propagator } from './../propagator/RungeKutta89Propagator.js';
21
21
 
22
22
  /**
23
23
  * Gibbs 3-position inital orbit determination.
@@ -16,11 +16,11 @@
16
16
  */
17
17
 
18
18
  import { Earth, J2000, Kilometers, KilometersPerSecond, Seconds, TAU, Vector3D } from 'ootk-core';
19
- import { ForceModel } from '../force/ForceModel';
20
- import { RungeKutta89Propagator } from '../propagator/RungeKutta89Propagator';
21
- import { ObservationOptical } from './../observation/ObservationOptical';
22
- import { GibbsIOD } from './GibbsIOD';
23
- import { LambertIOD } from './LambertIOD';
19
+ import { ForceModel } from '../force/ForceModel.js';
20
+ import { RungeKutta89Propagator } from '../propagator/RungeKutta89Propagator.js';
21
+ import { ObservationOptical } from './../observation/ObservationOptical.js';
22
+ import { GibbsIOD } from './GibbsIOD.js';
23
+ import { LambertIOD } from './LambertIOD.js';
24
24
 
25
25
  type SolveRangeProblemParams = {
26
26
  rho1init: Kilometers;
@@ -16,12 +16,12 @@
16
16
  */
17
17
 
18
18
  import { Earth, EpochUTC, J2000, Kilometers, KilometersPerSecond, RadecTopocentric, Vector3D } from 'ootk-core';
19
- import { ForceModel } from '../force/ForceModel';
20
- import { RungeKutta89Propagator } from '../propagator/RungeKutta89Propagator';
21
- import { ObservationOptical } from './../observation/ObservationOptical';
22
- import { DownhillSimplex } from './../optimize/DownhillSimplex';
23
- import { CostFunction } from './../optimize/SimplexEntry';
24
- import { GoodingIOD } from './GoodingIOD';
19
+ import { ForceModel } from '../force/ForceModel.js';
20
+ import { RungeKutta89Propagator } from '../propagator/RungeKutta89Propagator.js';
21
+ import { ObservationOptical } from './../observation/ObservationOptical.js';
22
+ import { DownhillSimplex } from './../optimize/DownhillSimplex.js';
23
+ import { CostFunction } from './../optimize/SimplexEntry.js';
24
+ import { GoodingIOD } from './GoodingIOD.js';
25
25
 
26
26
  type SolveOptions = {
27
27
  nRev?: number;
@@ -16,7 +16,7 @@
16
16
  */
17
17
 
18
18
  /* eslint-disable class-methods-use-this */
19
- import { RungeKuttaAdaptive } from './RungeKuttaAdaptive';
19
+ import { RungeKuttaAdaptive } from './RungeKuttaAdaptive.js';
20
20
 
21
21
  export class DormandPrince54Propagator extends RungeKuttaAdaptive {
22
22
  private _a: Float64Array = Float64Array.from([0.0, 1.0 / 5.0, 3.0 / 10.0, 4.0 / 5.0, 8.0 / 9.0, 1.0, 1.0]);
@@ -16,9 +16,9 @@
16
16
  */
17
17
 
18
18
  import { ClassicalElements, EpochUTC, J2000, Seconds } from 'ootk-core';
19
- import { Thrust } from '../force/Thrust';
20
- import { VerletBlendInterpolator } from '../interpolator/VerletBlendInterpolator';
21
- import { Propagator } from './Propagator';
19
+ import { Thrust } from '../force/Thrust.js';
20
+ import { VerletBlendInterpolator } from '../interpolator/VerletBlendInterpolator.js';
21
+ import { Propagator } from './Propagator.js';
22
22
 
23
23
  // / Kepler analytical two-body propagator.
24
24
  export class KeplerPropagator extends Propagator {
@@ -16,9 +16,9 @@
16
16
  */
17
17
 
18
18
  import { EpochUTC, J2000, Seconds } from 'ootk-core';
19
- import { Thrust } from '../force/Thrust';
20
- import { VerletBlendInterpolator } from '../interpolator/VerletBlendInterpolator';
21
- import { GoldenSection } from './../optimize/GoldenSection';
19
+ import { Thrust } from '../force/Thrust.js';
20
+ import { VerletBlendInterpolator } from '../interpolator/VerletBlendInterpolator.js';
21
+ import { GoldenSection } from './../optimize/GoldenSection.js';
22
22
 
23
23
  // Propagator base class.
24
24
  export abstract class Propagator {
@@ -16,10 +16,10 @@
16
16
  */
17
17
 
18
18
  import { EpochUTC, J2000, Kilometers, KilometersPerSecond, Seconds, Vector, Vector3D } from 'ootk-core';
19
- import { ForceModel } from '../force/ForceModel';
20
- import { Thrust } from '../force/Thrust';
21
- import { VerletBlendInterpolator } from '../interpolator/VerletBlendInterpolator';
22
- import { Propagator } from './Propagator';
19
+ import { ForceModel } from '../force/ForceModel.js';
20
+ import { Thrust } from '../force/Thrust.js';
21
+ import { VerletBlendInterpolator } from '../interpolator/VerletBlendInterpolator.js';
22
+ import { Propagator } from './Propagator.js';
23
23
 
24
24
  // / Runge-Kutta 4 fixed numerical propagator.
25
25
  export class RungeKutta4Propagator extends Propagator {
@@ -17,7 +17,7 @@
17
17
 
18
18
  /* eslint-disable @typescript-eslint/no-loss-of-precision */
19
19
  /* eslint-disable class-methods-use-this */
20
- import { RungeKuttaAdaptive } from './RungeKuttaAdaptive';
20
+ import { RungeKuttaAdaptive } from './RungeKuttaAdaptive.js';
21
21
 
22
22
  // / Runge-Kutta 8(9) adaptive numerical propagator.
23
23
  export class RungeKutta89Propagator extends RungeKuttaAdaptive {
@@ -16,12 +16,12 @@
16
16
  */
17
17
 
18
18
  import { EpochUTC, J2000, Kilometers, KilometersPerSecond, Seconds, Vector, Vector3D } from 'ootk-core';
19
- import { ForceModel } from '../force/ForceModel';
20
- import { Thrust } from '../force/Thrust';
21
- import { VerletBlendInterpolator } from './../interpolator/VerletBlendInterpolator';
22
- import { Propagator } from './Propagator';
23
- import { RkCheckpoint } from './RkCheckpoint';
24
- import { RkResult } from './RkResult';
19
+ import { ForceModel } from '../force/ForceModel.js';
20
+ import { Thrust } from '../force/Thrust.js';
21
+ import { VerletBlendInterpolator } from './../interpolator/VerletBlendInterpolator.js';
22
+ import { Propagator } from './Propagator.js';
23
+ import { RkCheckpoint } from './RkCheckpoint.js';
24
+ import { RkResult } from './RkResult.js';
25
25
 
26
26
  // / Adaptive Runge-Kutta propagator base class.
27
27
  export abstract class RungeKuttaAdaptive extends Propagator {
@@ -18,13 +18,16 @@
18
18
  /* eslint-disable @typescript-eslint/no-unused-vars */
19
19
  /* eslint-disable class-methods-use-this */
20
20
  import { EpochUTC, J2000, Tle } from 'ootk-core';
21
- import { Thrust } from '../force/Thrust';
22
- import { VerletBlendInterpolator } from '../interpolator/VerletBlendInterpolator';
23
- import { Propagator } from './Propagator';
21
+ import { Thrust } from '../force/Thrust.js';
22
+ import { VerletBlendInterpolator } from '../interpolator/VerletBlendInterpolator.js';
23
+ import { Propagator } from './Propagator.js';
24
24
 
25
- // / SGP4 propagator.
25
+ /**
26
+ * Sgp4Propagator is a propagator that uses the SGP4 model to propagate the state of an object.
27
+ * This class is useful for propagating multiple states with the same TLE, since it caches the
28
+ * state of the TLE at different epochs.
29
+ */
26
30
  export class Sgp4Propagator extends Propagator {
27
- // / Create a new [Sgp4Propagator] object from a [TLE].
28
31
  constructor(private tle: Tle) {
29
32
  super();
30
33
  this._cacheState = tle.state.toJ2000();
@@ -33,38 +36,75 @@ export class Sgp4Propagator extends Propagator {
33
36
  private _cacheState: J2000;
34
37
  private _checkpoints: J2000[] = [];
35
38
 
39
+ /**
40
+ * Gets the state of the propagator in the J2000 coordinate system.
41
+ * @returns The J2000 state of the propagator.
42
+ */
36
43
  get state(): J2000 {
37
44
  return this._cacheState;
38
45
  }
39
46
 
47
+ /**
48
+ * Calculates the ephemeris maneuver using the SGP4 propagator.
49
+ * @param start The start epoch in UTC.
50
+ * @param finish The finish epoch in UTC.
51
+ * @param maneuvers The array of thrust maneuvers.
52
+ * @param interval The time interval in seconds.
53
+ */
40
54
  ephemerisManeuver(start: EpochUTC, finish: EpochUTC, maneuvers: Thrust[], interval = 60.0): VerletBlendInterpolator {
41
55
  throw new Error('Maneuvers cannot be modelled with SGP4.');
42
56
  }
43
57
 
58
+ /**
59
+ * Performs a maneuver with the given thrust.
60
+ * @param maneuver - The thrust maneuver to perform.
61
+ * @param interval - The time interval for the maneuver (default: 60.0 seconds).
62
+ * @throws Error if maneuvers cannot be modeled with SGP4.
63
+ */
44
64
  maneuver(maneuver: Thrust, interval = 60.0): J2000[] {
45
65
  throw new Error('Maneuvers cannot be modelled with SGP4.');
46
66
  }
47
67
 
68
+ /**
69
+ * Propagates the state of the Sgp4Propagator to a specified epoch in J2000 coordinates.
70
+ * @param epoch - The epoch in UTC format.
71
+ * @returns The propagated state in J2000 coordinates.
72
+ */
48
73
  propagate(epoch: EpochUTC): J2000 {
49
74
  this._cacheState = this.tle.propagate(epoch).toJ2000();
50
75
 
51
76
  return this._cacheState;
52
77
  }
53
78
 
79
+ /**
80
+ * Resets the state of the Sgp4Propagator by updating the cache state
81
+ * to the current J2000 state of the TLE.
82
+ */
54
83
  reset(): void {
55
84
  this._cacheState = this.tle.state.toJ2000();
56
85
  }
57
86
 
87
+ /**
88
+ * Saves the current state of the propagator and returns the index of the checkpoint.
89
+ * @returns The index of the checkpoint.
90
+ */
58
91
  checkpoint(): number {
59
92
  this._checkpoints.push(this._cacheState);
60
93
 
61
94
  return this._checkpoints.length - 1;
62
95
  }
63
96
 
97
+ /**
98
+ * Clears all the checkpoints in the propagator.
99
+ */
64
100
  clearCheckpoints(): void {
65
101
  this._checkpoints = [];
66
102
  }
67
103
 
104
+ /**
105
+ * Restores the state of the propagator to a previously saved checkpoint.
106
+ * @param index - The index of the checkpoint to restore.
107
+ */
68
108
  restore(index: number): void {
69
109
  this._cacheState = this._checkpoints[index];
70
110
  }
@@ -0,0 +1,3 @@
1
+ export { RungeKutta4Propagator } from './RungeKutta4Propagator.js';
2
+ export { RungeKutta89Propagator } from './RungeKutta89Propagator.js';
3
+ export { Sgp4Propagator } from './Sgp4Propagator.js';
@@ -1 +1 @@
1
- export * from './transforms';
1
+ export * from './transforms.js';
@@ -1,5 +1,5 @@
1
1
  import { DEG2RAD, Degrees, EnuVec3, RAD2DEG, Radians, RaeVec3, TAU } from 'ootk-core';
2
- import { RfVec3, RuvVec3, RfSensor } from '../main';
2
+ import { RfVec3, RuvVec3, RfSensor } from '../main.js';
3
3
 
4
4
  /**
5
5
  * Converts Azimuth and Elevation to U and V.
@@ -35,12 +35,14 @@ export function azel2uv(az: Radians, el: Radians, coneHalfAngle: Radians): { u:
35
35
  * Determine azimuth and elevation off of boresight based on sensor orientation and RAE.
36
36
  * @param rae Range, Azimuth, Elevation
37
37
  * @param sensor Radar sensor object
38
+ * @param face Face number of the sensor
38
39
  * @param maxSensorAz Maximum sensor azimuth
39
40
  * @returns Azimuth and Elevation off of boresight
40
41
  */
41
42
  export function rae2raeOffBoresight(
42
43
  rae: RaeVec3,
43
44
  sensor: RfSensor,
45
+ face: number,
44
46
  maxSensorAz: Degrees,
45
47
  ): { az: Radians; el: Radians } {
46
48
  let az = (rae.az * DEG2RAD) as Radians;
@@ -49,8 +51,8 @@ export function rae2raeOffBoresight(
49
51
  // Correct azimuth for sensor orientation.
50
52
  az = az > maxSensorAz * DEG2RAD ? ((az - TAU) as Radians) : az;
51
53
 
52
- az = (az - sensor.boresightAz) as Radians;
53
- el = (el - sensor.boresightEl) as Radians;
54
+ az = (az - sensor.boresightAz[face]) as Radians;
55
+ el = (el - sensor.boresightEl[face]) as Radians;
54
56
 
55
57
  return { az, el };
56
58
  }
@@ -59,12 +61,13 @@ export function rae2raeOffBoresight(
59
61
  * Converts Range Az El to Range U V.
60
62
  * @param rae Range, Azimuth, Elevation
61
63
  * @param sensor Radar sensor object
64
+ * @param face Face number of the sensor
62
65
  * @param maxSensorAz Maximum sensor azimuth
63
66
  * @returns Range, U, V
64
67
  */
65
- export function rae2ruv(rae: RaeVec3, sensor: RfSensor, maxSensorAz: Degrees): RuvVec3 {
66
- const { az, el } = rae2raeOffBoresight(rae, sensor, maxSensorAz);
67
- const { u, v } = azel2uv(az, el, sensor.coneHalfAngleRad);
68
+ export function rae2ruv(rae: RaeVec3, sensor: RfSensor, face: number, maxSensorAz: Degrees): RuvVec3 {
69
+ const { az, el } = rae2raeOffBoresight(rae, sensor, face, maxSensorAz);
70
+ const { u, v } = azel2uv(az, el, sensor.beamwidthRad);
68
71
 
69
72
  return { rng: rae.rng, u, v };
70
73
  }
@@ -15,7 +15,8 @@
15
15
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
16
16
  */
17
17
 
18
- import { Degrees, Kilometers, Milliseconds, SatelliteParams, Vec3 } from 'ootk-core';
18
+ import { Kilometers, Milliseconds, SatelliteParams, SensorParams, Vec3 } from 'ootk-core';
19
+ import { CommLink } from '../main.js';
19
20
 
20
21
  export enum ZoomValue {
21
22
  LEO = 0.45,
@@ -49,35 +50,28 @@ export interface DetailedSatelliteParams extends SatelliteParams {
49
50
  shape?: string;
50
51
  span?: string;
51
52
  user?: string;
52
- vmag?: number;
53
- rcs?: number;
53
+ vmag?: number | null;
54
+ rcs?: number | null;
54
55
  source?: string;
55
56
  altId?: string;
56
57
  altName?: string;
57
58
  }
58
59
 
59
- export interface DetailedSensorParams {
60
+ export interface DetailedSensorParams extends SensorParams {
60
61
  /** The country that owns the sensor */
61
62
  country?: string;
62
63
  /** 3 Letter Designation */
63
64
  shortName?: string;
64
- /** For radars, this is the width of the beam */
65
- beamwidth?: Degrees;
66
65
  changeObjectInterval?: Milliseconds;
67
- linkAehf?: boolean;
68
- linkGalileo?: boolean;
69
- linkIridium?: boolean;
70
- linkStarlink?: boolean;
71
- linkWgs?: boolean;
66
+ commLinks?: CommLink[];
67
+ freqBand?: string;
72
68
  static?: boolean;
73
69
  sensorId?: number;
74
70
  url?: string;
75
71
  /** Does this sensor use a volumetric search pattern? */
76
72
  volume?: boolean;
77
73
  /** How far away should we zoom when selecting this sensor? */
78
- zoom: ZoomValue;
79
- /** For radar sensors, what frequency does this sensor operate in? */
80
- band?: string;
74
+ zoom?: ZoomValue;
81
75
  /** This is the name of the object in the array */
82
76
  objName?: string;
83
77
  /** This is the name of the object in the UI */
@@ -1,4 +1,4 @@
1
- import { DifferentiableFunction } from '../main';
1
+ import { DifferentiableFunction } from '../main.js';
2
2
 
3
3
  /**
4
4
  * Calculates the derivative of a differentiable function.
@@ -1,2 +1,2 @@
1
- export * from './jacobian';
2
- export * from './functions';
1
+ export * from './jacobian.js';
2
+ export * from './functions.js';
@@ -1,5 +1,5 @@
1
1
  import { array2d, Matrix, Vector } from 'ootk-core';
2
- import { JacobianFunction } from '../types/types';
2
+ import { JacobianFunction } from '../types/types.js';
3
3
 
4
4
  // TODO: #11 Expand documentation of Jacobian function.
5
5