ootk 5.1.0 → 6.0.0-rc.2

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 (599) hide show
  1. package/.claude/PROMPT.md +13 -0
  2. package/.claude/hooks/post-tool-use.ts +33 -0
  3. package/.claude/hooks/user-prompt-submit.ts +138 -0
  4. package/.claude/settings.local.json +13 -0
  5. package/.claude/skill-rules.json +11 -0
  6. package/.claude/skills/ootk-dev/SKILL.md +16 -0
  7. package/ADVANCED_FEATURES_GUIDE.md +1025 -0
  8. package/CHANGELOG.md +42 -3
  9. package/README.md +77 -45
  10. package/dist/body/Celestial.d.ts +2 -2
  11. package/dist/body/Celestial.js +2 -2
  12. package/dist/body/Celestial.js.map +1 -1
  13. package/dist/body/Earth.d.ts +4 -4
  14. package/dist/body/Earth.js +2 -2
  15. package/dist/body/Earth.js.map +1 -1
  16. package/dist/body/Moon.d.ts +3 -3
  17. package/dist/body/Moon.js +7 -7
  18. package/dist/body/Moon.js.map +1 -1
  19. package/dist/body/NutationAngles.d.ts +2 -2
  20. package/dist/body/NutationAngles.js +1 -1
  21. package/dist/body/PrecessionAngles.d.ts +2 -2
  22. package/dist/body/PrecessionAngles.js +1 -1
  23. package/dist/body/Sun.d.ts +2 -2
  24. package/dist/body/Sun.js +3 -3
  25. package/dist/body/Sun.js.map +1 -1
  26. package/dist/body/index.d.ts +5 -5
  27. package/dist/body/index.js +5 -5
  28. package/dist/body/index.js.map +1 -1
  29. package/dist/conjunction/ConjunctionAssessment.d.ts +156 -0
  30. package/dist/conjunction/ConjunctionAssessment.js +281 -0
  31. package/dist/conjunction/ConjunctionAssessment.js.map +1 -0
  32. package/dist/conjunction/ConjunctionEvent.d.ts +104 -0
  33. package/dist/conjunction/ConjunctionEvent.js +156 -0
  34. package/dist/conjunction/ConjunctionEvent.js.map +1 -0
  35. package/dist/conjunction/ProbabilityOfCollision.d.ts +102 -0
  36. package/dist/conjunction/ProbabilityOfCollision.js +240 -0
  37. package/dist/conjunction/ProbabilityOfCollision.js.map +1 -0
  38. package/dist/conjunction/index.d.ts +19 -0
  39. package/dist/conjunction/index.js +20 -0
  40. package/dist/conjunction/index.js.map +1 -0
  41. package/dist/coordinate/ClassicalElements.d.ts +7 -7
  42. package/dist/coordinate/ClassicalElements.js +7 -7
  43. package/dist/coordinate/ClassicalElements.js.map +1 -1
  44. package/dist/coordinate/EquinoctialElements.d.ts +5 -5
  45. package/dist/coordinate/EquinoctialElements.js +4 -4
  46. package/dist/coordinate/EquinoctialElements.js.map +1 -1
  47. package/dist/coordinate/FormatTle.d.ts +2 -2
  48. package/dist/coordinate/FormatTle.js +2 -2
  49. package/dist/coordinate/FormatTle.js.map +1 -1
  50. package/dist/coordinate/Geodetic.d.ts +4 -4
  51. package/dist/coordinate/Geodetic.js +7 -7
  52. package/dist/coordinate/Geodetic.js.map +1 -1
  53. package/dist/coordinate/Hill.d.ts +4 -4
  54. package/dist/coordinate/Hill.js +3 -3
  55. package/dist/coordinate/Hill.js.map +1 -1
  56. package/dist/coordinate/ITRF.d.ts +5 -5
  57. package/dist/coordinate/ITRF.js +6 -5
  58. package/dist/coordinate/ITRF.js.map +1 -1
  59. package/dist/coordinate/J2000.d.ts +5 -5
  60. package/dist/coordinate/J2000.js +5 -5
  61. package/dist/coordinate/J2000.js.map +1 -1
  62. package/dist/coordinate/RIC.d.ts +4 -4
  63. package/dist/coordinate/RIC.js +3 -3
  64. package/dist/coordinate/RIC.js.map +1 -1
  65. package/dist/coordinate/RelativeState.d.ts +5 -5
  66. package/dist/coordinate/RelativeState.js +2 -2
  67. package/dist/coordinate/RelativeState.js.map +1 -1
  68. package/dist/coordinate/StateVector.d.ts +2 -2
  69. package/dist/coordinate/StateVector.js +2 -2
  70. package/dist/coordinate/StateVector.js.map +1 -1
  71. package/dist/coordinate/TEME.d.ts +4 -4
  72. package/dist/coordinate/TEME.js +4 -4
  73. package/dist/coordinate/TEME.js.map +1 -1
  74. package/dist/coordinate/Tle.d.ts +5 -5
  75. package/dist/coordinate/Tle.js +9 -9
  76. package/dist/coordinate/Tle.js.map +1 -1
  77. package/dist/coordinate/index.d.ts +12 -12
  78. package/dist/coordinate/index.js +12 -12
  79. package/dist/coordinate/index.js.map +1 -1
  80. package/dist/coordinate/tle-format-data.d.ts +1 -1
  81. package/dist/coordinate/tle-format-data.js +1 -1
  82. package/dist/covariance/CovarianceSample.d.ts +5 -5
  83. package/dist/covariance/CovarianceSample.js +5 -5
  84. package/dist/covariance/CovarianceSample.js.map +1 -1
  85. package/dist/covariance/StateCovariance.d.ts +2 -2
  86. package/dist/covariance/StateCovariance.js +2 -2
  87. package/dist/covariance/StateCovariance.js.map +1 -1
  88. package/dist/covariance/index.d.ts +2 -2
  89. package/dist/covariance/index.js +2 -2
  90. package/dist/covariance/index.js.map +1 -1
  91. package/dist/data/DataHandler.d.ts +4 -4
  92. package/dist/data/DataHandler.js +5 -5
  93. package/dist/data/DataHandler.js.map +1 -1
  94. package/dist/data/values/Egm96Data.d.ts +1 -1
  95. package/dist/data/values/Egm96Data.js +3 -3
  96. package/dist/data/values/Egm96Data.js.map +1 -1
  97. package/dist/data/values/HpAtmosphereData.d.ts +2 -2
  98. package/dist/data/values/HpAtmosphereData.js +3 -3
  99. package/dist/data/values/HpAtmosphereData.js.map +1 -1
  100. package/dist/data/values/HpAtmosphereResult.d.ts +2 -2
  101. package/dist/data/values/HpAtmosphereResult.js +1 -1
  102. package/dist/data/values/Iau1980Data.d.ts +1 -1
  103. package/dist/data/values/Iau1980Data.js +2 -2
  104. package/dist/data/values/Iau1980Data.js.map +1 -1
  105. package/dist/data/values/LeapSecond.d.ts +1 -1
  106. package/dist/data/values/LeapSecond.js +1 -1
  107. package/dist/data/values/LeapSecondData.d.ts +2 -2
  108. package/dist/data/values/LeapSecondData.js +2 -2
  109. package/dist/data/values/LeapSecondData.js.map +1 -1
  110. package/dist/data/values/egm96.d.ts +2 -2
  111. package/dist/data/values/egm96.js +1 -1
  112. package/dist/data/values/hpAtmosphere.d.ts +2 -2
  113. package/dist/data/values/hpAtmosphere.js +1 -1
  114. package/dist/data/values/iau1980.d.ts +2 -2
  115. package/dist/data/values/iau1980.js +1 -1
  116. package/dist/enums/AngularDiameterMethod.d.ts +1 -1
  117. package/dist/enums/AngularDiameterMethod.js +1 -1
  118. package/dist/enums/AngularDistanceMethod.d.ts +1 -1
  119. package/dist/enums/AngularDistanceMethod.js +1 -1
  120. package/dist/enums/OrbitRegime.d.ts +1 -1
  121. package/dist/enums/OrbitRegime.js +1 -1
  122. package/dist/enums/PassType.d.ts +1 -1
  123. package/dist/enums/PassType.js +1 -1
  124. package/dist/enums/Sgp4OpsMode.d.ts +1 -1
  125. package/dist/enums/Sgp4OpsMode.js +1 -1
  126. package/dist/enums/index.d.ts +7 -7
  127. package/dist/enums/index.js +7 -7
  128. package/dist/enums/index.js.map +1 -1
  129. package/dist/fetch/horizons-constants.d.ts +43 -0
  130. package/dist/fetch/horizons-constants.js +50 -0
  131. package/dist/fetch/horizons-constants.js.map +1 -0
  132. package/dist/fetch/horizons-interfaces.d.ts +37 -0
  133. package/dist/fetch/horizons-interfaces.js +2 -0
  134. package/dist/fetch/horizons-interfaces.js.map +1 -0
  135. package/dist/fetch/horizons.d.ts +86 -0
  136. package/dist/fetch/horizons.js +237 -0
  137. package/dist/fetch/horizons.js.map +1 -0
  138. package/dist/force/AtmosphericDrag.d.ts +3 -3
  139. package/dist/force/AtmosphericDrag.js +2 -2
  140. package/dist/force/AtmosphericDrag.js.map +1 -1
  141. package/dist/force/EarthGravity.d.ts +3 -3
  142. package/dist/force/EarthGravity.js +2 -2
  143. package/dist/force/EarthGravity.js.map +1 -1
  144. package/dist/force/Force.d.ts +3 -3
  145. package/dist/force/Force.js +1 -10
  146. package/dist/force/Force.js.map +1 -1
  147. package/dist/force/ForceModel.d.ts +3 -3
  148. package/dist/force/ForceModel.js +7 -7
  149. package/dist/force/ForceModel.js.map +1 -1
  150. package/dist/force/Gravity.d.ts +3 -3
  151. package/dist/force/Gravity.js +2 -2
  152. package/dist/force/Gravity.js.map +1 -1
  153. package/dist/force/SolarRadiationPressure.d.ts +3 -3
  154. package/dist/force/SolarRadiationPressure.js +4 -4
  155. package/dist/force/SolarRadiationPressure.js.map +1 -1
  156. package/dist/force/ThirdBodyGravity.d.ts +3 -3
  157. package/dist/force/ThirdBodyGravity.js +2 -2
  158. package/dist/force/ThirdBodyGravity.js.map +1 -1
  159. package/dist/force/Thrust.d.ts +3 -3
  160. package/dist/force/Thrust.js +2 -2
  161. package/dist/force/Thrust.js.map +1 -1
  162. package/dist/force/index.d.ts +1 -1
  163. package/dist/force/index.js +1 -1
  164. package/dist/force/index.js.map +1 -1
  165. package/dist/interfaces/BaseObjectParams.d.ts +2 -2
  166. package/dist/interfaces/BaseObjectParams.js +1 -1
  167. package/dist/interfaces/ClassicalElementsParams.d.ts +2 -2
  168. package/dist/interfaces/ClassicalElementsParams.js +1 -1
  169. package/dist/interfaces/EquinoctialElementsParams.d.ts +2 -2
  170. package/dist/interfaces/EquinoctialElementsParams.js +1 -1
  171. package/dist/interfaces/GroundPositionParams.d.ts +2 -2
  172. package/dist/interfaces/GroundPositionParams.js +1 -1
  173. package/dist/interfaces/RfSensorParams.d.ts +2 -2
  174. package/dist/interfaces/SatelliteParams.d.ts +2 -2
  175. package/dist/interfaces/SensorParams.d.ts +2 -2
  176. package/dist/interfaces/StarObjectParams.d.ts +1 -1
  177. package/dist/interfaces/TimeVariables.d.ts +1 -1
  178. package/dist/interfaces/index.d.ts +9 -9
  179. package/dist/interpolator/ChebyshevCoefficients.d.ts +2 -2
  180. package/dist/interpolator/ChebyshevCoefficients.js +2 -2
  181. package/dist/interpolator/ChebyshevCoefficients.js.map +1 -1
  182. package/dist/interpolator/ChebyshevInterpolator.d.ts +4 -4
  183. package/dist/interpolator/ChebyshevInterpolator.js +3 -3
  184. package/dist/interpolator/ChebyshevInterpolator.js.map +1 -1
  185. package/dist/interpolator/CubicSpline.d.ts +2 -2
  186. package/dist/interpolator/CubicSpline.js +1 -1
  187. package/dist/interpolator/CubicSplineInterpolator.d.ts +4 -4
  188. package/dist/interpolator/CubicSplineInterpolator.js +4 -4
  189. package/dist/interpolator/CubicSplineInterpolator.js.map +1 -1
  190. package/dist/interpolator/FieldInterpolator.d.ts +3 -3
  191. package/dist/interpolator/FieldInterpolator.js +2 -12
  192. package/dist/interpolator/FieldInterpolator.js.map +1 -1
  193. package/dist/interpolator/Interpolator.d.ts +2 -2
  194. package/dist/interpolator/Interpolator.js +2 -2
  195. package/dist/interpolator/Interpolator.js.map +1 -1
  196. package/dist/interpolator/LagrangeInterpolator.d.ts +3 -3
  197. package/dist/interpolator/LagrangeInterpolator.js +3 -3
  198. package/dist/interpolator/LagrangeInterpolator.js.map +1 -1
  199. package/dist/interpolator/StateInterpolator.d.ts +4 -4
  200. package/dist/interpolator/StateInterpolator.js +2 -10
  201. package/dist/interpolator/StateInterpolator.js.map +1 -1
  202. package/dist/interpolator/VerletBlendInterpolator.d.ts +5 -5
  203. package/dist/interpolator/VerletBlendInterpolator.js +5 -5
  204. package/dist/interpolator/VerletBlendInterpolator.js.map +1 -1
  205. package/dist/main.d.ts +20 -20
  206. package/dist/main.js +21 -20
  207. package/dist/main.js.map +1 -1
  208. package/dist/maneuver/TwoBurnOrbitTransfer.d.ts +3 -3
  209. package/dist/maneuver/TwoBurnOrbitTransfer.js +3 -3
  210. package/dist/maneuver/TwoBurnOrbitTransfer.js.map +1 -1
  211. package/dist/maneuver/Waypoint.d.ts +5 -5
  212. package/dist/maneuver/Waypoint.js +7 -7
  213. package/dist/maneuver/Waypoint.js.map +1 -1
  214. package/dist/objects/BaseObject.d.ts +3 -3
  215. package/dist/objects/BaseObject.js +2 -2
  216. package/dist/objects/BaseObject.js.map +1 -1
  217. package/dist/objects/DetailedSatellite.d.ts +4 -4
  218. package/dist/objects/DetailedSatellite.js +4 -4
  219. package/dist/objects/DetailedSatellite.js.map +1 -1
  220. package/dist/objects/DetailedSensor.d.ts +5 -5
  221. package/dist/objects/DetailedSensor.js +2 -2
  222. package/dist/objects/DetailedSensor.js.map +1 -1
  223. package/dist/objects/GroundObject.d.ts +4 -4
  224. package/dist/objects/GroundObject.js +3 -3
  225. package/dist/objects/GroundObject.js.map +1 -1
  226. package/dist/objects/LandObject.d.ts +3 -3
  227. package/dist/objects/LandObject.js +2 -2
  228. package/dist/objects/LandObject.js.map +1 -1
  229. package/dist/objects/Marker.d.ts +2 -2
  230. package/dist/objects/Marker.js +2 -2
  231. package/dist/objects/Marker.js.map +1 -1
  232. package/dist/objects/RfSensor.d.ts +2 -2
  233. package/dist/objects/RfSensor.js +2 -2
  234. package/dist/objects/RfSensor.js.map +1 -1
  235. package/dist/objects/Satellite.d.ts +12 -12
  236. package/dist/objects/Satellite.js +14 -14
  237. package/dist/objects/Satellite.js.map +1 -1
  238. package/dist/objects/Sensor.d.ts +6 -6
  239. package/dist/objects/Sensor.js +5 -5
  240. package/dist/objects/Sensor.js.map +1 -1
  241. package/dist/objects/Star.d.ts +3 -3
  242. package/dist/objects/Star.js +3 -3
  243. package/dist/objects/Star.js.map +1 -1
  244. package/dist/objects/index.d.ts +10 -10
  245. package/dist/objects/index.js +10 -10
  246. package/dist/objects/index.js.map +1 -1
  247. package/dist/observation/Observation.d.ts +11 -11
  248. package/dist/observation/Observation.js +1 -52
  249. package/dist/observation/Observation.js.map +1 -1
  250. package/dist/observation/ObservationOptical.d.ts +6 -6
  251. package/dist/observation/ObservationOptical.js +4 -4
  252. package/dist/observation/ObservationOptical.js.map +1 -1
  253. package/dist/observation/ObservationRadar.d.ts +6 -6
  254. package/dist/observation/ObservationRadar.js +4 -4
  255. package/dist/observation/ObservationRadar.js.map +1 -1
  256. package/dist/observation/ObservationUtils.d.ts +2 -2
  257. package/dist/observation/ObservationUtils.js +2 -2
  258. package/dist/observation/ObservationUtils.js.map +1 -1
  259. package/dist/observation/PropagatorPairs.d.ts +2 -2
  260. package/dist/observation/PropagatorPairs.js +1 -1
  261. package/dist/observation/RAE.d.ts +6 -6
  262. package/dist/observation/RAE.js +6 -6
  263. package/dist/observation/RAE.js.map +1 -1
  264. package/dist/observation/RadecGeocentric.d.ts +6 -6
  265. package/dist/observation/RadecGeocentric.js +5 -5
  266. package/dist/observation/RadecGeocentric.js.map +1 -1
  267. package/dist/observation/RadecTopocentric.d.ts +6 -6
  268. package/dist/observation/RadecTopocentric.js +9 -7
  269. package/dist/observation/RadecTopocentric.js.map +1 -1
  270. package/dist/observation/index.d.ts +5 -5
  271. package/dist/observation/index.js +5 -5
  272. package/dist/observation/index.js.map +1 -1
  273. package/dist/operations/BoxMuller.d.ts +2 -2
  274. package/dist/operations/BoxMuller.js +2 -2
  275. package/dist/operations/BoxMuller.js.map +1 -1
  276. package/dist/operations/EulerAngles.d.ts +2 -2
  277. package/dist/operations/EulerAngles.js +2 -2
  278. package/dist/operations/EulerAngles.js.map +1 -1
  279. package/dist/operations/Matrix.d.ts +2 -2
  280. package/dist/operations/Matrix.js +2 -2
  281. package/dist/operations/Matrix.js.map +1 -1
  282. package/dist/operations/Quaternion.d.ts +2 -2
  283. package/dist/operations/Quaternion.js +2 -2
  284. package/dist/operations/Quaternion.js.map +1 -1
  285. package/dist/operations/Random.d.ts +1 -1
  286. package/dist/operations/Random.js +1 -1
  287. package/dist/operations/RandomGaussianSource.d.ts +2 -2
  288. package/dist/operations/RandomGaussianSource.js +3 -3
  289. package/dist/operations/RandomGaussianSource.js.map +1 -1
  290. package/dist/operations/Vector.d.ts +2 -2
  291. package/dist/operations/Vector.js +2 -2
  292. package/dist/operations/Vector.js.map +1 -1
  293. package/dist/operations/Vector3D.d.ts +5 -4
  294. package/dist/operations/Vector3D.js +5 -4
  295. package/dist/operations/Vector3D.js.map +1 -1
  296. package/dist/operations/index.d.ts +4 -4
  297. package/dist/operations/index.js +4 -4
  298. package/dist/operations/index.js.map +1 -1
  299. package/dist/operations/operations.d.ts +5 -5
  300. package/dist/operations/operations.js +5 -5
  301. package/dist/operations/operations.js.map +1 -1
  302. package/dist/optimize/ChebyshevCompressor.d.ts +3 -3
  303. package/dist/optimize/ChebyshevCompressor.js +4 -4
  304. package/dist/optimize/ChebyshevCompressor.js.map +1 -1
  305. package/dist/optimize/DownhillSimplex.d.ts +2 -2
  306. package/dist/optimize/DownhillSimplex.js +2 -2
  307. package/dist/optimize/DownhillSimplex.js.map +1 -1
  308. package/dist/optimize/GoldenSection.d.ts +2 -2
  309. package/dist/optimize/GoldenSection.js +1 -1
  310. package/dist/optimize/PolynomialRegression.d.ts +2 -2
  311. package/dist/optimize/PolynomialRegression.js +4 -4
  312. package/dist/optimize/PolynomialRegression.js.map +1 -1
  313. package/dist/optimize/PolynomicalRegressionResult.d.ts +1 -1
  314. package/dist/optimize/PolynomicalRegressionResult.js +1 -1
  315. package/dist/optimize/SimpleLinearRegression.d.ts +1 -1
  316. package/dist/optimize/SimpleLinearRegression.js +1 -1
  317. package/dist/optimize/SimplexEntry.d.ts +1 -1
  318. package/dist/optimize/SimplexEntry.js +2 -2
  319. package/dist/optimize/SimplexEntry.js.map +1 -1
  320. package/dist/orbit_determination/BatchLeastSquaresOD.d.ts +5 -5
  321. package/dist/orbit_determination/BatchLeastSquaresOD.js +8 -8
  322. package/dist/orbit_determination/BatchLeastSquaresOD.js.map +1 -1
  323. package/dist/orbit_determination/BatchLeastSquaresResult.d.ts +3 -3
  324. package/dist/orbit_determination/BatchLeastSquaresResult.js +1 -1
  325. package/dist/orbit_determination/GaussIOD.d.ts +98 -0
  326. package/dist/orbit_determination/GaussIOD.js +291 -0
  327. package/dist/orbit_determination/GaussIOD.js.map +1 -0
  328. package/dist/orbit_determination/GibbsIOD.d.ts +2 -2
  329. package/dist/orbit_determination/GibbsIOD.js +4 -4
  330. package/dist/orbit_determination/GibbsIOD.js.map +1 -1
  331. package/dist/orbit_determination/GoodingIOD.d.ts +58 -8
  332. package/dist/orbit_determination/GoodingIOD.js +225 -35
  333. package/dist/orbit_determination/GoodingIOD.js.map +1 -1
  334. package/dist/orbit_determination/HerrickGibbsIOD.d.ts +2 -2
  335. package/dist/orbit_determination/HerrickGibbsIOD.js +2 -2
  336. package/dist/orbit_determination/HerrickGibbsIOD.js.map +1 -1
  337. package/dist/orbit_determination/LambertIOD.d.ts +2 -2
  338. package/dist/orbit_determination/LambertIOD.js +2 -2
  339. package/dist/orbit_determination/LambertIOD.js.map +1 -1
  340. package/dist/orbit_determination/ModifiedGoodingIOD.d.ts +3 -3
  341. package/dist/orbit_determination/ModifiedGoodingIOD.js +8 -8
  342. package/dist/orbit_determination/ModifiedGoodingIOD.js.map +1 -1
  343. package/dist/orbit_determination/index.d.ts +7 -7
  344. package/dist/orbit_determination/index.js +7 -7
  345. package/dist/orbit_determination/index.js.map +1 -1
  346. package/dist/propagator/DormandPrince54Propagator.d.ts +2 -2
  347. package/dist/propagator/DormandPrince54Propagator.js +2 -2
  348. package/dist/propagator/DormandPrince54Propagator.js.map +1 -1
  349. package/dist/propagator/KeplerPropagator.d.ts +6 -6
  350. package/dist/propagator/KeplerPropagator.js +6 -7
  351. package/dist/propagator/KeplerPropagator.js.map +1 -1
  352. package/dist/propagator/Propagator.d.ts +5 -5
  353. package/dist/propagator/Propagator.js +5 -5
  354. package/dist/propagator/Propagator.js.map +1 -1
  355. package/dist/propagator/RkCheckpoint.d.ts +2 -2
  356. package/dist/propagator/RkCheckpoint.js +1 -1
  357. package/dist/propagator/RkResult.d.ts +2 -2
  358. package/dist/propagator/RkResult.js +1 -1
  359. package/dist/propagator/RungeKutta4Propagator.d.ts +6 -6
  360. package/dist/propagator/RungeKutta4Propagator.js +5 -5
  361. package/dist/propagator/RungeKutta4Propagator.js.map +1 -1
  362. package/dist/propagator/RungeKutta89Propagator.d.ts +2 -2
  363. package/dist/propagator/RungeKutta89Propagator.js +2 -2
  364. package/dist/propagator/RungeKutta89Propagator.js.map +1 -1
  365. package/dist/propagator/RungeKuttaAdaptive.d.ts +6 -6
  366. package/dist/propagator/RungeKuttaAdaptive.js +52 -9
  367. package/dist/propagator/RungeKuttaAdaptive.js.map +1 -1
  368. package/dist/propagator/Sgp4Propagator.d.ts +7 -7
  369. package/dist/propagator/Sgp4Propagator.js +4 -4
  370. package/dist/propagator/Sgp4Propagator.js.map +1 -1
  371. package/dist/propagator/index.d.ts +3 -3
  372. package/dist/propagator/index.js +3 -3
  373. package/dist/propagator/index.js.map +1 -1
  374. package/dist/sgp4/index.d.ts +2 -2
  375. package/dist/sgp4/index.js +2 -2
  376. package/dist/sgp4/index.js.map +1 -1
  377. package/dist/sgp4/sgp4.d.ts +3 -3
  378. package/dist/sgp4/sgp4.js +11 -5
  379. package/dist/sgp4/sgp4.js.map +1 -1
  380. package/dist/smoothing/ExponentialSmoothing.d.ts +2 -2
  381. package/dist/smoothing/ExponentialSmoothing.js +1 -1
  382. package/dist/time/Epoch.d.ts +2 -2
  383. package/dist/time/Epoch.js +2 -2
  384. package/dist/time/Epoch.js.map +1 -1
  385. package/dist/time/EpochGPS.d.ts +3 -3
  386. package/dist/time/EpochGPS.js +3 -3
  387. package/dist/time/EpochGPS.js.map +1 -1
  388. package/dist/time/EpochTAI.d.ts +2 -2
  389. package/dist/time/EpochTAI.js +2 -2
  390. package/dist/time/EpochTAI.js.map +1 -1
  391. package/dist/time/EpochTDB.d.ts +2 -2
  392. package/dist/time/EpochTDB.js +2 -2
  393. package/dist/time/EpochTDB.js.map +1 -1
  394. package/dist/time/EpochTT.d.ts +2 -2
  395. package/dist/time/EpochTT.js +2 -2
  396. package/dist/time/EpochTT.js.map +1 -1
  397. package/dist/time/EpochUTC.d.ts +7 -7
  398. package/dist/time/EpochUTC.js +9 -9
  399. package/dist/time/EpochUTC.js.map +1 -1
  400. package/dist/time/EpochWindow.d.ts +2 -2
  401. package/dist/time/EpochWindow.js +1 -1
  402. package/dist/time/TimeStamped.d.ts +2 -2
  403. package/dist/time/TimeStamped.js +1 -1
  404. package/dist/time/index.d.ts +8 -8
  405. package/dist/time/index.js +8 -8
  406. package/dist/time/index.js.map +1 -1
  407. package/dist/transforms/TransformCache.d.ts +1 -1
  408. package/dist/transforms/TransformCache.js +1 -1
  409. package/dist/transforms/conversions.d.ts +2 -2
  410. package/dist/transforms/conversions.js +2 -2
  411. package/dist/transforms/conversions.js.map +1 -1
  412. package/dist/transforms/index.d.ts +2 -2
  413. package/dist/transforms/index.js +2 -2
  414. package/dist/transforms/index.js.map +1 -1
  415. package/dist/transforms/transforms.d.ts +1 -1
  416. package/dist/transforms/transforms.js +1 -1
  417. package/dist/transforms/transforms.js.map +1 -1
  418. package/dist/types/types.d.ts +8 -3
  419. package/dist/types/types.js +6 -1
  420. package/dist/types/types.js.map +1 -1
  421. package/dist/utils/constants.d.ts +2 -2
  422. package/dist/utils/constants.js +1 -1
  423. package/dist/utils/constants.js.map +1 -1
  424. package/dist/utils/create-covariance-from-tle.d.ts +1 -1
  425. package/dist/utils/create-covariance-from-tle.js +1 -1
  426. package/dist/utils/create-covariance-from-tle.js.map +1 -1
  427. package/dist/utils/functions.d.ts +4 -4
  428. package/dist/utils/functions.js +9 -4
  429. package/dist/utils/functions.js.map +1 -1
  430. package/dist/utils/index.d.ts +5 -5
  431. package/dist/utils/index.js +5 -5
  432. package/dist/utils/index.js.map +1 -1
  433. package/dist/utils/jacobian.d.ts +2 -2
  434. package/dist/utils/jacobian.js +1 -1
  435. package/dist/utils/jacobian.js.map +1 -1
  436. package/dist/utils/linearDistance.d.ts +1 -1
  437. package/docs/README.md +132 -0
  438. package/docs/getting-started.md +792 -0
  439. package/docs/lambert-satellite-integration-guide.md +766 -0
  440. package/docs/user-guide.md +1935 -0
  441. package/jest.config.mjs +28 -0
  442. package/package.json +3 -4
  443. package/src/body/Celestial.ts +2 -2
  444. package/src/body/Earth.ts +4 -4
  445. package/src/body/Moon.ts +7 -7
  446. package/src/body/NutationAngles.ts +2 -2
  447. package/src/body/PrecessionAngles.ts +2 -2
  448. package/src/body/Sun.ts +4 -4
  449. package/src/body/index.ts +6 -5
  450. package/src/conjunction/ConjunctionAssessment.ts +417 -0
  451. package/src/conjunction/ConjunctionEvent.ts +149 -0
  452. package/src/conjunction/ProbabilityOfCollision.ts +300 -0
  453. package/src/conjunction/index.ts +24 -0
  454. package/src/coordinate/ClassicalElements.ts +16 -11
  455. package/src/coordinate/EquinoctialElements.ts +7 -7
  456. package/src/coordinate/FormatTle.ts +2 -2
  457. package/src/coordinate/Geodetic.ts +8 -8
  458. package/src/coordinate/Hill.ts +4 -4
  459. package/src/coordinate/ITRF.ts +6 -6
  460. package/src/coordinate/J2000.ts +7 -7
  461. package/src/coordinate/RIC.ts +4 -4
  462. package/src/coordinate/RelativeState.ts +5 -5
  463. package/src/coordinate/StateVector.ts +8 -3
  464. package/src/coordinate/TEME.ts +6 -6
  465. package/src/coordinate/Tle.ts +9 -9
  466. package/src/coordinate/index.ts +13 -12
  467. package/src/coordinate/tle-format-data.ts +1 -1
  468. package/src/covariance/CovarianceSample.ts +13 -13
  469. package/src/covariance/StateCovariance.ts +2 -2
  470. package/src/covariance/index.ts +3 -2
  471. package/src/data/DataHandler.ts +6 -6
  472. package/src/data/values/Egm96Data.ts +3 -3
  473. package/src/data/values/HpAtmosphereData.ts +3 -3
  474. package/src/data/values/HpAtmosphereResult.ts +2 -2
  475. package/src/data/values/Iau1980Data.ts +2 -2
  476. package/src/data/values/LeapSecond.ts +1 -1
  477. package/src/data/values/LeapSecondData.ts +2 -2
  478. package/src/data/values/egm96.ts +2 -2
  479. package/src/data/values/hpAtmosphere.ts +2 -2
  480. package/src/data/values/iau1980.ts +2 -2
  481. package/src/enums/AngularDiameterMethod.ts +1 -1
  482. package/src/enums/AngularDistanceMethod.ts +1 -1
  483. package/src/enums/OrbitRegime.ts +1 -1
  484. package/src/enums/PassType.ts +1 -1
  485. package/src/enums/Sgp4OpsMode.ts +1 -1
  486. package/src/enums/index.ts +8 -7
  487. package/src/fetch/horizons-constants.ts +53 -0
  488. package/src/fetch/horizons-interfaces.ts +38 -0
  489. package/src/fetch/horizons.ts +300 -0
  490. package/src/force/AtmosphericDrag.ts +3 -3
  491. package/src/force/EarthGravity.ts +3 -3
  492. package/src/force/Force.ts +3 -5
  493. package/src/force/ForceModel.ts +9 -9
  494. package/src/force/Gravity.ts +3 -3
  495. package/src/force/SolarRadiationPressure.ts +4 -4
  496. package/src/force/ThirdBodyGravity.ts +3 -3
  497. package/src/force/Thrust.ts +3 -3
  498. package/src/force/index.ts +2 -1
  499. package/src/interfaces/BaseObjectParams.ts +2 -2
  500. package/src/interfaces/ClassicalElementsParams.ts +2 -2
  501. package/src/interfaces/EquinoctialElementsParams.ts +2 -2
  502. package/src/interfaces/GroundPositionParams.ts +2 -2
  503. package/src/interfaces/RfSensorParams.ts +2 -2
  504. package/src/interfaces/SatelliteParams.ts +2 -2
  505. package/src/interfaces/SensorParams.ts +3 -3
  506. package/src/interfaces/StarObjectParams.ts +1 -1
  507. package/src/interfaces/TimeVariables.ts +1 -1
  508. package/src/interfaces/index.ts +10 -9
  509. package/src/interpolator/ChebyshevCoefficients.ts +2 -2
  510. package/src/interpolator/ChebyshevInterpolator.ts +4 -4
  511. package/src/interpolator/CubicSpline.ts +2 -2
  512. package/src/interpolator/CubicSplineInterpolator.ts +4 -4
  513. package/src/interpolator/FieldInterpolator.ts +3 -5
  514. package/src/interpolator/Interpolator.ts +2 -2
  515. package/src/interpolator/LagrangeInterpolator.ts +3 -3
  516. package/src/interpolator/StateInterpolator.ts +4 -6
  517. package/src/interpolator/VerletBlendInterpolator.ts +5 -5
  518. package/src/main.ts +41 -20
  519. package/src/maneuver/TwoBurnOrbitTransfer.ts +3 -3
  520. package/src/maneuver/Waypoint.ts +8 -8
  521. package/src/objects/BaseObject.ts +3 -3
  522. package/src/objects/DetailedSatellite.ts +9 -9
  523. package/src/objects/DetailedSensor.ts +5 -5
  524. package/src/objects/GroundObject.ts +9 -9
  525. package/src/objects/LandObject.ts +3 -3
  526. package/src/objects/Marker.ts +2 -2
  527. package/src/objects/RfSensor.ts +2 -2
  528. package/src/objects/Satellite.ts +21 -21
  529. package/src/objects/Sensor.ts +7 -7
  530. package/src/objects/Star.ts +3 -3
  531. package/src/objects/index.ts +11 -10
  532. package/src/observation/Observation.ts +11 -23
  533. package/src/observation/ObservationOptical.ts +7 -7
  534. package/src/observation/ObservationRadar.ts +7 -7
  535. package/src/observation/ObservationUtils.ts +2 -2
  536. package/src/observation/PropagatorPairs.ts +2 -2
  537. package/src/observation/RAE.ts +9 -9
  538. package/src/observation/RadecGeocentric.ts +9 -9
  539. package/src/observation/RadecTopocentric.ts +13 -10
  540. package/src/observation/index.ts +6 -5
  541. package/src/operations/BoxMuller.ts +2 -2
  542. package/src/operations/EulerAngles.ts +2 -2
  543. package/src/operations/Matrix.ts +2 -2
  544. package/src/operations/Quaternion.ts +2 -2
  545. package/src/operations/Random.ts +1 -1
  546. package/src/operations/RandomGaussianSource.ts +3 -3
  547. package/src/operations/Vector.ts +2 -2
  548. package/src/operations/Vector3D.ts +6 -4
  549. package/src/operations/index.ts +5 -4
  550. package/src/operations/operations.ts +6 -5
  551. package/src/optimize/ChebyshevCompressor.ts +5 -5
  552. package/src/optimize/DownhillSimplex.ts +2 -2
  553. package/src/optimize/GoldenSection.ts +2 -2
  554. package/src/optimize/PolynomialRegression.ts +4 -4
  555. package/src/optimize/PolynomicalRegressionResult.ts +1 -1
  556. package/src/optimize/SimpleLinearRegression.ts +1 -1
  557. package/src/optimize/SimplexEntry.ts +2 -2
  558. package/src/orbit_determination/BatchLeastSquaresOD.ts +10 -10
  559. package/src/orbit_determination/BatchLeastSquaresResult.ts +3 -3
  560. package/src/orbit_determination/GaussIOD.ts +393 -0
  561. package/src/orbit_determination/GibbsIOD.ts +4 -4
  562. package/src/orbit_determination/GoodingIOD.ts +458 -160
  563. package/src/orbit_determination/HerrickGibbsIOD.ts +2 -2
  564. package/src/orbit_determination/LambertIOD.ts +2 -2
  565. package/src/orbit_determination/ModifiedGoodingIOD.ts +33 -22
  566. package/src/orbit_determination/index.ts +8 -7
  567. package/src/propagator/DormandPrince54Propagator.ts +2 -2
  568. package/src/propagator/KeplerPropagator.ts +7 -8
  569. package/src/propagator/Propagator.ts +6 -6
  570. package/src/propagator/RkCheckpoint.ts +2 -2
  571. package/src/propagator/RkResult.ts +2 -2
  572. package/src/propagator/RungeKutta4Propagator.ts +6 -6
  573. package/src/propagator/RungeKutta89Propagator.ts +2 -2
  574. package/src/propagator/RungeKuttaAdaptive.ts +62 -12
  575. package/src/propagator/Sgp4Propagator.ts +7 -7
  576. package/src/propagator/index.ts +4 -3
  577. package/src/sgp4/index.ts +3 -2
  578. package/src/sgp4/sgp4.ts +6 -6
  579. package/src/smoothing/ExponentialSmoothing.ts +2 -2
  580. package/src/time/Epoch.ts +3 -3
  581. package/src/time/EpochGPS.ts +5 -5
  582. package/src/time/EpochTAI.ts +2 -2
  583. package/src/time/EpochTDB.ts +2 -2
  584. package/src/time/EpochTT.ts +2 -2
  585. package/src/time/EpochUTC.ts +10 -10
  586. package/src/time/EpochWindow.ts +2 -2
  587. package/src/time/TimeStamped.ts +2 -2
  588. package/src/time/index.ts +9 -8
  589. package/src/transforms/TransformCache.ts +1 -1
  590. package/src/transforms/conversions.ts +2 -2
  591. package/src/transforms/index.ts +3 -2
  592. package/src/transforms/transforms.ts +4 -4
  593. package/src/types/types.ts +8 -3
  594. package/src/utils/constants.ts +2 -2
  595. package/src/utils/create-covariance-from-tle.ts +1 -1
  596. package/src/utils/functions.ts +10 -5
  597. package/src/utils/index.ts +6 -5
  598. package/src/utils/jacobian.ts +2 -2
  599. package/src/utils/linearDistance.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @author @thkruz Theodore Kruczek
