ootk 5.1.1 → 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 (543) 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/README.md +18 -0
  9. package/dist/body/Celestial.d.ts +1 -1
  10. package/dist/body/Celestial.js +1 -1
  11. package/dist/body/Celestial.js.map +1 -1
  12. package/dist/body/Earth.d.ts +3 -3
  13. package/dist/body/Earth.js +1 -1
  14. package/dist/body/Earth.js.map +1 -1
  15. package/dist/body/Moon.d.ts +3 -3
  16. package/dist/body/Moon.js +7 -7
  17. package/dist/body/Moon.js.map +1 -1
  18. package/dist/body/NutationAngles.d.ts +1 -1
  19. package/dist/body/PrecessionAngles.d.ts +1 -1
  20. package/dist/body/Sun.d.ts +1 -1
  21. package/dist/body/Sun.js +2 -2
  22. package/dist/body/Sun.js.map +1 -1
  23. package/dist/body/index.d.ts +4 -4
  24. package/dist/body/index.js +4 -4
  25. package/dist/body/index.js.map +1 -1
  26. package/dist/conjunction/ConjunctionAssessment.d.ts +156 -0
  27. package/dist/conjunction/ConjunctionAssessment.js +281 -0
  28. package/dist/conjunction/ConjunctionAssessment.js.map +1 -0
  29. package/dist/conjunction/ConjunctionEvent.d.ts +104 -0
  30. package/dist/conjunction/ConjunctionEvent.js +156 -0
  31. package/dist/conjunction/ConjunctionEvent.js.map +1 -0
  32. package/dist/conjunction/ProbabilityOfCollision.d.ts +102 -0
  33. package/dist/conjunction/ProbabilityOfCollision.js +240 -0
  34. package/dist/conjunction/ProbabilityOfCollision.js.map +1 -0
  35. package/dist/conjunction/index.d.ts +19 -0
  36. package/dist/conjunction/index.js +20 -0
  37. package/dist/conjunction/index.js.map +1 -0
  38. package/dist/coordinate/ClassicalElements.d.ts +6 -6
  39. package/dist/coordinate/ClassicalElements.js +6 -6
  40. package/dist/coordinate/ClassicalElements.js.map +1 -1
  41. package/dist/coordinate/EquinoctialElements.d.ts +4 -4
  42. package/dist/coordinate/EquinoctialElements.js +3 -3
  43. package/dist/coordinate/EquinoctialElements.js.map +1 -1
  44. package/dist/coordinate/FormatTle.d.ts +1 -1
  45. package/dist/coordinate/FormatTle.js +1 -1
  46. package/dist/coordinate/FormatTle.js.map +1 -1
  47. package/dist/coordinate/Geodetic.d.ts +3 -3
  48. package/dist/coordinate/Geodetic.js +6 -6
  49. package/dist/coordinate/Geodetic.js.map +1 -1
  50. package/dist/coordinate/Hill.d.ts +3 -3
  51. package/dist/coordinate/Hill.js +2 -2
  52. package/dist/coordinate/Hill.js.map +1 -1
  53. package/dist/coordinate/ITRF.d.ts +4 -4
  54. package/dist/coordinate/ITRF.js +4 -4
  55. package/dist/coordinate/ITRF.js.map +1 -1
  56. package/dist/coordinate/J2000.d.ts +4 -4
  57. package/dist/coordinate/J2000.js +4 -4
  58. package/dist/coordinate/J2000.js.map +1 -1
  59. package/dist/coordinate/RIC.d.ts +3 -3
  60. package/dist/coordinate/RIC.js +2 -2
  61. package/dist/coordinate/RIC.js.map +1 -1
  62. package/dist/coordinate/RelativeState.d.ts +4 -4
  63. package/dist/coordinate/RelativeState.js +1 -1
  64. package/dist/coordinate/RelativeState.js.map +1 -1
  65. package/dist/coordinate/StateVector.d.ts +1 -1
  66. package/dist/coordinate/StateVector.js +1 -1
  67. package/dist/coordinate/StateVector.js.map +1 -1
  68. package/dist/coordinate/TEME.d.ts +3 -3
  69. package/dist/coordinate/TEME.js +3 -3
  70. package/dist/coordinate/TEME.js.map +1 -1
  71. package/dist/coordinate/Tle.d.ts +4 -4
  72. package/dist/coordinate/Tle.js +8 -8
  73. package/dist/coordinate/Tle.js.map +1 -1
  74. package/dist/coordinate/index.d.ts +12 -12
  75. package/dist/coordinate/index.js +12 -12
  76. package/dist/coordinate/index.js.map +1 -1
  77. package/dist/covariance/CovarianceSample.d.ts +4 -4
  78. package/dist/covariance/CovarianceSample.js +4 -4
  79. package/dist/covariance/CovarianceSample.js.map +1 -1
  80. package/dist/covariance/StateCovariance.d.ts +1 -1
  81. package/dist/covariance/StateCovariance.js +1 -1
  82. package/dist/covariance/StateCovariance.js.map +1 -1
  83. package/dist/covariance/index.d.ts +2 -2
  84. package/dist/covariance/index.js +2 -2
  85. package/dist/covariance/index.js.map +1 -1
  86. package/dist/data/DataHandler.d.ts +3 -3
  87. package/dist/data/DataHandler.js +4 -4
  88. package/dist/data/DataHandler.js.map +1 -1
  89. package/dist/data/values/Egm96Data.js +2 -2
  90. package/dist/data/values/Egm96Data.js.map +1 -1
  91. package/dist/data/values/HpAtmosphereData.d.ts +1 -1
  92. package/dist/data/values/HpAtmosphereData.js +2 -2
  93. package/dist/data/values/HpAtmosphereData.js.map +1 -1
  94. package/dist/data/values/HpAtmosphereResult.d.ts +1 -1
  95. package/dist/data/values/Iau1980Data.js +1 -1
  96. package/dist/data/values/Iau1980Data.js.map +1 -1
  97. package/dist/data/values/LeapSecondData.d.ts +1 -1
  98. package/dist/data/values/LeapSecondData.js +1 -1
  99. package/dist/data/values/LeapSecondData.js.map +1 -1
  100. package/dist/data/values/egm96.d.ts +1 -1
  101. package/dist/data/values/hpAtmosphere.d.ts +1 -1
  102. package/dist/data/values/iau1980.d.ts +1 -1
  103. package/dist/enums/index.d.ts +7 -7
  104. package/dist/enums/index.js +7 -7
  105. package/dist/enums/index.js.map +1 -1
  106. package/dist/fetch/horizons-constants.d.ts +43 -0
  107. package/dist/fetch/horizons-constants.js +50 -0
  108. package/dist/fetch/horizons-constants.js.map +1 -0
  109. package/dist/fetch/horizons-interfaces.d.ts +37 -0
  110. package/dist/fetch/horizons-interfaces.js +2 -0
  111. package/dist/fetch/horizons-interfaces.js.map +1 -0
  112. package/dist/fetch/horizons.d.ts +86 -0
  113. package/dist/fetch/horizons.js +237 -0
  114. package/dist/fetch/horizons.js.map +1 -0
  115. package/dist/force/AtmosphericDrag.d.ts +2 -2
  116. package/dist/force/AtmosphericDrag.js +1 -1
  117. package/dist/force/AtmosphericDrag.js.map +1 -1
  118. package/dist/force/EarthGravity.d.ts +2 -2
  119. package/dist/force/EarthGravity.js +1 -1
  120. package/dist/force/EarthGravity.js.map +1 -1
  121. package/dist/force/Force.d.ts +2 -2
  122. package/dist/force/Force.js +0 -9
  123. package/dist/force/Force.js.map +1 -1
  124. package/dist/force/ForceModel.d.ts +2 -2
  125. package/dist/force/ForceModel.js +6 -6
  126. package/dist/force/ForceModel.js.map +1 -1
  127. package/dist/force/Gravity.d.ts +2 -2
  128. package/dist/force/Gravity.js +1 -1
  129. package/dist/force/Gravity.js.map +1 -1
  130. package/dist/force/SolarRadiationPressure.d.ts +2 -2
  131. package/dist/force/SolarRadiationPressure.js +3 -3
  132. package/dist/force/SolarRadiationPressure.js.map +1 -1
  133. package/dist/force/ThirdBodyGravity.d.ts +2 -2
  134. package/dist/force/ThirdBodyGravity.js +1 -1
  135. package/dist/force/ThirdBodyGravity.js.map +1 -1
  136. package/dist/force/Thrust.d.ts +2 -2
  137. package/dist/force/Thrust.js +1 -1
  138. package/dist/force/Thrust.js.map +1 -1
  139. package/dist/force/index.d.ts +1 -1
  140. package/dist/force/index.js +1 -1
  141. package/dist/force/index.js.map +1 -1
  142. package/dist/interfaces/BaseObjectParams.d.ts +1 -1
  143. package/dist/interfaces/ClassicalElementsParams.d.ts +1 -1
  144. package/dist/interfaces/EquinoctialElementsParams.d.ts +1 -1
  145. package/dist/interfaces/GroundPositionParams.d.ts +1 -1
  146. package/dist/interfaces/RfSensorParams.d.ts +2 -2
  147. package/dist/interfaces/SatelliteParams.d.ts +2 -2
  148. package/dist/interfaces/SensorParams.d.ts +2 -2
  149. package/dist/interfaces/StarObjectParams.d.ts +1 -1
  150. package/dist/interfaces/TimeVariables.d.ts +1 -1
  151. package/dist/interfaces/index.d.ts +9 -9
  152. package/dist/interpolator/ChebyshevCoefficients.d.ts +1 -1
  153. package/dist/interpolator/ChebyshevCoefficients.js +1 -1
  154. package/dist/interpolator/ChebyshevCoefficients.js.map +1 -1
  155. package/dist/interpolator/ChebyshevInterpolator.d.ts +3 -3
  156. package/dist/interpolator/ChebyshevInterpolator.js +2 -2
  157. package/dist/interpolator/ChebyshevInterpolator.js.map +1 -1
  158. package/dist/interpolator/CubicSpline.d.ts +1 -1
  159. package/dist/interpolator/CubicSplineInterpolator.d.ts +3 -3
  160. package/dist/interpolator/CubicSplineInterpolator.js +3 -3
  161. package/dist/interpolator/CubicSplineInterpolator.js.map +1 -1
  162. package/dist/interpolator/FieldInterpolator.d.ts +2 -2
  163. package/dist/interpolator/FieldInterpolator.js +1 -11
  164. package/dist/interpolator/FieldInterpolator.js.map +1 -1
  165. package/dist/interpolator/Interpolator.d.ts +1 -1
  166. package/dist/interpolator/Interpolator.js +1 -1
  167. package/dist/interpolator/Interpolator.js.map +1 -1
  168. package/dist/interpolator/LagrangeInterpolator.d.ts +2 -2
  169. package/dist/interpolator/LagrangeInterpolator.js +2 -2
  170. package/dist/interpolator/LagrangeInterpolator.js.map +1 -1
  171. package/dist/interpolator/StateInterpolator.d.ts +3 -3
  172. package/dist/interpolator/StateInterpolator.js +1 -9
  173. package/dist/interpolator/StateInterpolator.js.map +1 -1
  174. package/dist/interpolator/VerletBlendInterpolator.d.ts +4 -4
  175. package/dist/interpolator/VerletBlendInterpolator.js +4 -4
  176. package/dist/interpolator/VerletBlendInterpolator.js.map +1 -1
  177. package/dist/main.d.ts +19 -19
  178. package/dist/main.js +20 -19
  179. package/dist/main.js.map +1 -1
  180. package/dist/maneuver/TwoBurnOrbitTransfer.d.ts +2 -2
  181. package/dist/maneuver/TwoBurnOrbitTransfer.js +2 -2
  182. package/dist/maneuver/TwoBurnOrbitTransfer.js.map +1 -1
  183. package/dist/maneuver/Waypoint.d.ts +4 -4
  184. package/dist/maneuver/Waypoint.js +6 -6
  185. package/dist/maneuver/Waypoint.js.map +1 -1
  186. package/dist/objects/BaseObject.d.ts +2 -2
  187. package/dist/objects/BaseObject.js +1 -1
  188. package/dist/objects/BaseObject.js.map +1 -1
  189. package/dist/objects/DetailedSatellite.d.ts +3 -3
  190. package/dist/objects/DetailedSatellite.js +3 -3
  191. package/dist/objects/DetailedSatellite.js.map +1 -1
  192. package/dist/objects/DetailedSensor.d.ts +4 -4
  193. package/dist/objects/DetailedSensor.js +1 -1
  194. package/dist/objects/DetailedSensor.js.map +1 -1
  195. package/dist/objects/GroundObject.d.ts +3 -3
  196. package/dist/objects/GroundObject.js +2 -2
  197. package/dist/objects/GroundObject.js.map +1 -1
  198. package/dist/objects/LandObject.d.ts +2 -2
  199. package/dist/objects/LandObject.js +1 -1
  200. package/dist/objects/LandObject.js.map +1 -1
  201. package/dist/objects/Marker.d.ts +1 -1
  202. package/dist/objects/Marker.js +1 -1
  203. package/dist/objects/Marker.js.map +1 -1
  204. package/dist/objects/RfSensor.d.ts +2 -2
  205. package/dist/objects/RfSensor.js +2 -2
  206. package/dist/objects/RfSensor.js.map +1 -1
  207. package/dist/objects/Satellite.d.ts +11 -11
  208. package/dist/objects/Satellite.js +11 -11
  209. package/dist/objects/Satellite.js.map +1 -1
  210. package/dist/objects/Sensor.d.ts +5 -5
  211. package/dist/objects/Sensor.js +4 -4
  212. package/dist/objects/Sensor.js.map +1 -1
  213. package/dist/objects/Star.d.ts +2 -2
  214. package/dist/objects/Star.js +2 -2
  215. package/dist/objects/Star.js.map +1 -1
  216. package/dist/objects/index.d.ts +10 -10
  217. package/dist/objects/index.js +10 -10
  218. package/dist/objects/index.js.map +1 -1
  219. package/dist/observation/Observation.d.ts +10 -10
  220. package/dist/observation/Observation.js +0 -51
  221. package/dist/observation/Observation.js.map +1 -1
  222. package/dist/observation/ObservationOptical.d.ts +5 -5
  223. package/dist/observation/ObservationOptical.js +3 -3
  224. package/dist/observation/ObservationOptical.js.map +1 -1
  225. package/dist/observation/ObservationRadar.d.ts +5 -5
  226. package/dist/observation/ObservationRadar.js +3 -3
  227. package/dist/observation/ObservationRadar.js.map +1 -1
  228. package/dist/observation/ObservationUtils.d.ts +1 -1
  229. package/dist/observation/ObservationUtils.js +1 -1
  230. package/dist/observation/ObservationUtils.js.map +1 -1
  231. package/dist/observation/PropagatorPairs.d.ts +1 -1
  232. package/dist/observation/RAE.d.ts +5 -5
  233. package/dist/observation/RAE.js +5 -5
  234. package/dist/observation/RAE.js.map +1 -1
  235. package/dist/observation/RadecGeocentric.d.ts +5 -5
  236. package/dist/observation/RadecGeocentric.js +4 -4
  237. package/dist/observation/RadecGeocentric.js.map +1 -1
  238. package/dist/observation/RadecTopocentric.d.ts +5 -5
  239. package/dist/observation/RadecTopocentric.js +8 -6
  240. package/dist/observation/RadecTopocentric.js.map +1 -1
  241. package/dist/observation/index.d.ts +4 -4
  242. package/dist/observation/index.js +4 -4
  243. package/dist/observation/index.js.map +1 -1
  244. package/dist/operations/BoxMuller.d.ts +1 -1
  245. package/dist/operations/BoxMuller.js +1 -1
  246. package/dist/operations/BoxMuller.js.map +1 -1
  247. package/dist/operations/EulerAngles.d.ts +1 -1
  248. package/dist/operations/EulerAngles.js +1 -1
  249. package/dist/operations/EulerAngles.js.map +1 -1
  250. package/dist/operations/Matrix.d.ts +1 -1
  251. package/dist/operations/Matrix.js +1 -1
  252. package/dist/operations/Matrix.js.map +1 -1
  253. package/dist/operations/Quaternion.d.ts +1 -1
  254. package/dist/operations/Quaternion.js +1 -1
  255. package/dist/operations/Quaternion.js.map +1 -1
  256. package/dist/operations/RandomGaussianSource.d.ts +1 -1
  257. package/dist/operations/RandomGaussianSource.js +2 -2
  258. package/dist/operations/RandomGaussianSource.js.map +1 -1
  259. package/dist/operations/Vector.d.ts +1 -1
  260. package/dist/operations/Vector.js +1 -1
  261. package/dist/operations/Vector.js.map +1 -1
  262. package/dist/operations/Vector3D.d.ts +4 -3
  263. package/dist/operations/Vector3D.js +4 -3
  264. package/dist/operations/Vector3D.js.map +1 -1
  265. package/dist/operations/index.d.ts +4 -4
  266. package/dist/operations/index.js +4 -4
  267. package/dist/operations/index.js.map +1 -1
  268. package/dist/operations/operations.d.ts +4 -4
  269. package/dist/operations/operations.js +4 -4
  270. package/dist/operations/operations.js.map +1 -1
  271. package/dist/optimize/ChebyshevCompressor.d.ts +2 -2
  272. package/dist/optimize/ChebyshevCompressor.js +3 -3
  273. package/dist/optimize/ChebyshevCompressor.js.map +1 -1
  274. package/dist/optimize/DownhillSimplex.d.ts +1 -1
  275. package/dist/optimize/DownhillSimplex.js +1 -1
  276. package/dist/optimize/DownhillSimplex.js.map +1 -1
  277. package/dist/optimize/GoldenSection.d.ts +1 -1
  278. package/dist/optimize/PolynomialRegression.d.ts +1 -1
  279. package/dist/optimize/PolynomialRegression.js +3 -3
  280. package/dist/optimize/PolynomialRegression.js.map +1 -1
  281. package/dist/optimize/SimplexEntry.js +1 -1
  282. package/dist/optimize/SimplexEntry.js.map +1 -1
  283. package/dist/orbit_determination/BatchLeastSquaresOD.d.ts +4 -4
  284. package/dist/orbit_determination/BatchLeastSquaresOD.js +7 -7
  285. package/dist/orbit_determination/BatchLeastSquaresOD.js.map +1 -1
  286. package/dist/orbit_determination/BatchLeastSquaresResult.d.ts +2 -2
  287. package/dist/orbit_determination/GaussIOD.d.ts +98 -0
  288. package/dist/orbit_determination/GaussIOD.js +291 -0
  289. package/dist/orbit_determination/GaussIOD.js.map +1 -0
  290. package/dist/orbit_determination/GibbsIOD.d.ts +1 -1
  291. package/dist/orbit_determination/GibbsIOD.js +3 -3
  292. package/dist/orbit_determination/GibbsIOD.js.map +1 -1
  293. package/dist/orbit_determination/GoodingIOD.d.ts +57 -7
  294. package/dist/orbit_determination/GoodingIOD.js +224 -34
  295. package/dist/orbit_determination/GoodingIOD.js.map +1 -1
  296. package/dist/orbit_determination/HerrickGibbsIOD.d.ts +1 -1
  297. package/dist/orbit_determination/HerrickGibbsIOD.js +1 -1
  298. package/dist/orbit_determination/HerrickGibbsIOD.js.map +1 -1
  299. package/dist/orbit_determination/LambertIOD.d.ts +1 -1
  300. package/dist/orbit_determination/LambertIOD.js +1 -1
  301. package/dist/orbit_determination/LambertIOD.js.map +1 -1
  302. package/dist/orbit_determination/ModifiedGoodingIOD.d.ts +2 -2
  303. package/dist/orbit_determination/ModifiedGoodingIOD.js +7 -7
  304. package/dist/orbit_determination/ModifiedGoodingIOD.js.map +1 -1
  305. package/dist/orbit_determination/index.d.ts +7 -7
  306. package/dist/orbit_determination/index.js +7 -7
  307. package/dist/orbit_determination/index.js.map +1 -1
  308. package/dist/propagator/DormandPrince54Propagator.d.ts +1 -1
  309. package/dist/propagator/DormandPrince54Propagator.js +1 -1
  310. package/dist/propagator/DormandPrince54Propagator.js.map +1 -1
  311. package/dist/propagator/KeplerPropagator.d.ts +5 -5
  312. package/dist/propagator/KeplerPropagator.js +5 -6
  313. package/dist/propagator/KeplerPropagator.js.map +1 -1
  314. package/dist/propagator/Propagator.d.ts +4 -4
  315. package/dist/propagator/Propagator.js +4 -4
  316. package/dist/propagator/Propagator.js.map +1 -1
  317. package/dist/propagator/RkCheckpoint.d.ts +1 -1
  318. package/dist/propagator/RkResult.d.ts +1 -1
  319. package/dist/propagator/RungeKutta4Propagator.d.ts +5 -5
  320. package/dist/propagator/RungeKutta4Propagator.js +4 -4
  321. package/dist/propagator/RungeKutta4Propagator.js.map +1 -1
  322. package/dist/propagator/RungeKutta89Propagator.d.ts +1 -1
  323. package/dist/propagator/RungeKutta89Propagator.js +1 -1
  324. package/dist/propagator/RungeKutta89Propagator.js.map +1 -1
  325. package/dist/propagator/RungeKuttaAdaptive.d.ts +5 -5
  326. package/dist/propagator/RungeKuttaAdaptive.js +51 -8
  327. package/dist/propagator/RungeKuttaAdaptive.js.map +1 -1
  328. package/dist/propagator/Sgp4Propagator.d.ts +6 -6
  329. package/dist/propagator/Sgp4Propagator.js +3 -3
  330. package/dist/propagator/Sgp4Propagator.js.map +1 -1
  331. package/dist/propagator/index.d.ts +3 -3
  332. package/dist/propagator/index.js +3 -3
  333. package/dist/propagator/index.js.map +1 -1
  334. package/dist/sgp4/index.d.ts +1 -1
  335. package/dist/sgp4/index.js +1 -1
  336. package/dist/sgp4/index.js.map +1 -1
  337. package/dist/sgp4/sgp4.d.ts +2 -2
  338. package/dist/sgp4/sgp4.js +4 -4
  339. package/dist/sgp4/sgp4.js.map +1 -1
  340. package/dist/smoothing/ExponentialSmoothing.d.ts +1 -1
  341. package/dist/time/Epoch.d.ts +1 -1
  342. package/dist/time/Epoch.js +1 -1
  343. package/dist/time/Epoch.js.map +1 -1
  344. package/dist/time/EpochGPS.d.ts +2 -2
  345. package/dist/time/EpochGPS.js +2 -2
  346. package/dist/time/EpochGPS.js.map +1 -1
  347. package/dist/time/EpochTAI.d.ts +1 -1
  348. package/dist/time/EpochTAI.js +1 -1
  349. package/dist/time/EpochTAI.js.map +1 -1
  350. package/dist/time/EpochTDB.d.ts +1 -1
  351. package/dist/time/EpochTDB.js +1 -1
  352. package/dist/time/EpochTDB.js.map +1 -1
  353. package/dist/time/EpochTT.d.ts +1 -1
  354. package/dist/time/EpochTT.js +1 -1
  355. package/dist/time/EpochTT.js.map +1 -1
  356. package/dist/time/EpochUTC.d.ts +6 -6
  357. package/dist/time/EpochUTC.js +8 -8
  358. package/dist/time/EpochUTC.js.map +1 -1
  359. package/dist/time/EpochWindow.d.ts +1 -1
  360. package/dist/time/TimeStamped.d.ts +1 -1
  361. package/dist/time/index.d.ts +8 -8
  362. package/dist/time/index.js +8 -8
  363. package/dist/time/index.js.map +1 -1
  364. package/dist/transforms/conversions.d.ts +1 -1
  365. package/dist/transforms/conversions.js +1 -1
  366. package/dist/transforms/conversions.js.map +1 -1
  367. package/dist/transforms/index.d.ts +2 -2
  368. package/dist/transforms/index.js +2 -2
  369. package/dist/transforms/index.js.map +1 -1
  370. package/dist/transforms/transforms.d.ts +1 -1
  371. package/dist/transforms/transforms.js +1 -1
  372. package/dist/transforms/transforms.js.map +1 -1
  373. package/dist/types/types.d.ts +8 -3
  374. package/dist/types/types.js +6 -1
  375. package/dist/types/types.js.map +1 -1
  376. package/dist/utils/constants.d.ts +2 -2
  377. package/dist/utils/constants.js +1 -1
  378. package/dist/utils/constants.js.map +1 -1
  379. package/dist/utils/create-covariance-from-tle.d.ts +1 -1
  380. package/dist/utils/create-covariance-from-tle.js +1 -1
  381. package/dist/utils/create-covariance-from-tle.js.map +1 -1
  382. package/dist/utils/functions.d.ts +4 -4
  383. package/dist/utils/functions.js +9 -4
  384. package/dist/utils/functions.js.map +1 -1
  385. package/dist/utils/index.d.ts +5 -5
  386. package/dist/utils/index.js +5 -5
  387. package/dist/utils/index.js.map +1 -1
  388. package/dist/utils/jacobian.d.ts +2 -2
  389. package/dist/utils/jacobian.js +1 -1
  390. package/dist/utils/jacobian.js.map +1 -1
  391. package/dist/utils/linearDistance.d.ts +1 -1
  392. package/docs/README.md +132 -0
  393. package/docs/getting-started.md +792 -0
  394. package/docs/lambert-satellite-integration-guide.md +766 -0
  395. package/docs/user-guide.md +1935 -0
  396. package/jest.config.mjs +28 -0
  397. package/package.json +4 -4
  398. package/src/body/Celestial.ts +1 -1
  399. package/src/body/Earth.ts +3 -3
  400. package/src/body/Moon.ts +7 -7
  401. package/src/body/NutationAngles.ts +1 -1
  402. package/src/body/PrecessionAngles.ts +1 -1
  403. package/src/body/Sun.ts +3 -3
  404. package/src/body/index.ts +4 -4
  405. package/src/conjunction/ConjunctionAssessment.ts +417 -0
  406. package/src/conjunction/ConjunctionEvent.ts +149 -0
  407. package/src/conjunction/ProbabilityOfCollision.ts +300 -0
  408. package/src/conjunction/index.ts +24 -0
  409. package/src/coordinate/ClassicalElements.ts +9 -9
  410. package/src/coordinate/EquinoctialElements.ts +6 -6
  411. package/src/coordinate/FormatTle.ts +1 -1
  412. package/src/coordinate/Geodetic.ts +7 -7
  413. package/src/coordinate/Hill.ts +3 -3
  414. package/src/coordinate/ITRF.ts +5 -5
  415. package/src/coordinate/J2000.ts +6 -6
  416. package/src/coordinate/RIC.ts +3 -3
  417. package/src/coordinate/RelativeState.ts +4 -4
  418. package/src/coordinate/StateVector.ts +1 -1
  419. package/src/coordinate/TEME.ts +5 -5
  420. package/src/coordinate/Tle.ts +8 -8
  421. package/src/coordinate/index.ts +13 -12
  422. package/src/covariance/CovarianceSample.ts +5 -5
  423. package/src/covariance/StateCovariance.ts +1 -1
  424. package/src/covariance/index.ts +3 -2
  425. package/src/data/DataHandler.ts +5 -5
  426. package/src/data/values/Egm96Data.ts +2 -2
  427. package/src/data/values/HpAtmosphereData.ts +2 -2
  428. package/src/data/values/HpAtmosphereResult.ts +1 -1
  429. package/src/data/values/Iau1980Data.ts +1 -1
  430. package/src/data/values/LeapSecondData.ts +1 -1
  431. package/src/data/values/egm96.ts +1 -1
  432. package/src/data/values/hpAtmosphere.ts +1 -1
  433. package/src/data/values/iau1980.ts +1 -1
  434. package/src/enums/index.ts +8 -7
  435. package/src/fetch/horizons-constants.ts +53 -0
  436. package/src/fetch/horizons-interfaces.ts +38 -0
  437. package/src/fetch/horizons.ts +300 -0
  438. package/src/force/AtmosphericDrag.ts +2 -2
  439. package/src/force/EarthGravity.ts +2 -2
  440. package/src/force/Force.ts +2 -4
  441. package/src/force/ForceModel.ts +8 -8
  442. package/src/force/Gravity.ts +2 -2
  443. package/src/force/SolarRadiationPressure.ts +3 -3
  444. package/src/force/ThirdBodyGravity.ts +2 -2
  445. package/src/force/Thrust.ts +2 -2
  446. package/src/force/index.ts +2 -1
  447. package/src/interfaces/BaseObjectParams.ts +1 -1
  448. package/src/interfaces/ClassicalElementsParams.ts +1 -1
  449. package/src/interfaces/EquinoctialElementsParams.ts +1 -1
  450. package/src/interfaces/GroundPositionParams.ts +1 -1
  451. package/src/interfaces/RfSensorParams.ts +2 -2
  452. package/src/interfaces/SatelliteParams.ts +2 -2
  453. package/src/interfaces/SensorParams.ts +3 -3
  454. package/src/interfaces/StarObjectParams.ts +1 -1
  455. package/src/interfaces/TimeVariables.ts +1 -1
  456. package/src/interfaces/index.ts +10 -9
  457. package/src/interpolator/ChebyshevCoefficients.ts +1 -1
  458. package/src/interpolator/ChebyshevInterpolator.ts +3 -3
  459. package/src/interpolator/CubicSpline.ts +1 -1
  460. package/src/interpolator/CubicSplineInterpolator.ts +3 -3
  461. package/src/interpolator/FieldInterpolator.ts +2 -4
  462. package/src/interpolator/Interpolator.ts +1 -1
  463. package/src/interpolator/LagrangeInterpolator.ts +2 -2
  464. package/src/interpolator/StateInterpolator.ts +3 -5
  465. package/src/interpolator/VerletBlendInterpolator.ts +4 -4
  466. package/src/main.ts +21 -19
  467. package/src/maneuver/TwoBurnOrbitTransfer.ts +2 -2
  468. package/src/maneuver/Waypoint.ts +7 -7
  469. package/src/objects/BaseObject.ts +2 -2
  470. package/src/objects/DetailedSatellite.ts +3 -3
  471. package/src/objects/DetailedSensor.ts +4 -4
  472. package/src/objects/GroundObject.ts +3 -3
  473. package/src/objects/LandObject.ts +2 -2
  474. package/src/objects/Marker.ts +1 -1
  475. package/src/objects/RfSensor.ts +2 -2
  476. package/src/objects/Satellite.ts +18 -18
  477. package/src/objects/Sensor.ts +6 -6
  478. package/src/objects/Star.ts +2 -2
  479. package/src/objects/index.ts +11 -10
  480. package/src/observation/Observation.ts +10 -22
  481. package/src/observation/ObservationOptical.ts +6 -6
  482. package/src/observation/ObservationRadar.ts +6 -6
  483. package/src/observation/ObservationUtils.ts +1 -1
  484. package/src/observation/PropagatorPairs.ts +1 -1
  485. package/src/observation/RAE.ts +8 -8
  486. package/src/observation/RadecGeocentric.ts +8 -8
  487. package/src/observation/RadecTopocentric.ts +12 -9
  488. package/src/observation/index.ts +4 -4
  489. package/src/operations/BoxMuller.ts +1 -1
  490. package/src/operations/EulerAngles.ts +1 -1
  491. package/src/operations/Matrix.ts +1 -1
  492. package/src/operations/Quaternion.ts +1 -1
  493. package/src/operations/RandomGaussianSource.ts +2 -2
  494. package/src/operations/Vector.ts +1 -1
  495. package/src/operations/Vector3D.ts +5 -3
  496. package/src/operations/index.ts +5 -4
  497. package/src/operations/operations.ts +4 -4
  498. package/src/optimize/ChebyshevCompressor.ts +4 -4
  499. package/src/optimize/DownhillSimplex.ts +1 -1
  500. package/src/optimize/GoldenSection.ts +1 -1
  501. package/src/optimize/PolynomialRegression.ts +3 -3
  502. package/src/optimize/SimplexEntry.ts +1 -1
  503. package/src/orbit_determination/BatchLeastSquaresOD.ts +9 -9
  504. package/src/orbit_determination/BatchLeastSquaresResult.ts +2 -2
  505. package/src/orbit_determination/GaussIOD.ts +393 -0
  506. package/src/orbit_determination/GibbsIOD.ts +3 -3
  507. package/src/orbit_determination/GoodingIOD.ts +457 -159
  508. package/src/orbit_determination/HerrickGibbsIOD.ts +1 -1
  509. package/src/orbit_determination/LambertIOD.ts +1 -1
  510. package/src/orbit_determination/ModifiedGoodingIOD.ts +32 -21
  511. package/src/orbit_determination/index.ts +8 -7
  512. package/src/propagator/DormandPrince54Propagator.ts +1 -1
  513. package/src/propagator/KeplerPropagator.ts +6 -7
  514. package/src/propagator/Propagator.ts +5 -5
  515. package/src/propagator/RkCheckpoint.ts +1 -1
  516. package/src/propagator/RkResult.ts +1 -1
  517. package/src/propagator/RungeKutta4Propagator.ts +5 -5
  518. package/src/propagator/RungeKutta89Propagator.ts +1 -1
  519. package/src/propagator/RungeKuttaAdaptive.ts +60 -10
  520. package/src/propagator/Sgp4Propagator.ts +6 -6
  521. package/src/propagator/index.ts +4 -3
  522. package/src/sgp4/index.ts +1 -1
  523. package/src/sgp4/sgp4.ts +5 -5
  524. package/src/smoothing/ExponentialSmoothing.ts +1 -1
  525. package/src/time/Epoch.ts +2 -2
  526. package/src/time/EpochGPS.ts +4 -4
  527. package/src/time/EpochTAI.ts +1 -1
  528. package/src/time/EpochTDB.ts +1 -1
  529. package/src/time/EpochTT.ts +1 -1
  530. package/src/time/EpochUTC.ts +9 -9
  531. package/src/time/EpochWindow.ts +1 -1
  532. package/src/time/TimeStamped.ts +1 -1
  533. package/src/time/index.ts +9 -8
  534. package/src/transforms/conversions.ts +1 -1
  535. package/src/transforms/index.ts +3 -2
  536. package/src/transforms/transforms.ts +4 -4
  537. package/src/types/types.ts +8 -3
  538. package/src/utils/constants.ts +2 -2
  539. package/src/utils/create-covariance-from-tle.ts +1 -1
  540. package/src/utils/functions.ts +10 -5
  541. package/src/utils/index.ts +6 -5
  542. package/src/utils/jacobian.ts +2 -2
  543. package/src/utils/linearDistance.ts +1 -1
