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
  * @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
@@ -20,8 +20,8 @@
20
20
  * You should have received a copy of the GNU Affero General Public License along with
21
21
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
22
22
  */
23
- export { Celestial } from './Celestial.js';
24
- export { Earth } from './Earth.js';
25
- export { Moon } from './Moon.js';
26
- export { Sun } from './Sun.js';
23
+ export { Celestial } from './Celestial';
24
+ export { Earth } from './Earth';
25
+ export { Moon } from './Moon';
26
+ export { Sun } from './Sun';
27
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/body/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/body/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * @author Theodore Kruczek
3
+ * @license AGPL-3.0-or-later
4
+ * @copyright (c) 2025 Kruczek Labs LLC
5
+ *
6
+ * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
7
+ * terms of the GNU Affero General Public License as published by the Free Software
8
+ * Foundation, either version 3 of the License, or (at your option) any later version.
9
+ *
10
+ * Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
11
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
+ * See the GNU Affero General Public License for more details.
13
+ *
14
+ * You should have received a copy of the GNU Affero General Public License along with
15
+ * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
16
+ */
17
+ import { EpochUTC } from '../time/EpochUTC.js';
18
+ import { J2000 } from '../coordinate/J2000.js';
19
+ import { Tle } from '../coordinate/Tle.js';
20
+ import { StateCovariance } from '../covariance/StateCovariance.js';
21
+ import { Propagator } from '../propagator/Propagator.js';
22
+ import { ForceModel } from '../force/ForceModel.js';
23
+ import type { Kilometers, Seconds } from '../main.js';
24
+ import { ConjunctionEvent } from './ConjunctionEvent.js';
25
+ /**
26
+ * Input for a space object in conjunction assessment.
27
+ * Can be specified as either a TLE or a state vector with optional covariance.
28
+ */
29
+ export interface SpaceObject {
30
+ /** Object identifier/name */
31
+ name?: string;
32
+ /** TLE for the object (alternative to state) */
33
+ tle?: Tle;
34
+ /** State vector in J2000 frame (alternative to TLE) */
35
+ state?: J2000;
36
+ /** Covariance matrix (optional, for probability calculation) */
37
+ covariance?: StateCovariance;
38
+ /** Hard body radius in km (optional, for probability calculation) */
39
+ radius?: Kilometers;
40
+ /** Custom propagator (optional, overrides default) */
41
+ propagator?: Propagator;
42
+ }
43
+ /**
44
+ * Configuration options for conjunction assessment.
45
+ */
46
+ export interface ConjunctionAssessmentOptions {
47
+ /** Search window start time */
48
+ startTime: EpochUTC;
49
+ /** Search window end time */
50
+ endTime: EpochUTC;
51
+ /** Use high-fidelity propagation (RungeKutta89 instead of SGP4) */
52
+ useHighFidelity?: boolean;
53
+ /** Force model for high-fidelity propagation (optional) */
54
+ forceModel?: ForceModel;
55
+ /** Propagate covariances using sigma-point method */
56
+ propagateCovariance?: boolean;
57
+ /** TCA search tolerance in seconds */
58
+ tcaTolerance?: Seconds;
59
+ /** Step size for initial TCA search in seconds */
60
+ searchStepSize?: Seconds;
61
+ }
62
+ /**
63
+ * High accuracy conjunction assessment workflow.
64
+ *
65
+ * This class provides a comprehensive workflow for assessing conjunctions between
66
+ * space objects using:
67
+ * - High accuracy propagators (SGP4 or numerical integrators)
68
+ * - Covariance matrices based on historical TLE accuracy
69
+ * - Time of Closest Approach (TCA) finding using optimization
70
+ * - Probability of collision calculation using Chan's 2D method
71
+ *
72
+ * @example
73
+ * ```typescript
74
+ * const primaryTle = new Tle(line1, line2);
75
+ * const secondaryTle = new Tle(line1, line2);
76
+ *
77
+ * const assessment = new ConjunctionAssessment(
78
+ * { tle: primaryTle, radius: 0.01 as Kilometers },
79
+ * { tle: secondaryTle, radius: 0.01 as Kilometers },
80
+ * );
81
+ *
82
+ * const event = assessment.assess({
83
+ * startTime: EpochUTC.fromDateTime(new Date('2025-01-01T00:00:00Z')),
84
+ * endTime: EpochUTC.fromDateTime(new Date('2025-01-02T00:00:00Z')),
85
+ * useHighFidelity: true,
86
+ * propagateCovariance: true,
87
+ * });
88
+ *
89
+ * console.log(event.toString());
90
+ * ```
91
+ */
92
+ export declare class ConjunctionAssessment {
93
+ private primary;
94
+ private secondary;
95
+ private primaryProp;
96
+ private secondaryProp;
97
+ private primaryCovSample?;
98
+ private secondaryCovSample?;
99
+ constructor(primary: SpaceObject, secondary: SpaceObject);
100
+ /**
101
+ * Performs conjunction assessment over the specified time window.
102
+ *
103
+ * @param options Assessment configuration options
104
+ * @returns ConjunctionEvent with TCA, miss distance, and probability of collision
105
+ */
106
+ assess(options: ConjunctionAssessmentOptions): ConjunctionEvent;
107
+ /**
108
+ * Finds the Time of Closest Approach (TCA) using golden section search.
109
+ *
110
+ * @param startTime Search window start
111
+ * @param endTime Search window end
112
+ * @param stepSize Initial search step size in seconds
113
+ * @param tolerance TCA search tolerance in seconds
114
+ * @returns TCA epoch
115
+ */
116
+ private findTCA;
117
+ /**
118
+ * Creates a propagator for a space object.
119
+ *
120
+ * @param obj Space object
121
+ * @param useHighFidelity Whether to use high-fidelity propagation
122
+ * @param forceModel Optional force model for numerical propagation
123
+ * @returns Propagator instance
124
+ */
125
+ private createPropagator;
126
+ /**
127
+ * Initializes covariance samples for both objects.
128
+ *
129
+ * @param useHighFidelity Whether to use high-fidelity propagation
130
+ * @param forceModel Optional force model
131
+ */
132
+ private initializeCovarianceSamples;
133
+ /**
134
+ * Transforms ECI covariance to RIC frame.
135
+ *
136
+ * @param covariance ECI covariance
137
+ * @param state State vector for RIC frame definition
138
+ * @returns RIC covariance
139
+ */
140
+ private transformCovarianceToRIC;
141
+ /**
142
+ * Creates the 3x3 RIC transformation matrix.
143
+ *
144
+ * @param position Position vector
145
+ * @param velocity Velocity vector
146
+ * @returns 3x3 RIC transformation matrix
147
+ */
148
+ private createRICTransformMatrix;
149
+ /**
150
+ * Builds a 6x6 transformation matrix from a 3x3 rotation matrix.
151
+ *
152
+ * @param rot 3x3 rotation matrix
153
+ * @returns 6x6 transformation matrix
154
+ */
155
+ private build6x6Transform;
156
+ }
@@ -0,0 +1,281 @@
1
+ /**
2
+ * @author Theodore Kruczek
3
+ * @license AGPL-3.0-or-later
4
+ * @copyright (c) 2025 Kruczek Labs LLC
5
+ *
6
+ * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
7
+ * terms of the GNU Affero General Public License as published by the Free Software
8
+ * Foundation, either version 3 of the License, or (at your option) any later version.
9
+ *
10
+ * Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
11
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
+ * See the GNU Affero General Public License for more details.
13
+ *
14
+ * You should have received a copy of the GNU Affero General Public License along with
15
+ * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
16
+ */
17
+ import { EpochUTC } from '../time/EpochUTC.js';
18
+ import { RIC } from '../coordinate/RIC.js';
19
+ import { StateCovariance, CovarianceFrame } from '../covariance/StateCovariance.js';
20
+ import { CovarianceSample } from '../covariance/CovarianceSample.js';
21
+ import { Sgp4Propagator } from '../propagator/Sgp4Propagator.js';
22
+ import { RungeKutta89Propagator } from '../propagator/RungeKutta89Propagator.js';
23
+ import { ForceModel } from '../force/ForceModel.js';
24
+ import { GoldenSection } from '../optimize/GoldenSection.js';
25
+ import { Matrix } from '../operations/Matrix.js';
26
+ import { ConjunctionEvent } from './ConjunctionEvent.js';
27
+ import { ProbabilityOfCollision } from './ProbabilityOfCollision.js';
28
+ /**
29
+ * High accuracy conjunction assessment workflow.
30
+ *
31
+ * This class provides a comprehensive workflow for assessing conjunctions between
32
+ * space objects using:
33
+ * - High accuracy propagators (SGP4 or numerical integrators)
34
+ * - Covariance matrices based on historical TLE accuracy
35
+ * - Time of Closest Approach (TCA) finding using optimization
36
+ * - Probability of collision calculation using Chan's 2D method
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * const primaryTle = new Tle(line1, line2);
41
+ * const secondaryTle = new Tle(line1, line2);
42
+ *
43
+ * const assessment = new ConjunctionAssessment(
44
+ * { tle: primaryTle, radius: 0.01 as Kilometers },
45
+ * { tle: secondaryTle, radius: 0.01 as Kilometers },
46
+ * );
47
+ *
48
+ * const event = assessment.assess({
49
+ * startTime: EpochUTC.fromDateTime(new Date('2025-01-01T00:00:00Z')),
50
+ * endTime: EpochUTC.fromDateTime(new Date('2025-01-02T00:00:00Z')),
51
+ * useHighFidelity: true,
52
+ * propagateCovariance: true,
53
+ * });
54
+ *
55
+ * console.log(event.toString());
56
+ * ```
57
+ */
58
+ export class ConjunctionAssessment {
59
+ primary;
60
+ secondary;
61
+ primaryProp;
62
+ secondaryProp;
63
+ primaryCovSample;
64
+ secondaryCovSample;
65
+ constructor(primary, secondary) {
66
+ this.primary = primary;
67
+ this.secondary = secondary;
68
+ // Initialize propagators (will be replaced in assess() if needed)
69
+ this.primaryProp = this.createPropagator(primary, false);
70
+ this.secondaryProp = this.createPropagator(secondary, false);
71
+ }
72
+ /**
73
+ * Performs conjunction assessment over the specified time window.
74
+ *
75
+ * @param options Assessment configuration options
76
+ * @returns ConjunctionEvent with TCA, miss distance, and probability of collision
77
+ */
78
+ assess(options) {
79
+ const { startTime, endTime, useHighFidelity = false, forceModel, propagateCovariance = false, tcaTolerance = 0.001, searchStepSize = 60.0, } = options;
80
+ // Create propagators based on options
81
+ this.primaryProp = this.primary.propagator ?? this.createPropagator(this.primary, useHighFidelity, forceModel);
82
+ this.secondaryProp =
83
+ this.secondary.propagator ?? this.createPropagator(this.secondary, useHighFidelity, forceModel);
84
+ // Initialize covariance samples if requested
85
+ if (propagateCovariance) {
86
+ this.initializeCovarianceSamples(useHighFidelity, forceModel);
87
+ }
88
+ // Find Time of Closest Approach (TCA)
89
+ const tca = this.findTCA(startTime, endTime, searchStepSize, tcaTolerance);
90
+ // Propagate states to TCA
91
+ const primaryState = this.primaryProp.propagate(tca);
92
+ const secondaryState = this.secondaryProp.propagate(tca);
93
+ // Compute relative state in RIC frame
94
+ const relativeState = RIC.fromJ2000(secondaryState, primaryState);
95
+ // Extract RIC components
96
+ const radialDistance = Math.abs(relativeState.position.x);
97
+ const intrackDistance = Math.abs(relativeState.position.y);
98
+ const crosstrackDistance = Math.abs(relativeState.position.z);
99
+ const missDistance = relativeState.range;
100
+ const relativeVelocity = relativeState.velocity.magnitude();
101
+ // Compute combined covariance and Pc if available
102
+ let combinedCovariance;
103
+ let probabilityOfCollision;
104
+ if (this.primaryCovSample && this.secondaryCovSample && this.primary.radius && this.secondary.radius) {
105
+ // Propagate covariance samples to TCA
106
+ this.primaryCovSample.propagate(tca);
107
+ this.secondaryCovSample.propagate(tca);
108
+ // Get covariances in RIC frame
109
+ const primaryCov = this.primaryCovSample.covarianceRIC();
110
+ const secondaryCov = this.secondaryCovSample.covarianceRIC();
111
+ // Combine covariances
112
+ combinedCovariance = ProbabilityOfCollision.combineCovarianceMatrices(primaryCov, secondaryCov);
113
+ // Calculate probability of collision
114
+ const combinedRadius = (this.primary.radius + this.secondary.radius);
115
+ probabilityOfCollision = ProbabilityOfCollision.calculate(relativeState.position, relativeState.velocity, combinedCovariance, combinedRadius);
116
+ }
117
+ else if (this.primary.covariance && this.secondary.covariance && this.primary.radius && this.secondary.radius) {
118
+ // Use provided covariances without propagation
119
+ // Transform to RIC if needed
120
+ let primaryCovRIC = this.primary.covariance;
121
+ let secondaryCovRIC = this.secondary.covariance;
122
+ if (this.primary.covariance.frame === CovarianceFrame.ECI) {
123
+ primaryCovRIC = this.transformCovarianceToRIC(this.primary.covariance, primaryState);
124
+ }
125
+ if (this.secondary.covariance.frame === CovarianceFrame.ECI) {
126
+ secondaryCovRIC = this.transformCovarianceToRIC(this.secondary.covariance, secondaryState);
127
+ }
128
+ combinedCovariance = ProbabilityOfCollision.combineCovarianceMatrices(primaryCovRIC, secondaryCovRIC);
129
+ const combinedRadius = (this.primary.radius + this.secondary.radius);
130
+ probabilityOfCollision = ProbabilityOfCollision.calculate(relativeState.position, relativeState.velocity, combinedCovariance, combinedRadius);
131
+ }
132
+ return new ConjunctionEvent(tca, primaryState, secondaryState, relativeState, missDistance, radialDistance, intrackDistance, crosstrackDistance, relativeVelocity, combinedCovariance, probabilityOfCollision, this.primary.radius, this.secondary.radius);
133
+ }
134
+ /**
135
+ * Finds the Time of Closest Approach (TCA) using golden section search.
136
+ *
137
+ * @param startTime Search window start
138
+ * @param endTime Search window end
139
+ * @param stepSize Initial search step size in seconds
140
+ * @param tolerance TCA search tolerance in seconds
141
+ * @returns TCA epoch
142
+ */
143
+ findTCA(startTime, endTime, stepSize, tolerance) {
144
+ // Coarse search to find approximate TCA region
145
+ let minRange = Infinity;
146
+ let minEpoch = startTime;
147
+ let current = startTime;
148
+ while (current.posix <= endTime.posix) {
149
+ const primary = this.primaryProp.propagate(current);
150
+ const secondary = this.secondaryProp.propagate(current);
151
+ const ric = RIC.fromJ2000(secondary, primary);
152
+ const range = ric.range;
153
+ if (range < minRange) {
154
+ minRange = range;
155
+ minEpoch = current;
156
+ }
157
+ current = current.roll(stepSize);
158
+ }
159
+ // Fine search using golden section optimization
160
+ const searchWindow = 2 * stepSize;
161
+ const lowerBound = Math.max(startTime.posix, minEpoch.posix - searchWindow);
162
+ const upperBound = Math.min(endTime.posix, minEpoch.posix + searchWindow);
163
+ const tcaPosix = GoldenSection.search((posix) => {
164
+ const epoch = new EpochUTC(posix);
165
+ const primary = this.primaryProp.propagate(epoch);
166
+ const secondary = this.secondaryProp.propagate(epoch);
167
+ const ric = RIC.fromJ2000(secondary, primary);
168
+ return ric.range;
169
+ }, lowerBound, upperBound, { tolerance });
170
+ return new EpochUTC(tcaPosix);
171
+ }
172
+ /**
173
+ * Creates a propagator for a space object.
174
+ *
175
+ * @param obj Space object
176
+ * @param useHighFidelity Whether to use high-fidelity propagation
177
+ * @param forceModel Optional force model for numerical propagation
178
+ * @returns Propagator instance
179
+ */
180
+ createPropagator(obj, useHighFidelity, forceModel) {
181
+ if (obj.tle) {
182
+ if (useHighFidelity) {
183
+ // Convert TLE to state and use RK89
184
+ const state = obj.tle.toJ2000();
185
+ const fm = forceModel ?? new ForceModel().setGravity();
186
+ return new RungeKutta89Propagator(state, fm);
187
+ }
188
+ return new Sgp4Propagator(obj.tle);
189
+ }
190
+ else if (obj.state) {
191
+ if (useHighFidelity) {
192
+ const fm = forceModel ?? new ForceModel().setGravity();
193
+ return new RungeKutta89Propagator(obj.state, fm);
194
+ }
195
+ // For low-fidelity, still use RK89 but with simpler force model
196
+ const fm = new ForceModel().setGravity();
197
+ return new RungeKutta89Propagator(obj.state, fm);
198
+ }
199
+ throw new Error('Space object must have either a TLE or state vector');
200
+ }
201
+ /**
202
+ * Initializes covariance samples for both objects.
203
+ *
204
+ * @param useHighFidelity Whether to use high-fidelity propagation
205
+ * @param forceModel Optional force model
206
+ */
207
+ initializeCovarianceSamples(useHighFidelity, forceModel) {
208
+ const fm = forceModel ?? new ForceModel().setGravity();
209
+ // Primary covariance
210
+ if (this.primary.tle) {
211
+ const state = this.primary.tle.toJ2000();
212
+ const covariance = this.primary.covariance ??
213
+ StateCovariance.fromSigmas([1.0, 1.0, 1.0, 0.001, 0.001, 0.001], CovarianceFrame.RIC);
214
+ this.primaryCovSample = new CovarianceSample(state, covariance, this.primary.tle, fm, fm);
215
+ }
216
+ else if (this.primary.state && this.primary.covariance) {
217
+ this.primaryCovSample = new CovarianceSample(this.primary.state, this.primary.covariance, undefined, fm, fm);
218
+ }
219
+ // Secondary covariance
220
+ if (this.secondary.tle) {
221
+ const state = this.secondary.tle.toJ2000();
222
+ const covariance = this.secondary.covariance ??
223
+ StateCovariance.fromSigmas([1.0, 1.0, 1.0, 0.001, 0.001, 0.001], CovarianceFrame.RIC);
224
+ this.secondaryCovSample = new CovarianceSample(state, covariance, this.secondary.tle, fm, fm);
225
+ }
226
+ else if (this.secondary.state && this.secondary.covariance) {
227
+ this.secondaryCovSample = new CovarianceSample(this.secondary.state, this.secondary.covariance, undefined, fm, fm);
228
+ }
229
+ }
230
+ /**
231
+ * Transforms ECI covariance to RIC frame.
232
+ *
233
+ * @param covariance ECI covariance
234
+ * @param state State vector for RIC frame definition
235
+ * @returns RIC covariance
236
+ */
237
+ transformCovarianceToRIC(covariance, state) {
238
+ // Create RIC transformation matrix (3x3)
239
+ const ricMatrix = this.createRICTransformMatrix(state.position, state.velocity);
240
+ // Build 6x6 transformation matrix (block diagonal with 3x3 rotation)
241
+ const transform = this.build6x6Transform(ricMatrix);
242
+ // Transform covariance: C_ric = T * C_eci * T^T
243
+ const covRIC = transform.multiply(covariance.matrix).multiply(transform.transpose());
244
+ return new StateCovariance(covRIC, CovarianceFrame.RIC);
245
+ }
246
+ /**
247
+ * Creates the 3x3 RIC transformation matrix.
248
+ *
249
+ * @param position Position vector
250
+ * @param velocity Velocity vector
251
+ * @returns 3x3 RIC transformation matrix
252
+ */
253
+ createRICTransformMatrix(position, velocity) {
254
+ const ru = position.normalize();
255
+ const cu = position.cross(velocity).normalize();
256
+ const iu = cu.cross(ru).normalize();
257
+ return new Matrix([
258
+ [ru.x, ru.y, ru.z],
259
+ [iu.x, iu.y, iu.z],
260
+ [cu.x, cu.y, cu.z],
261
+ ]);
262
+ }
263
+ /**
264
+ * Builds a 6x6 transformation matrix from a 3x3 rotation matrix.
265
+ *
266
+ * @param rot 3x3 rotation matrix
267
+ * @returns 6x6 transformation matrix
268
+ */
269
+ build6x6Transform(rot) {
270
+ const elements = [
271
+ [rot.elements[0][0], rot.elements[0][1], rot.elements[0][2], 0, 0, 0],
272
+ [rot.elements[1][0], rot.elements[1][1], rot.elements[1][2], 0, 0, 0],
273
+ [rot.elements[2][0], rot.elements[2][1], rot.elements[2][2], 0, 0, 0],
274
+ [0, 0, 0, rot.elements[0][0], rot.elements[0][1], rot.elements[0][2]],
275
+ [0, 0, 0, rot.elements[1][0], rot.elements[1][1], rot.elements[1][2]],
276
+ [0, 0, 0, rot.elements[2][0], rot.elements[2][1], rot.elements[2][2]],
277
+ ];
278
+ return new Matrix(elements);
279
+ }
280
+ }
281
+ //# sourceMappingURL=ConjunctionAssessment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConjunctionAssessment.js","sourceRoot":"","sources":["../../src/conjunction/ConjunctionAssessment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * @author Theodore Kruczek
3
+ * @license AGPL-3.0-or-later
4
+ * @copyright (c) 2025 Kruczek Labs LLC
5
+ *
6
+ * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
7
+ * terms of the GNU Affero General Public License as published by the Free Software
8
+ * Foundation, either version 3 of the License, or (at your option) any later version.
9
+ *
10
+ * Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
11
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
+ * See the GNU Affero General Public License for more details.
13
+ *
14
+ * You should have received a copy of the GNU Affero General Public License along with
15
+ * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
16
+ */
17
+ import type { EpochUTC } from '../time/EpochUTC.js';
18
+ import type { J2000 } from '../coordinate/J2000.js';
19
+ import type { RIC } from '../coordinate/RIC.js';
20
+ import type { StateCovariance } from '../covariance/StateCovariance.js';
21
+ import type { Kilometers, KilometersPerSecond } from '../main.js';
22
+ /**
23
+ * Represents the result of a conjunction assessment between two space objects.
24
+ * Contains all relevant information about the close approach event.
25
+ */
26
+ export declare class ConjunctionEvent {
27
+ /** Time of Closest Approach (TCA) */
28
+ tca: EpochUTC;
29
+ /** Primary object state at TCA in J2000 frame */
30
+ primaryState: J2000;
31
+ /** Secondary object state at TCA in J2000 frame */
32
+ secondaryState: J2000;
33
+ /** Relative state in RIC frame (relative to primary) */
34
+ relativeState: RIC;
35
+ /** Total miss distance at TCA (km) */
36
+ missDistance: Kilometers;
37
+ /** Radial component of miss distance (km) */
38
+ radialDistance: Kilometers;
39
+ /** Intrack component of miss distance (km) */
40
+ intrackDistance: Kilometers;
41
+ /** Crosstrack component of miss distance (km) */
42
+ crosstrackDistance: Kilometers;
43
+ /** Relative velocity magnitude at TCA (km/s) */
44
+ relativeVelocity: KilometersPerSecond;
45
+ /** Combined position covariance matrix in RIC frame (optional) */
46
+ combinedCovariance?: StateCovariance | undefined;
47
+ /** Probability of collision (optional, 0-1) */
48
+ probabilityOfCollision?: number | undefined;
49
+ /** Hard body radius for primary object (km, optional) */
50
+ primaryRadius?: Kilometers | undefined;
51
+ /** Hard body radius for secondary object (km, optional) */
52
+ secondaryRadius?: Kilometers | undefined;
53
+ constructor(
54
+ /** Time of Closest Approach (TCA) */
55
+ tca: EpochUTC,
56
+ /** Primary object state at TCA in J2000 frame */
57
+ primaryState: J2000,
58
+ /** Secondary object state at TCA in J2000 frame */
59
+ secondaryState: J2000,
60
+ /** Relative state in RIC frame (relative to primary) */
61
+ relativeState: RIC,
62
+ /** Total miss distance at TCA (km) */
63
+ missDistance: Kilometers,
64
+ /** Radial component of miss distance (km) */
65
+ radialDistance: Kilometers,
66
+ /** Intrack component of miss distance (km) */
67
+ intrackDistance: Kilometers,
68
+ /** Crosstrack component of miss distance (km) */
69
+ crosstrackDistance: Kilometers,
70
+ /** Relative velocity magnitude at TCA (km/s) */
71
+ relativeVelocity: KilometersPerSecond,
72
+ /** Combined position covariance matrix in RIC frame (optional) */
73
+ combinedCovariance?: StateCovariance | undefined,
74
+ /** Probability of collision (optional, 0-1) */
75
+ probabilityOfCollision?: number | undefined,
76
+ /** Hard body radius for primary object (km, optional) */
77
+ primaryRadius?: Kilometers | undefined,
78
+ /** Hard body radius for secondary object (km, optional) */
79
+ secondaryRadius?: Kilometers | undefined);
80
+ /**
81
+ * Returns a formatted string representation of the conjunction event.
82
+ * @returns A multi-line string with conjunction details.
83
+ */
84
+ toString(): string;
85
+ /**
86
+ * Checks if this is a high-risk conjunction based on miss distance and Pc.
87
+ * @param distanceThreshold Miss distance threshold in km (default: 1.0 km)
88
+ * @param pcThreshold Probability of collision threshold (default: 1e-4)
89
+ * @returns True if the conjunction exceeds risk thresholds.
90
+ */
91
+ isHighRisk(distanceThreshold?: Kilometers, pcThreshold?: number): boolean;
92
+ /**
93
+ * Gets the Mahalanobis distance if covariance is available.
94
+ * This is the miss distance normalized by the combined covariance.
95
+ * @returns The Mahalanobis distance (unitless), or undefined if no covariance.
96
+ */
97
+ getMahalanobisDistance(): number | undefined;
98
+ /**
99
+ * Extracts the 3x3 position covariance from a 6x6 state covariance matrix.
100
+ * @param stateCov 6x6 state covariance matrix
101
+ * @returns 3x3 position covariance matrix
102
+ */
103
+ private extractPositionCovariance;
104
+ }