2
+ * @author Theodore Kruczek
3
3
  * @license AGPL-3.0-or-later
4
4
  * @copyright (c) 2025 Kruczek Labs LLC
5
5
  *
@@ -15,7 +15,7 @@
15
15
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
16
16
  */
17
17
 
18
- import { Earth, EpochUTC, J2000, Kilometers, KilometersPerSecond, Vector3D } from '../main.js';
18
+ import { Earth, EpochUTC, J2000, Kilometers, KilometersPerSecond, Vector3D } from '../main';
19
19
 
20
20
  /**
21
21
  * Herrik-Gibbs 3-position initial orbit determination.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @author @thkruz Theodore Kruczek
2
+ * @author Theodore Kruczek
3
3
  * @license AGPL-3.0-or-later
4
4
  * @copyright (c) 2025 Kruczek Labs LLC
5
5
  *
@@ -15,7 +15,7 @@
15
15
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
16
16
  */
17
17
 
18
- import { Earth, EpochUTC, J2000, Kilometers, KilometersPerSecond, Radians, Vector3D } from '../main.js';
18
+ import { Earth, EpochUTC, J2000, Kilometers, KilometersPerSecond, Radians, Vector3D } from '../main';
19
19
 
20
20
  // / Lambert two-position and time initial orbit determination.