@@ -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
+ }
@@ -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 { Matrix } from '../operations/Matrix.js';
18
+ /**
19
+ * Represents the result of a conjunction assessment between two space objects.
20
+ * Contains all relevant information about the close approach event.
21
+ */
22
+ export class ConjunctionEvent {
23
+ tca;
24
+ primaryState;
25
+ secondaryState;
26
+ relativeState;
27
+ missDistance;
28
+ radialDistance;
29
+ intrackDistance;
30
+ crosstrackDistance;
31
+ relativeVelocity;
32
+ combinedCovariance;
33
+ probabilityOfCollision;
34
+ primaryRadius;
35
+ secondaryRadius;
36
+ constructor(
37
+ /** Time of Closest Approach (TCA) */
38
+ tca,
39
+ /** Primary object state at TCA in J2000 frame */
40
+ primaryState,
41
+ /** Secondary object state at TCA in J2000 frame */
42
+ secondaryState,
43
+ /** Relative state in RIC frame (relative to primary) */
44
+ relativeState,
45
+ /** Total miss distance at TCA (km) */
46
+ missDistance,
47
+ /** Radial component of miss distance (km) */
48
+ radialDistance,
49
+ /** Intrack component of miss distance (km) */
50
+ intrackDistance,
51
+ /** Crosstrack component of miss distance (km) */
52
+ crosstrackDistance,
53
+ /** Relative velocity magnitude at TCA (km/s) */
54
+ relativeVelocity,
55
+ /** Combined position covariance matrix in RIC frame (optional) */
56
+ combinedCovariance,
57
+ /** Probability of collision (optional, 0-1) */
58
+ probabilityOfCollision,
59
+ /** Hard body radius for primary object (km, optional) */
60
+ primaryRadius,
61
+ /** Hard body radius for secondary object (km, optional) */
62
+ secondaryRadius) {
63
+ this.tca = tca;
64
+ this.primaryState = primaryState;
65
+ this.secondaryState = secondaryState;
66
+ this.relativeState = relativeState;
67
+ this.missDistance = missDistance;
68
+ this.radialDistance = radialDistance;
69
+ this.intrackDistance = intrackDistance;
70
+ this.crosstrackDistance = crosstrackDistance;
71
+ this.relativeVelocity = relativeVelocity;
72
+ this.combinedCovariance = combinedCovariance;
73
+ this.probabilityOfCollision = probabilityOfCollision;
74
+ this.primaryRadius = primaryRadius;
75
+ this.secondaryRadius = secondaryRadius;
76
+ }
77
+ /**
78
+ * Returns a formatted string representation of the conjunction event.
79
+ * @returns A multi-line string with conjunction details.
80
+ */
81
+ toString() {
82
+ const lines = [
83
+ '[Conjunction Event]',
84
+ ` TCA: ${this.tca.toString()}`,
85
+ ` Miss Distance: ${this.missDistance.toFixed(6)} km`,
86
+ ` Radial: ${this.radialDistance.toFixed(6)} km`,
87
+ ` Intrack: ${this.intrackDistance.toFixed(6)} km`,
88
+ ` Crosstrack: ${this.crosstrackDistance.toFixed(6)} km`,
89
+ ` Relative Velocity: ${this.relativeVelocity.toFixed(6)} km/s`,
90
+ ];
91
+ if (this.probabilityOfCollision !== undefined) {
92
+ lines.push(` Probability of Collision: ${this.probabilityOfCollision.toExponential(6)}`);
93
+ }
94
+ if (this.primaryRadius !== undefined && this.secondaryRadius !== undefined) {
95
+ const combinedRadius = this.primaryRadius + this.secondaryRadius;
96
+ lines.push(` Combined Hard Body Radius: ${combinedRadius.toFixed(3)} km`);
97
+ }
98
+ return lines.join('\n');
99
+ }
100
+ /**
101
+ * Checks if this is a high-risk conjunction based on miss distance and Pc.
102
+ * @param distanceThreshold Miss distance threshold in km (default: 1.0 km)
103
+ * @param pcThreshold Probability of collision threshold (default: 1e-4)
104
+ * @returns True if the conjunction exceeds risk thresholds.
105
+ */
106
+ isHighRisk(distanceThreshold = 1.0, pcThreshold = 1e-4) {
107
+ const distanceRisk = this.missDistance < distanceThreshold;
108
+ const pcRisk = this.probabilityOfCollision !== undefined && this.probabilityOfCollision > pcThreshold;
109
+ return distanceRisk || pcRisk;
110
+ }
111
+ /**
112
+ * Gets the Mahalanobis distance if covariance is available.
113
+ * This is the miss distance normalized by the combined covariance.
114
+ * @returns The Mahalanobis distance (unitless), or undefined if no covariance.
115
+ */
116
+ getMahalanobisDistance() {
117
+ if (!this.combinedCovariance) {
118
+ return undefined;
119
+ }
120
+ // Extract position-only covariance (first 3x3 block)
121
+ const posCovariance = this.extractPositionCovariance(this.combinedCovariance.matrix);
122
+ const relativePosition = [
123
+ this.relativeState.position.x,
124
+ this.relativeState.position.y,
125
+ this.relativeState.position.z,
126
+ ];
127
+ try {
128
+ // Compute Mahalanobis distance: sqrt(r^T * C^-1 * r)
129
+ const covInv = posCovariance.inverse();
130
+ const temp = covInv.multiplyVector(relativePosition);
131
+ let mahalanobis = 0;
132
+ for (let i = 0; i < 3; i++) {
133
+ mahalanobis += relativePosition[i] * temp[i];
134
+ }
135
+ return Math.sqrt(mahalanobis);
136
+ }
137
+ catch {
138
+ // Covariance may be singular
139
+ return undefined;
140
+ }
141
+ }
142
+ /**
143
+ * Extracts the 3x3 position covariance from a 6x6 state covariance matrix.
144
+ * @param stateCov 6x6 state covariance matrix
145
+ * @returns 3x3 position covariance matrix
146
+ */
147
+ extractPositionCovariance(stateCov) {
148
+ const elements = [
149
+ [stateCov.elements[0][0], stateCov.elements[0][1], stateCov.elements[0][2]],
150
+ [stateCov.elements[1][0], stateCov.elements[1][1], stateCov.elements[1][2]],
151
+ [stateCov.elements[2][0], stateCov.elements[2][1], stateCov.elements[2][2]],
152
+ ];
153
+ return new Matrix(elements);
154
+ }
155
+ }
156
+ //# sourceMappingURL=ConjunctionEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConjunctionEvent.js","sourceRoot":"","sources":["../../src/conjunction/ConjunctionEvent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
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 { Vector3D } from '../operations/Vector3D.js';
18
+ import type { StateCovariance } from '../covariance/StateCovariance.js';
19
+ import type { Kilometers } from '../main.js';
20
+ /**
21
+ * Probability of Collision calculator using Chan's 2D method.
22
+ *
23
+ * This implementation projects the combined covariance matrix onto the
24
+ * encounter plane (B-plane) perpendicular to the relative velocity vector,
25
+ * then computes the probability that the relative position lies within
26
+ * the combined hard body radius.
27
+ *
28
+ * Reference: Chan, F. K. (2008). "Spacecraft Collision Probability"
29
+ */
30
+ export declare class ProbabilityOfCollision {
31
+ /**
32
+ * Computes probability of collision using Chan's 2D method.
33
+ *
34
+ * @param relativePosition Relative position vector in RIC frame (km)
35
+ * @param relativeVelocity Relative velocity vector in RIC frame (km/s)
36
+ * @param combinedCovariance Combined position covariance in RIC frame (6x6)
37
+ * @param combinedRadius Combined hard body radius (km)
38
+ * @returns Probability of collision (0 to 1)
39
+ */
40
+ static calculate(relativePosition: Vector3D<Kilometers>, relativeVelocity: Vector3D, combinedCovariance: StateCovariance, combinedRadius: Kilometers): number;
41
+ /**
42
+ * Calculates 2D probability of collision in the encounter plane.
43
+ *
44
+ * Uses the analytical solution for 2D Gaussian probability within a circle.
45
+ *
46
+ * @param x X-coordinate in encounter plane (km)
47
+ * @param y Y-coordinate in encounter plane (km)
48
+ * @param cov2D 2x2 covariance matrix in encounter plane
49
+ * @param radius Combined hard body radius (km)
50
+ * @returns Probability of collision (0 to 1)
51
+ */
52
+ private static calculatePc2D;
53
+ /**
54
+ * Chan's analytical approximation for 2D Pc.
55
+ *
56
+ * Reference: Chan, F. K. (2008). "Spacecraft Collision Probability"
57
+ *
58
+ * @param mahalanobisDistance Mahalanobis distance (sqrt of d2)
59
+ * @param radius Combined hard body radius
60
+ * @param sigma1 Larger semi-axis of covariance ellipse
61
+ * @param sigma2 Smaller semi-axis of covariance ellipse
62
+ * @returns Probability of collision (0 to 1)
63
+ */
64
+ private static chanPc2D;
65
+ /**
66
+ * Approximates the complementary error function erfc(x).
67
+ *
68
+ * Uses Abramowitz and Stegun approximation (formula 7.1.26).
69
+ *
70
+ * @param x Input value
71
+ * @returns erfc(x)
72
+ */
73
+ private static approximateErfc;
74
+ /**
75
+ * Fallback 3D probability calculation for cases with very low relative velocity.
76
+ *
77
+ * Uses simple spherical approximation.
78
+ *
79
+ * @param relativePosition Relative position vector
80
+ * @param posCovariance 3x3 position covariance matrix
81
+ * @param combinedRadius Combined hard body radius
82
+ * @returns Probability of collision (0 to 1)
83
+ */
84
+ private static calculate3D;
85
+ /**
86
+ * Combines two covariance matrices (primary and secondary).
87
+ *
88
+ * The combined covariance is simply the sum of the two covariances,
89
+ * assuming they are independent.
90
+ *
91
+ * @param primaryCov Primary object covariance
92
+ * @param secondaryCov Secondary object covariance
93
+ * @returns Combined covariance
94
+ */
95
+ static combineCovarianceMatrices(primaryCov: StateCovariance, secondaryCov: StateCovariance): StateCovariance;
96
+ /**
97
+ * Extracts the 3x3 position covariance from a 6x6 state covariance matrix.
98
+ * @param stateCov 6x6 state covariance matrix
99
+ * @returns 3x3 position covariance matrix
100
+ */
101
+ private static extractPositionCovariance;
102
+ }