21
21
  export class LambertIOD {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @author @thkruz Theodore Kruczek
2
+ * @author Theodore Kruczek
3
3
  * @license AGPL-3.0-or-later
4
4
  * @copyright (c) 2025 Kruczek Labs LLC
5
5
  *
@@ -15,13 +15,13 @@
15
15
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
16
16
  */
17
17
 
18
- import { Earth, EpochUTC, J2000, Kilometers, KilometersPerSecond, RadecTopocentric, Vector3D } from '../main.js';
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';
18
+ import { ForceModel } from '../force/ForceModel';
19
+ import { Earth, EpochUTC, J2000, Kilometers, KilometersPerSecond, RadecTopocentric, Vector3D } from '../main';
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';
25
25
 
26
26
  type SolveOptions = {
27
27
  nRev?: number;
@@ -38,26 +38,24 @@ type SolveOptions = {
38
38
  * Used for orbit determination from multiple optical observations.
39
39
  */
40
40
  export class ModifiedGoodingIOD {
41
- private readonly observations_: ObservationOptical[];
41
+ private observations_!: ObservationOptical[];
42
42
  private readonly mu_: number;
43
43
 
44
- constructor(observations: ObservationOptical[], mu: number = Earth.mu) {
45
- this.observations_ = observations;
44
+ constructor(mu: number = Earth.mu) {
46
45
  this.mu_ = mu;
47
46
  }
48
47
 
49
- private createInitial_(r0: Kilometers, rN: Kilometers, nRev: number, direction: boolean): J2000 {
48
+ private createInitial_(r1Init: Kilometers | null, rNInit: Kilometers | null, nRev: number, direction: boolean): J2000 {
50
49
  const iod = new GoodingIOD(
51
- this.observations_[0],
52
- this.observations_[Math.floor(this.observations_.length / 2)],
53
- this.observations_[this.observations_.length - 1],
54
50
  this.mu_,
55
51
  );
56
52
 
57
- return iod.solve(r0, rN, nRev, direction);
53
+ return iod.estimate(this.observations_[0],
54
+ this.observations_[Math.floor(this.observations_.length / 2)],
55
+ this.observations_[this.observations_.length - 1], r1Init, rNInit, nRev, direction);
58
56
  }
59
57
 
60
- private _createErrorFunction(aprioriEpoch: EpochUTC): CostFunction {
58
+ private createErrorFunction_(aprioriEpoch: EpochUTC): CostFunction {
61
59
  const forceModel = new ForceModel().setGravity(this.mu_);
62
60
  const scoreFn = (x: Float64Array): number => {
63
61
  const position = new Vector3D(x[0] as Kilometers, x[1] as Kilometers, x[2] as Kilometers);
@@ -87,8 +85,9 @@ export class ModifiedGoodingIOD {
87
85
  }
88
86
 
89
87
  solve(
90
- r0: Kilometers,
91
- rN: Kilometers,
88
+ observations: ObservationOptical[],
89
+ r0?: Kilometers,
90
+ rN?: Kilometers,
92
91
  {
93
92
  nRev = 0,
94
93
  direction = true,
@@ -96,14 +95,15 @@ export class ModifiedGoodingIOD {
96
95
  velSearch = 0.1,
97
96
  tolerance = 1e-6,
98
97
  printIter = false,
99
- }: SolveOptions,
98
+ }: SolveOptions = this.defaultSolveOptions_(),
100
99
  ): J2000 {
100
+ this.observations_ = observations;
101
101
  if (this.observations_.length < 3) {
102
102
  throw new Error('At least 3 observations required for Gooding IOD.');
103
103
  }
104
- const init = this.createInitial_(r0, rN, nRev, direction);
104
+ const init = this.createInitial_(r0 ?? null, rN ?? null, nRev, direction);
105
105
  const guess = Float64Array.from([...init.position.toArray(), ...init.velocity.toArray()]);
106
- const solveFn = this._createErrorFunction(init.epoch);
106
+ const solveFn = this.createErrorFunction_(init.epoch);
107
107
  const simplex = [
108
108
  Float64Array.from(guess),
109
109
  Float64Array.from([guess[0] + posSearch, guess[1], guess[2], guess[3], guess[4], guess[5]]),
@@ -130,4 +130,15 @@ export class ModifiedGoodingIOD {
130
130
  ),
131
131
  );
132
132
  }
133
+
134
+ private defaultSolveOptions_(): SolveOptions {
135
+ return {
136
+ nRev: 0,
137
+ direction: true,
138
+ posSearch: 10.0,
139
+ velSearch: 0.1,
140
+ tolerance: 1e-6,
141
+ printIter: false,
142
+ };
143
+ }
133
144
  }
@@ -1,7 +1,8 @@
1
- export { BatchLeastSquaresOD } from './BatchLeastSquaresOD.js';
2
- export { BatchLeastSquaresResult } from './BatchLeastSquaresResult.js';
3
- export { GibbsIOD } from './GibbsIOD.js';
4
- export { GoodingIOD } from './GoodingIOD.js';
5
- export { HerrickGibbsIOD } from './HerrickGibbsIOD.js';
6
- export { LambertIOD } from './LambertIOD.js';
7
- export { ModifiedGoodingIOD } from './ModifiedGoodingIOD.js';
1
+ export { BatchLeastSquaresOD } from './BatchLeastSquaresOD';
2
+ export { BatchLeastSquaresResult } from './BatchLeastSquaresResult';
3
+ export { GibbsIOD } from './GibbsIOD';
4
+ export { GoodingIOD } from './GoodingIOD';
5
+ export { HerrickGibbsIOD } from './HerrickGibbsIOD';
6
+ export { LambertIOD } from './LambertIOD';
7
+ export { ModifiedGoodingIOD } from './ModifiedGoodingIOD';
8
+
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @author @thkruz Theodore Kruczek
2
+ * @author Theodore Kruczek
3
3
  * @license AGPL-3.0-or-later
4
4
  * @copyright (c) 2025 Kruczek Labs LLC
5
5
  *
@@ -16,7 +16,7 @@
16
16
  */
17
17
 
18
18
  /* eslint-disable class-methods-use-this */
19
- import { RungeKuttaAdaptive } from './RungeKuttaAdaptive.js';
19
+ import { RungeKuttaAdaptive } from './RungeKuttaAdaptive';
20
20
 
21
21
  export class DormandPrince54Propagator extends RungeKuttaAdaptive {
22
22
  private readonly 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]);
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @author @thkruz Theodore Kruczek
2
+ * @author Theodore Kruczek
3
3
  * @license AGPL-3.0-or-later
4
4
  * @copyright (c) 2025 Kruczek Labs LLC
5
5
  *
@@ -15,10 +15,10 @@
15
15
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
16
16
  */
17
17
 
18
- import { ClassicalElements, EpochUTC, J2000, Seconds } from '../main.js';
19
- import { Thrust } from '../force/Thrust.js';
20
- import { VerletBlendInterpolator } from '../interpolator/VerletBlendInterpolator.js';
21
- import { Propagator } from './Propagator.js';
18
+ import { Thrust } from '../force/Thrust';
19
+ import { VerletBlendInterpolator } from '../interpolator/VerletBlendInterpolator';
20
+ import { ClassicalElements, EpochUTC, J2000, Seconds } from '../main';
21
+ import { Propagator } from './Propagator';
22
22
 
23
23
  // / Kepler analytical two-body propagator.
24
24
  export class KeplerPropagator extends Propagator {
@@ -50,8 +50,7 @@ export class KeplerPropagator extends Propagator {
50
50
  this.cacheState_ = J2000.fromClassicalElements(this.elements_);
51
51
  }
52
52
 
53
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
54
- maneuver(maneuver: Thrust, interval = 60): J2000[] {
53
+ maneuver(maneuver: Thrust): J2000[] {
55
54
  this.cacheState_ = maneuver.apply(this.propagate(maneuver.center));
56
55
  this.elements_ = this.cacheState_.toClassicalElements();
57
56
 
@@ -74,7 +73,7 @@ export class KeplerPropagator extends Propagator {
74
73
  ephemeris.push(this.cacheState_);
75
74
  }
76
75
  }
77
- ephemeris.push(...this.maneuver(mvr, interval));
76
+ ephemeris.push(...this.maneuver(mvr));
78
77
  }
79
78
  while (this.cacheState_.epoch < finish) {
80
79
  const step = Math.min(finish.difference(this.cacheState_.epoch), interval) as Seconds;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @author @thkruz Theodore Kruczek
2
+ * @author Theodore Kruczek
3
3
  * @license AGPL-3.0-or-later
4
4
  * @copyright (c) 2025 Kruczek Labs LLC
5
5
  *
@@ -15,10 +15,10 @@
15
15
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
16
16
  */
17
17
 
18
- import { EpochUTC, J2000, Seconds } from '../main.js';
19
- import { Thrust } from '../force/Thrust.js';
20
- import { VerletBlendInterpolator } from '../interpolator/VerletBlendInterpolator.js';
21
- import { GoldenSection } from './../optimize/GoldenSection.js';
18
+ import { Thrust } from '../force/Thrust';
19
+ import { VerletBlendInterpolator } from '../interpolator/VerletBlendInterpolator';
20
+ import { EpochUTC, J2000, Seconds } from '../main';
21
+ import { GoldenSection } from './../optimize/GoldenSection';
22
22
 
23
23
  // Propagator base class.
24
24
  export abstract class Propagator {
@@ -93,7 +93,7 @@ export abstract class Propagator {
93
93
  ephemerisManeuver(
94
94
  start: EpochUTC,
95
95
  finish: EpochUTC,
96
- maneuvers: Thrust[],
96
+ _maneuvers: Thrust[],
97
97
  interval = 60.0 as Seconds,
98
98
  ): VerletBlendInterpolator {
99
99
  const output: J2000[] = [];
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @author @thkruz Theodore Kruczek
2
+ * @author Theodore Kruczek
3
3
  * @license AGPL-3.0-or-later
4
4
  * @copyright (c) 2025 Kruczek Labs LLC
5
5
  *
@@ -15,7 +15,7 @@
15
15
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
16
16
  */
17
17
 
18
- import { J2000 } from '../main.js';
18
+ import { J2000 } from '../main';
19
19
 
20
20
  // / Runge-Kutta adaptive state checkpoint.
21
21
  export class RkCheckpoint {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @author @thkruz Theodore Kruczek
2
+ * @author Theodore Kruczek
3
3
  * @license AGPL-3.0-or-later
4
4
  * @copyright (c) 2025 Kruczek Labs LLC
5
5
  *
@@ -15,7 +15,7 @@
15
15
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
16
16
  */
17
17
 
18
- import { J2000 } from '../main.js';
18
+ import { J2000 } from '../main';
19
19
 
20
20
  // / Result of adaptive numerical integration.
21
21
  export class RkResult {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @author @thkruz Theodore Kruczek
2
+ * @author Theodore Kruczek
3
3
  * @license AGPL-3.0-or-later
4
4
  * @copyright (c) 2025 Kruczek Labs LLC
5
5
  *
@@ -15,11 +15,11 @@
15
15
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
16
16
  */
17
17
 
18
- import { EpochUTC, J2000, Kilometers, KilometersPerSecond, Seconds, Vector, Vector3D } from '../main.js';
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';
18
+ import { ForceModel } from '../force/ForceModel';
19
+ import { Thrust } from '../force/Thrust';
20
+ import { VerletBlendInterpolator } from '../interpolator/VerletBlendInterpolator';
21
+ import { EpochUTC, J2000, Kilometers, KilometersPerSecond, Seconds, Vector, Vector3D } from '../main';
22
+ import { Propagator } from './Propagator';
23
23
 
24
24
  // / Runge-Kutta 4 fixed numerical propagator.
25
25
  export class RungeKutta4Propagator extends Propagator {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @author @thkruz Theodore Kruczek
2
+ * @author Theodore Kruczek
3
3
  * @license AGPL-3.0-or-later
4
4
  * @copyright (c) 2025 Kruczek Labs LLC
5
5
  *
@@ -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.js';
20
+ import { RungeKuttaAdaptive } from './RungeKuttaAdaptive';
21
21
 
22
22
  // / Runge-Kutta 8(9) adaptive numerical propagator.
23
23
  export class RungeKutta89Propagator extends RungeKuttaAdaptive {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @author @thkruz Theodore Kruczek
2
+ * @author Theodore Kruczek
3
3
  * @license AGPL-3.0-or-later
4
4
  * @copyright (c) 2025 Kruczek Labs LLC
5
5
  *
@@ -15,13 +15,13 @@
15
15
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
16
16
  */
17
17
 
18
- import { EpochUTC, J2000, Kilometers, KilometersPerSecond, Seconds, Vector, Vector3D } from '../main.js';
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';
18
+ import { ForceModel } from '../force/ForceModel';
19
+ import { Thrust } from '../force/Thrust';
20
+ import { EpochUTC, J2000, Kilometers, KilometersPerSecond, Seconds, Vector, Vector3D } from '../main';
21
+ import { VerletBlendInterpolator } from './../interpolator/VerletBlendInterpolator';
22
+ import { Propagator } from './Propagator';
23
+ import { RkCheckpoint } from './RkCheckpoint';
24
+ import { RkResult } from './RkResult';
25
25
 
26
26
  // / Adaptive Runge-Kutta propagator base class.
27
27
  export abstract class RungeKuttaAdaptive extends Propagator {
@@ -84,7 +84,7 @@ export abstract class RungeKuttaAdaptive extends Propagator {
84
84
 
85
85
  private kfn_(
86
86
  epoch: EpochUTC,
87
- rv: Vector<Kilometers|KilometersPerSecond>,
87
+ rv: Vector<Kilometers | KilometersPerSecond>,
88
88
  hArg: Seconds,
89
89
  kArg: Vector<Kilometers>,
90
90
  step: Seconds,
@@ -101,6 +101,14 @@ export abstract class RungeKuttaAdaptive extends Propagator {
101
101
  }
102
102
 
103
103
  private integrate_(state: J2000, step: Seconds): RkResult {
104
+ // Check for NaN in input
105
+ if (!Number.isFinite(step)) {
106
+ throw new RangeError(`Invalid step size: ${step}`);
107
+ }
108
+ if (!Number.isFinite(state.epoch.posix)) {
109
+ throw new RangeError(`Invalid epoch: ${state.epoch.posix}`);
110
+ }
111
+
104
112
  const k: Vector[] = new Array(this.a.length).fill(Vector.origin3);
105
113
  const y = state.position.join(state.velocity) as Vector<Kilometers>;
106
114
 
@@ -121,16 +129,37 @@ export abstract class RungeKuttaAdaptive extends Propagator {
121
129
  y1 = y1.add(k[i].scale(this.ch[i])) as Vector<Kilometers>;
122
130
  y2 = y2.add(k[i].scale(this.c[i])) as Vector<Kilometers>;
123
131
  }
124
- const teVal = y1.distance(y2);
125
- let hNew = 0.9 * step * (this.tolerance_ / teVal) ** (1.0 / this.order);
132
+ let teVal = y1.distance(y2);
133
+
134
+ if (teVal === 0) {
135
+ teVal = Number.EPSILON;
136
+ }
137
+
138
+ // Guard against division by zero or very small errors
139
+ if (!Number.isFinite(teVal) || teVal === 0) {
140
+ throw new RangeError(`Invalid error value in integration: ${teVal}`);
141
+ }
142
+
126
143
  const hOld = Math.abs(step);
144
+ let hNew = 0.9 * hOld * (this.tolerance_ / teVal) ** (1.0 / this.order);
127
145
 
128
146
  hNew = Math.max(0.2 * hOld, Math.min(5.0 * hOld, hNew));
129
147
  hNew = Math.max(1e-5, Math.min(1000.0, hNew));
130
148
 
149
+ // Verify step size is valid
150
+ if (!Number.isFinite(hNew)) {
151
+ throw new RangeError(`Computed step size is invalid: ${hNew}`);
152
+ }
153
+
154
+ const newEpoch = state.epoch.roll(step);
155
+
156
+ if (!Number.isFinite(newEpoch.posix)) {
157
+ throw new RangeError(`Computed epoch is invalid: ${newEpoch.posix}`);
158
+ }
159
+
131
160
  return new RkResult(
132
161
  new J2000(
133
- state.epoch.roll(step),
162
+ newEpoch,
134
163
  y1.toVector3D(0) as Vector3D<Kilometers>,
135
164
  y1.toVector3D(3) as Vector3D<KilometersPerSecond>,
136
165
  ),
@@ -141,6 +170,8 @@ export abstract class RungeKuttaAdaptive extends Propagator {
141
170
 
142
171
  propagate(epoch: EpochUTC): J2000 {
143
172
  let delta = epoch.difference(this._cacheState.epoch);
173
+ let consecutiveFailures = 0;
174
+ const maxConsecutiveFailures = 1000;
144
175
 
145
176
  while (delta !== 0) {
146
177
  const direction = delta >= 0 ? 1 : -1;
@@ -149,8 +180,27 @@ export abstract class RungeKuttaAdaptive extends Propagator {
149
180
 
150
181
  this._stepSize = result.newStep;
151
182
  if (result.error > this.tolerance_) {
183
+ consecutiveFailures++;
184
+ if (consecutiveFailures >= maxConsecutiveFailures) {
185
+ return this._cacheState;
186
+ }
152
187
  continue;
153
188
  }
189
+ consecutiveFailures = 0;
190
+ // Validate result.state before assigning
191
+ if (!Number.isFinite(result.state.epoch.posix)) {
192
+ throw new RangeError(`Invalid propagated epoch: ${result.state.epoch.posix}`);
193
+ }
194
+ if (!Number.isFinite(result.state.position.x) ||
195
+ !Number.isFinite(result.state.position.y) ||
196
+ !Number.isFinite(result.state.position.z)) {
197
+ throw new RangeError(`Invalid propagated position: ${result.state.position}`);
198
+ }
199
+ if (!Number.isFinite(result.state.velocity.x) ||
200
+ !Number.isFinite(result.state.velocity.y) ||
201
+ !Number.isFinite(result.state.velocity.z)) {
202
+ throw new RangeError(`Invalid propagated velocity: ${result.state.velocity}`);
203
+ }
154
204
  this._cacheState = result.state;
155
205
  delta = epoch.difference(this._cacheState.epoch);
156
206
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @author @thkruz Theodore Kruczek
2
+ * @author Theodore Kruczek
3
3
  * @license AGPL-3.0-or-later
4
4
  * @copyright (c) 2025 Kruczek Labs LLC
5
5
  *
@@ -17,10 +17,10 @@
17
17
 
18
18
  /* eslint-disable @typescript-eslint/no-unused-vars */
19
19
  /* eslint-disable class-methods-use-this */
20
- import { EpochUTC, J2000, Tle } from '../main.js';
21
- import { Thrust } from '../force/Thrust.js';
22
- import { VerletBlendInterpolator } from '../interpolator/VerletBlendInterpolator.js';
23
- import { Propagator } from './Propagator.js';
20
+ import { Thrust } from '../force/Thrust';
21
+ import { VerletBlendInterpolator } from '../interpolator/VerletBlendInterpolator';
22
+ import { EpochUTC, J2000, Tle } from '../main';
23
+ import { Propagator } from './Propagator';
24
24
 
25
25
  /**
26
26
  * Sgp4Propagator is a propagator that uses the SGP4 model to propagate the state of an object.
@@ -51,7 +51,7 @@ export class Sgp4Propagator extends Propagator {
51
51
  * @param maneuvers The array of thrust maneuvers.
52
52
  * @param interval The time interval in seconds.
53
53
  */
54
- ephemerisManeuver(start: EpochUTC, finish: EpochUTC, maneuvers: Thrust[], interval = 60.0): VerletBlendInterpolator {
54
+ ephemerisManeuver(_start: EpochUTC, _finish: EpochUTC, _maneuvers: Thrust[], _interval = 60.0): VerletBlendInterpolator {
55
55
  throw new Error('Maneuvers cannot be modelled with SGP4.');
56
56
  }
57
57
 
@@ -61,7 +61,7 @@ export class Sgp4Propagator extends Propagator {
61
61
  * @param interval - The time interval for the maneuver (default: 60.0 seconds).
62
62
  * @throws Error if maneuvers cannot be modeled with SGP4.
63
63
  */
64
- maneuver(maneuver: Thrust, interval = 60.0): J2000[] {
64
+ maneuver(_maneuver: Thrust, _interval = 60.0): J2000[] {
65
65
  throw new Error('Maneuvers cannot be modelled with SGP4.');
66
66
  }
67
67
 
@@ -1,3 +1,4 @@
1
- export { RungeKutta4Propagator } from './RungeKutta4Propagator.js';
2
- export { RungeKutta89Propagator } from './RungeKutta89Propagator.js';
3
- export { Sgp4Propagator } from './Sgp4Propagator.js';
1
+ export { RungeKutta4Propagator } from './RungeKutta4Propagator';
2
+ export { RungeKutta89Propagator } from './RungeKutta89Propagator';
3
+ export { Sgp4Propagator } from './Sgp4Propagator';
4
+
package/src/sgp4/index.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @author @thkruz Theodore Kruczek
2
+ * @author Theodore Kruczek
3
3
  * @description Orbital Object ToolKit (ootk) is a collection of tools for working
4
4
  * with satellites and other orbital objects.
5
5
  * @license AGPL-3.0-or-later
@@ -21,4 +21,5 @@
21
21
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
22
22
  */
23
23
 
24
- export { Sgp4 } from './sgp4.js';
24
+ export { Sgp4 } from './sgp4';
25
+
package/src/sgp4/sgp4.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @author @thkruz Theodore Kruczek
2
+ * @author Theodore Kruczek
3
3
  * @description Orbital Object ToolKit (ootk) is a collection of tools for working
4
4
  * with satellites and other orbital objects.
5
5
  * @license AGPL-3.0-or-later
@@ -27,14 +27,14 @@
27
27
  /* eslint-disable max-lines */
28
28
  /* eslint-disable @typescript-eslint/no-loss-of-precision */
29
29
 
30
- import { OmmParsedDataFormat } from '../interfaces/OmmFormat.js';
31
- import { Sgp4OpsMode } from '../enums/Sgp4OpsMode.js';
30
+ import { Sgp4OpsMode } from '../enums/Sgp4OpsMode';
31
+ import { OmmParsedDataFormat } from '../interfaces/OmmFormat';
32
+ import { Tle } from '../main';
32
33
  import {
33
34
  GreenwichMeanSiderealTime, Kilometers, KilometersPerSecond, SatelliteRecord, StateVectorSgp4, Vec3Flat,
34
35
  } from '../types/types.js';
35
- import { DEG2RAD, PI, TAU, temp4, x2o3 } from '../utils/constants.js';
36
- import { Sgp4ErrorCode } from './sgp4-error.js';
37
- import { Tle } from '../main.js';
36
+ import { DEG2RAD, PI, TAU, temp4, x2o3 } from '../utils/constants';
37
+ import { Sgp4ErrorCode } from './sgp4-error';
38
38
 
39
39
  export enum Sgp4GravConstants {
40
40
  wgs72old = 'wgs72old',
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @author @thkruz Theodore Kruczek
2
+ * @author Theodore Kruczek
3
3
  * @license AGPL-3.0-or-later
4
4
  * @copyright (c) 2025 Kruczek Labs LLC
5
5
  *
@@ -15,7 +15,7 @@
15
15
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
16
16
  */
17
17
 
18
- import { EpochUTC } from '../main.js';
18
+ import { EpochUTC } from '../main';
19
19
 
20
20
  // / Exponential data smoothing methods.
21
21
  export class ExponentialSmoothing {
package/src/time/Epoch.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @author @thkruz Theodore Kruczek
2
+ * @author Theodore Kruczek
3
3
  * @description Orbital Object ToolKit (ootk) is a collection of tools for working
4
4
  * with satellites and other orbital objects.
5
5
  * @license AGPL-3.0-or-later
@@ -21,8 +21,8 @@
21
21
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
22
22
  */
23
23
 
24
- import { Seconds } from '../main.js';
25
- import { secondsPerDay } from '../utils/constants.js';
24
+ import { Seconds } from '../main';
25
+ import { secondsPerDay } from '../utils/constants';
26
26
 
27
27
  // / Base class for [Epoch] data.
28
28
  export class Epoch {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @author @thkruz Theodore Kruczek
2
+ * @author Theodore Kruczek
3
3
  * @description Orbital Object ToolKit (ootk) is a collection of tools for working
4
4
  * with satellites and other orbital objects.
5
5
  * @license AGPL-3.0-or-later
@@ -21,10 +21,10 @@
21
21
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
22
22
  */
23
23
 
24
- import { Seconds } from '../main.js';
25
- import { DataHandler } from '../data/DataHandler.js';
26
- import { secondsPerWeek } from '../utils/constants.js';
27
- import type { EpochUTC } from './EpochUTC.js';
24
+ import { DataHandler } from '../data/DataHandler';
25
+ import { Seconds } from '../main';
26
+ import { secondsPerWeek } from '../utils/constants';
27
+ import type { EpochUTC } from './EpochUTC';
28
28
  // / Global Positioning System _(GPS)_ formatted epoch.
29
29
  export class EpochGPS {
30
30
  /**
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @author @thkruz Theodore Kruczek
2
+ * @author Theodore Kruczek
3
3
  * @description Orbital Object ToolKit (ootk) is a collection of tools for working
4
4
  * with satellites and other orbital objects.
5
5
  * @license AGPL-3.0-or-later
@@ -21,7 +21,7 @@
21
21
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
22
22
  */
23
23
 
24
- import { Epoch } from './Epoch.js';
24
+ import { Epoch } from './Epoch';
25
25
 
26
26
  /** Represents an Epoch in International Atomic Time (TAI). */
27
27
  export class EpochTAI extends Epoch { }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @author @thkruz Theodore Kruczek
2
+ * @author Theodore Kruczek
3
3
  * @description Orbital Object ToolKit (ootk) is a collection of tools for working
4
4
  * with satellites and other orbital objects.
5
5
  * @license AGPL-3.0-or-later
@@ -21,7 +21,7 @@
21
21
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
22
22
  */
23
23
 
24
- import { Epoch } from './Epoch.js';
24
+ import { Epoch } from './Epoch';
25
25
 
26
26
  /** Represents an Epoch in TDB (Barycentric Dynamical Time). */
27
27
  export class EpochTDB extends Epoch { }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @author @thkruz Theodore Kruczek
2
+ * @author Theodore Kruczek
3
3
  * @description Orbital Object ToolKit (ootk) is a collection of tools for working
4
4
  * with satellites and other orbital objects.
5
5
  * @license AGPL-3.0-or-later
@@ -21,7 +21,7 @@
21
21
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
22
22
  */
23
23
 
24
- import { Epoch } from './Epoch.js';
24
+ import { Epoch } from './Epoch';
25
25
 
26
26
  /** Represents a Terrestrial Time (TT) epoch. */
27
27
  export class EpochTT extends Epoch { }