ootk 5.0.0 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (440) hide show
  1. package/dist/body/Celestial.d.ts +19 -19
  2. package/dist/body/Celestial.js +19 -19
  3. package/dist/body/Earth.d.ts +18 -18
  4. package/dist/body/Earth.js +18 -18
  5. package/dist/body/NutationAngles.d.ts +18 -18
  6. package/dist/body/NutationAngles.js +18 -18
  7. package/dist/body/PrecessionAngles.d.ts +18 -18
  8. package/dist/body/PrecessionAngles.js +18 -18
  9. package/dist/body/Sun.d.ts +14 -18
  10. package/dist/body/Sun.js +14 -18
  11. package/dist/body/Sun.js.map +1 -1
  12. package/dist/body/index.d.ts +18 -18
  13. package/dist/body/index.js +18 -18
  14. package/dist/coordinate/ClassicalElements.d.ts +18 -18
  15. package/dist/coordinate/ClassicalElements.js +19 -19
  16. package/dist/coordinate/ClassicalElements.js.map +1 -1
  17. package/dist/coordinate/EquinoctialElements.d.ts +18 -18
  18. package/dist/coordinate/EquinoctialElements.js +18 -18
  19. package/dist/coordinate/FormatTle.d.ts +18 -18
  20. package/dist/coordinate/FormatTle.js +18 -18
  21. package/dist/coordinate/Geodetic.d.ts +18 -18
  22. package/dist/coordinate/Geodetic.js +18 -18
  23. package/dist/coordinate/Hill.d.ts +1 -1
  24. package/dist/coordinate/Hill.js +1 -1
  25. package/dist/coordinate/ITRF.d.ts +18 -18
  26. package/dist/coordinate/ITRF.js +18 -19
  27. package/dist/coordinate/ITRF.js.map +1 -1
  28. package/dist/coordinate/J2000.d.ts +18 -18
  29. package/dist/coordinate/J2000.js +18 -18
  30. package/dist/coordinate/RIC.d.ts +18 -18
  31. package/dist/coordinate/RIC.js +18 -18
  32. package/dist/coordinate/RelativeState.d.ts +18 -18
  33. package/dist/coordinate/RelativeState.js +18 -18
  34. package/dist/coordinate/StateVector.d.ts +18 -18
  35. package/dist/coordinate/StateVector.js +19 -19
  36. package/dist/coordinate/StateVector.js.map +1 -1
  37. package/dist/coordinate/TEME.d.ts +18 -18
  38. package/dist/coordinate/TEME.js +18 -18
  39. package/dist/coordinate/Tle.d.ts +21 -22
  40. package/dist/coordinate/Tle.js +21 -21
  41. package/dist/coordinate/Tle.js.map +1 -1
  42. package/dist/coordinate/index.js +0 -1
  43. package/dist/coordinate/index.js.map +1 -1
  44. package/dist/coordinate/tle-format-data.d.ts +18 -18
  45. package/dist/coordinate/tle-format-data.js +18 -18
  46. package/dist/covariance/CovarianceSample.d.ts +9 -6
  47. package/dist/covariance/CovarianceSample.js +92 -18
  48. package/dist/covariance/CovarianceSample.js.map +1 -1
  49. package/dist/covariance/StateCovariance.d.ts +1 -1
  50. package/dist/covariance/StateCovariance.js +1 -1
  51. package/dist/covariance/index.d.ts +2 -0
  52. package/dist/covariance/index.js +3 -0
  53. package/dist/covariance/index.js.map +1 -0
  54. package/dist/data/DataHandler.d.ts +18 -18
  55. package/dist/data/DataHandler.js +18 -18
  56. package/dist/data/values/Egm96Data.d.ts +18 -18
  57. package/dist/data/values/Egm96Data.js +18 -18
  58. package/dist/data/values/Egm96Data.js.map +1 -1
  59. package/dist/data/values/HpAtmosphereData.d.ts +18 -18
  60. package/dist/data/values/HpAtmosphereData.js +20 -20
  61. package/dist/data/values/HpAtmosphereData.js.map +1 -1
  62. package/dist/data/values/HpAtmosphereResult.d.ts +18 -18
  63. package/dist/data/values/HpAtmosphereResult.js +18 -18
  64. package/dist/data/values/Iau1980Data.d.ts +18 -18
  65. package/dist/data/values/Iau1980Data.js +18 -18
  66. package/dist/data/values/Iau1980Data.js.map +1 -1
  67. package/dist/data/values/LeapSecond.d.ts +18 -18
  68. package/dist/data/values/LeapSecond.js +18 -18
  69. package/dist/data/values/LeapSecondData.d.ts +18 -18
  70. package/dist/data/values/LeapSecondData.js +22 -22
  71. package/dist/data/values/LeapSecondData.js.map +1 -1
  72. package/dist/data/values/egm96.d.ts +18 -18
  73. package/dist/data/values/egm96.js +18 -18
  74. package/dist/data/values/hpAtmosphere.d.ts +18 -18
  75. package/dist/data/values/hpAtmosphere.js +18 -18
  76. package/dist/data/values/iau1980.d.ts +18 -18
  77. package/dist/data/values/iau1980.js +18 -18
  78. package/dist/enums/AngularDiameterMethod.d.ts +18 -18
  79. package/dist/enums/AngularDiameterMethod.js +18 -18
  80. package/dist/enums/AngularDistanceMethod.d.ts +18 -18
  81. package/dist/enums/AngularDistanceMethod.js +18 -18
  82. package/dist/enums/OrbitRegime.d.ts +18 -18
  83. package/dist/enums/OrbitRegime.js +18 -18
  84. package/dist/enums/PassType.d.ts +18 -18
  85. package/dist/enums/PassType.js +18 -18
  86. package/dist/enums/Sgp4OpsMode.d.ts +18 -18
  87. package/dist/enums/Sgp4OpsMode.js +18 -18
  88. package/dist/force/AtmosphericDrag.d.ts +1 -1
  89. package/dist/force/AtmosphericDrag.js +2 -5
  90. package/dist/force/AtmosphericDrag.js.map +1 -1
  91. package/dist/force/EarthGravity.d.ts +1 -1
  92. package/dist/force/EarthGravity.js +1 -1
  93. package/dist/force/Force.d.ts +1 -1
  94. package/dist/force/Force.js +1 -1
  95. package/dist/force/ForceModel.d.ts +1 -1
  96. package/dist/force/ForceModel.js +1 -1
  97. package/dist/force/Gravity.d.ts +1 -1
  98. package/dist/force/Gravity.js +1 -1
  99. package/dist/force/SolarRadiationPressure.d.ts +1 -1
  100. package/dist/force/SolarRadiationPressure.js +1 -1
  101. package/dist/force/ThirdBodyGravity.d.ts +1 -1
  102. package/dist/force/ThirdBodyGravity.js +1 -1
  103. package/dist/force/Thrust.d.ts +1 -1
  104. package/dist/force/Thrust.js +1 -1
  105. package/dist/interfaces/BaseObjectParams.d.ts +18 -18
  106. package/dist/interfaces/BaseObjectParams.js +18 -18
  107. package/dist/interfaces/ClassicalElementsParams.d.ts +18 -18
  108. package/dist/interfaces/ClassicalElementsParams.js +18 -18
  109. package/dist/interfaces/EquinoctialElementsParams.d.ts +18 -18
  110. package/dist/interfaces/EquinoctialElementsParams.js +18 -18
  111. package/dist/interfaces/GroundPositionParams.d.ts +18 -18
  112. package/dist/interfaces/GroundPositionParams.js +18 -18
  113. package/dist/interpolator/ChebyshevCoefficients.d.ts +4 -4
  114. package/dist/interpolator/ChebyshevCoefficients.js +1 -1
  115. package/dist/interpolator/ChebyshevCoefficients.js.map +1 -1
  116. package/dist/interpolator/ChebyshevInterpolator.d.ts +2 -2
  117. package/dist/interpolator/ChebyshevInterpolator.js +8 -8
  118. package/dist/interpolator/ChebyshevInterpolator.js.map +1 -1
  119. package/dist/interpolator/CubicSpline.d.ts +1 -1
  120. package/dist/interpolator/CubicSpline.js +1 -1
  121. package/dist/interpolator/CubicSplineInterpolator.d.ts +3 -3
  122. package/dist/interpolator/CubicSplineInterpolator.js +9 -9
  123. package/dist/interpolator/CubicSplineInterpolator.js.map +1 -1
  124. package/dist/interpolator/FieldInterpolator.d.ts +1 -1
  125. package/dist/interpolator/FieldInterpolator.js +1 -1
  126. package/dist/interpolator/Interpolator.d.ts +1 -1
  127. package/dist/interpolator/Interpolator.js +1 -1
  128. package/dist/interpolator/LagrangeInterpolator.d.ts +6 -6
  129. package/dist/interpolator/LagrangeInterpolator.js +1 -1
  130. package/dist/interpolator/LagrangeInterpolator.js.map +1 -1
  131. package/dist/interpolator/StateInterpolator.d.ts +1 -1
  132. package/dist/interpolator/StateInterpolator.js +1 -1
  133. package/dist/interpolator/VerletBlendInterpolator.d.ts +1 -1
  134. package/dist/interpolator/VerletBlendInterpolator.js +1 -1
  135. package/dist/main.d.ts +4 -2
  136. package/dist/main.js +4 -2
  137. package/dist/main.js.map +1 -1
  138. package/dist/maneuver/TwoBurnOrbitTransfer.d.ts +1 -1
  139. package/dist/maneuver/TwoBurnOrbitTransfer.js +1 -1
  140. package/dist/maneuver/Waypoint.d.ts +1 -1
  141. package/dist/maneuver/Waypoint.js +1 -1
  142. package/dist/objects/BaseObject.d.ts +18 -18
  143. package/dist/objects/BaseObject.js +18 -18
  144. package/dist/objects/DetailedSatellite.d.ts +1 -1
  145. package/dist/objects/DetailedSatellite.js +4 -2
  146. package/dist/objects/DetailedSatellite.js.map +1 -1
  147. package/dist/objects/DetailedSensor.d.ts +1 -1
  148. package/dist/objects/DetailedSensor.js +1 -1
  149. package/dist/objects/GroundObject.d.ts +18 -18
  150. package/dist/objects/GroundObject.js +18 -18
  151. package/dist/objects/LandObject.d.ts +1 -1
  152. package/dist/objects/LandObject.js +1 -1
  153. package/dist/objects/Marker.d.ts +1 -1
  154. package/dist/objects/Marker.js +1 -1
  155. package/dist/objects/Satellite.d.ts +18 -18
  156. package/dist/objects/Satellite.js +19 -19
  157. package/dist/objects/Satellite.js.map +1 -1
  158. package/dist/objects/Sensor.d.ts +18 -19
  159. package/dist/objects/Sensor.js +18 -19
  160. package/dist/objects/Sensor.js.map +1 -1
  161. package/dist/objects/Star.d.ts +18 -18
  162. package/dist/objects/Star.js +18 -18
  163. package/dist/observation/Observation.d.ts +1 -1
  164. package/dist/observation/Observation.js +1 -1
  165. package/dist/observation/ObservationOptical.d.ts +5 -5
  166. package/dist/observation/ObservationOptical.js +8 -8
  167. package/dist/observation/ObservationOptical.js.map +1 -1
  168. package/dist/observation/ObservationRadar.d.ts +5 -5
  169. package/dist/observation/ObservationRadar.js +8 -8
  170. package/dist/observation/ObservationRadar.js.map +1 -1
  171. package/dist/observation/ObservationUtils.d.ts +1 -1
  172. package/dist/observation/ObservationUtils.js +1 -1
  173. package/dist/observation/PropagatorPairs.d.ts +4 -4
  174. package/dist/observation/PropagatorPairs.js +7 -7
  175. package/dist/observation/PropagatorPairs.js.map +1 -1
  176. package/dist/observation/RAE.d.ts +18 -18
  177. package/dist/observation/RAE.js +18 -19
  178. package/dist/observation/RAE.js.map +1 -1
  179. package/dist/observation/RadecGeocentric.d.ts +18 -18
  180. package/dist/observation/RadecGeocentric.js +18 -18
  181. package/dist/observation/RadecTopocentric.d.ts +18 -18
  182. package/dist/observation/RadecTopocentric.js +18 -18
  183. package/dist/observation/index.d.ts +18 -18
  184. package/dist/observation/index.js +18 -18
  185. package/dist/operations/BoxMuller.d.ts +1 -1
  186. package/dist/operations/BoxMuller.js +1 -1
  187. package/dist/operations/EulerAngles.d.ts +1 -1
  188. package/dist/operations/EulerAngles.js +1 -1
  189. package/dist/operations/Matrix.d.ts +18 -18
  190. package/dist/operations/Matrix.js +63 -63
  191. package/dist/operations/Matrix.js.map +1 -1
  192. package/dist/operations/Quaternion.d.ts +6 -6
  193. package/dist/operations/Quaternion.js +1 -1
  194. package/dist/operations/Quaternion.js.map +1 -1
  195. package/dist/operations/Random.d.ts +18 -18
  196. package/dist/operations/Random.js +18 -18
  197. package/dist/operations/RandomGaussianSource.d.ts +2 -2
  198. package/dist/operations/RandomGaussianSource.js +4 -4
  199. package/dist/operations/RandomGaussianSource.js.map +1 -1
  200. package/dist/operations/Vector.d.ts +18 -18
  201. package/dist/operations/Vector.js +24 -24
  202. package/dist/operations/Vector.js.map +1 -1
  203. package/dist/operations/Vector3D.d.ts +18 -18
  204. package/dist/operations/Vector3D.js +18 -18
  205. package/dist/operations/operations.d.ts +18 -18
  206. package/dist/operations/operations.js +18 -18
  207. package/dist/optimize/ChebyshevCompressor.d.ts +3 -3
  208. package/dist/optimize/ChebyshevCompressor.js +7 -7
  209. package/dist/optimize/ChebyshevCompressor.js.map +1 -1
  210. package/dist/optimize/DownhillSimplex.d.ts +1 -1
  211. package/dist/optimize/DownhillSimplex.js +1 -1
  212. package/dist/optimize/GoldenSection.d.ts +2 -2
  213. package/dist/optimize/GoldenSection.js +3 -3
  214. package/dist/optimize/PolynomialRegression.d.ts +1 -1
  215. package/dist/optimize/PolynomialRegression.js +1 -1
  216. package/dist/optimize/PolynomicalRegressionResult.d.ts +1 -1
  217. package/dist/optimize/PolynomicalRegressionResult.js +1 -1
  218. package/dist/optimize/SimpleLinearRegression.d.ts +1 -1
  219. package/dist/optimize/SimpleLinearRegression.js +1 -1
  220. package/dist/optimize/SimplexEntry.d.ts +4 -4
  221. package/dist/optimize/SimplexEntry.js +10 -10
  222. package/dist/optimize/SimplexEntry.js.map +1 -1
  223. package/dist/orbit_determination/BatchLeastSquaresOD.d.ts +10 -10
  224. package/dist/orbit_determination/BatchLeastSquaresOD.js +1 -1
  225. package/dist/orbit_determination/BatchLeastSquaresOD.js.map +1 -1
  226. package/dist/orbit_determination/BatchLeastSquaresResult.d.ts +1 -1
  227. package/dist/orbit_determination/BatchLeastSquaresResult.js +1 -1
  228. package/dist/orbit_determination/GibbsIOD.d.ts +1 -1
  229. package/dist/orbit_determination/GibbsIOD.js +1 -1
  230. package/dist/orbit_determination/GoodingIOD.d.ts +1 -1
  231. package/dist/orbit_determination/GoodingIOD.js +1 -1
  232. package/dist/orbit_determination/HerrickGibbsIOD.d.ts +1 -1
  233. package/dist/orbit_determination/HerrickGibbsIOD.js +1 -1
  234. package/dist/orbit_determination/LambertIOD.d.ts +1 -1
  235. package/dist/orbit_determination/LambertIOD.js +1 -1
  236. package/dist/orbit_determination/ModifiedGoodingIOD.d.ts +3 -3
  237. package/dist/orbit_determination/ModifiedGoodingIOD.js +1 -1
  238. package/dist/orbit_determination/ModifiedGoodingIOD.js.map +1 -1
  239. package/dist/propagator/DormandPrince54Propagator.d.ts +5 -5
  240. package/dist/propagator/DormandPrince54Propagator.js +9 -9
  241. package/dist/propagator/DormandPrince54Propagator.js.map +1 -1
  242. package/dist/propagator/KeplerPropagator.d.ts +5 -5
  243. package/dist/propagator/KeplerPropagator.js +30 -30
  244. package/dist/propagator/KeplerPropagator.js.map +1 -1
  245. package/dist/propagator/Propagator.d.ts +1 -1
  246. package/dist/propagator/Propagator.js +1 -1
  247. package/dist/propagator/RkCheckpoint.d.ts +1 -1
  248. package/dist/propagator/RkCheckpoint.js +1 -1
  249. package/dist/propagator/RkResult.d.ts +1 -1
  250. package/dist/propagator/RkResult.js +1 -1
  251. package/dist/propagator/RungeKutta4Propagator.d.ts +2 -2
  252. package/dist/propagator/RungeKutta4Propagator.js +1 -1
  253. package/dist/propagator/RungeKutta4Propagator.js.map +1 -1
  254. package/dist/propagator/RungeKutta89Propagator.d.ts +5 -5
  255. package/dist/propagator/RungeKutta89Propagator.js +1 -1
  256. package/dist/propagator/RungeKutta89Propagator.js.map +1 -1
  257. package/dist/propagator/RungeKuttaAdaptive.d.ts +3 -3
  258. package/dist/propagator/RungeKuttaAdaptive.js +1 -1
  259. package/dist/propagator/RungeKuttaAdaptive.js.map +1 -1
  260. package/dist/propagator/Sgp4Propagator.d.ts +5 -5
  261. package/dist/propagator/Sgp4Propagator.js +15 -15
  262. package/dist/propagator/Sgp4Propagator.js.map +1 -1
  263. package/dist/sgp4/index.d.ts +18 -18
  264. package/dist/sgp4/index.js +18 -18
  265. package/dist/sgp4/sgp4.d.ts +17 -20
  266. package/dist/sgp4/sgp4.js +20 -23
  267. package/dist/sgp4/sgp4.js.map +1 -1
  268. package/dist/smoothing/ExponentialSmoothing.d.ts +1 -1
  269. package/dist/smoothing/ExponentialSmoothing.js +1 -1
  270. package/dist/time/Epoch.d.ts +18 -18
  271. package/dist/time/Epoch.js +18 -18
  272. package/dist/time/EpochGPS.d.ts +19 -19
  273. package/dist/time/EpochGPS.js +19 -19
  274. package/dist/time/EpochGPS.js.map +1 -1
  275. package/dist/time/EpochTAI.d.ts +18 -18
  276. package/dist/time/EpochTAI.js +18 -18
  277. package/dist/time/EpochTDB.d.ts +18 -18
  278. package/dist/time/EpochTDB.js +18 -18
  279. package/dist/time/EpochTT.d.ts +18 -18
  280. package/dist/time/EpochTT.js +18 -18
  281. package/dist/time/EpochUTC.d.ts +18 -18
  282. package/dist/time/EpochUTC.js +18 -18
  283. package/dist/time/EpochUTC.js.map +1 -1
  284. package/dist/time/EpochWindow.d.ts +18 -18
  285. package/dist/time/EpochWindow.js +18 -18
  286. package/dist/time/TimeStamped.d.ts +18 -22
  287. package/dist/time/TimeStamped.js +18 -22
  288. package/dist/time/TimeStamped.js.map +1 -1
  289. package/dist/time/index.d.ts +0 -22
  290. package/dist/time/index.js +0 -22
  291. package/dist/time/index.js.map +1 -1
  292. package/dist/transforms/TransformCache.d.ts +18 -18
  293. package/dist/transforms/TransformCache.js +18 -18
  294. package/dist/transforms/conversions.d.ts +18 -18
  295. package/dist/transforms/conversions.js +18 -18
  296. package/dist/types/types.d.ts +2 -2
  297. package/dist/types/types.js +1 -1
  298. package/dist/utils/create-covariance-from-tle.d.ts +18 -0
  299. package/dist/utils/create-covariance-from-tle.js +57 -0
  300. package/dist/utils/create-covariance-from-tle.js.map +1 -0
  301. package/dist/utils/functions.js.map +1 -1
  302. package/dist/utils/index.d.ts +1 -0
  303. package/dist/utils/index.js +1 -0
  304. package/dist/utils/index.js.map +1 -1
  305. package/dist/utils/jacobian.d.ts +6 -0
  306. package/dist/utils/jacobian.js +6 -1
  307. package/dist/utils/jacobian.js.map +1 -1
  308. package/package.json +2 -2
  309. package/src/body/Celestial.ts +19 -19
  310. package/src/body/Earth.ts +18 -18
  311. package/src/body/NutationAngles.ts +18 -18
  312. package/src/body/PrecessionAngles.ts +18 -18
  313. package/src/body/Sun.ts +14 -18
  314. package/src/body/index.ts +18 -18
  315. package/src/coordinate/ClassicalElements.ts +21 -20
  316. package/src/coordinate/EquinoctialElements.ts +18 -18
  317. package/src/coordinate/FormatTle.ts +18 -18
  318. package/src/coordinate/Geodetic.ts +18 -18
  319. package/src/coordinate/Hill.ts +1 -1
  320. package/src/coordinate/ITRF.ts +18 -18
  321. package/src/coordinate/J2000.ts +18 -18
  322. package/src/coordinate/RIC.ts +18 -18
  323. package/src/coordinate/RelativeState.ts +18 -18
  324. package/src/coordinate/StateVector.ts +21 -20
  325. package/src/coordinate/TEME.ts +18 -18
  326. package/src/coordinate/Tle.ts +26 -26
  327. package/src/coordinate/index.ts +0 -1
  328. package/src/coordinate/tle-format-data.ts +18 -18
  329. package/src/covariance/CovarianceSample.ts +116 -18
  330. package/src/covariance/StateCovariance.ts +1 -1
  331. package/src/covariance/index.ts +2 -0
  332. package/src/data/DataHandler.ts +18 -18
  333. package/src/data/values/Egm96Data.ts +19 -19
  334. package/src/data/values/HpAtmosphereData.ts +21 -21
  335. package/src/data/values/HpAtmosphereResult.ts +18 -18
  336. package/src/data/values/Iau1980Data.ts +19 -19
  337. package/src/data/values/LeapSecond.ts +18 -18
  338. package/src/data/values/LeapSecondData.ts +24 -24
  339. package/src/data/values/egm96.ts +18 -18
  340. package/src/data/values/hpAtmosphere.ts +18 -18
  341. package/src/data/values/iau1980.ts +18 -18
  342. package/src/enums/AngularDiameterMethod.ts +18 -18
  343. package/src/enums/AngularDistanceMethod.ts +18 -18
  344. package/src/enums/OrbitRegime.ts +18 -18
  345. package/src/enums/PassType.ts +18 -18
  346. package/src/enums/Sgp4OpsMode.ts +18 -18
  347. package/src/force/AtmosphericDrag.ts +1 -3
  348. package/src/force/EarthGravity.ts +1 -1
  349. package/src/force/Force.ts +1 -1
  350. package/src/force/ForceModel.ts +1 -1
  351. package/src/force/Gravity.ts +1 -1
  352. package/src/force/SolarRadiationPressure.ts +1 -1
  353. package/src/force/ThirdBodyGravity.ts +1 -1
  354. package/src/force/Thrust.ts +1 -1
  355. package/src/interfaces/BaseObjectParams.ts +18 -18
  356. package/src/interfaces/ClassicalElementsParams.ts +18 -18
  357. package/src/interfaces/EquinoctialElementsParams.ts +18 -18
  358. package/src/interfaces/GroundPositionParams.ts +18 -18
  359. package/src/interpolator/ChebyshevCoefficients.ts +4 -4
  360. package/src/interpolator/ChebyshevInterpolator.ts +9 -9
  361. package/src/interpolator/CubicSpline.ts +1 -1
  362. package/src/interpolator/CubicSplineInterpolator.ts +7 -7
  363. package/src/interpolator/FieldInterpolator.ts +1 -1
  364. package/src/interpolator/Interpolator.ts +1 -1
  365. package/src/interpolator/LagrangeInterpolator.ts +6 -6
  366. package/src/interpolator/StateInterpolator.ts +1 -1
  367. package/src/interpolator/VerletBlendInterpolator.ts +1 -1
  368. package/src/main.ts +4 -2
  369. package/src/maneuver/TwoBurnOrbitTransfer.ts +1 -1
  370. package/src/maneuver/Waypoint.ts +1 -1
  371. package/src/objects/BaseObject.ts +18 -18
  372. package/src/objects/DetailedSatellite.ts +2 -1
  373. package/src/objects/DetailedSensor.ts +1 -1
  374. package/src/objects/GroundObject.ts +18 -18
  375. package/src/objects/LandObject.ts +1 -1
  376. package/src/objects/Marker.ts +1 -1
  377. package/src/objects/Satellite.ts +19 -19
  378. package/src/objects/Sensor.ts +18 -19
  379. package/src/objects/Star.ts +18 -18
  380. package/src/observation/Observation.ts +1 -1
  381. package/src/observation/ObservationOptical.ts +6 -6
  382. package/src/observation/ObservationRadar.ts +9 -5
  383. package/src/observation/ObservationUtils.ts +1 -1
  384. package/src/observation/PropagatorPairs.ts +3 -3
  385. package/src/observation/RAE.ts +18 -19
  386. package/src/observation/RadecGeocentric.ts +18 -18
  387. package/src/observation/RadecTopocentric.ts +18 -18
  388. package/src/observation/index.ts +18 -18
  389. package/src/operations/BoxMuller.ts +1 -1
  390. package/src/operations/EulerAngles.ts +1 -1
  391. package/src/operations/Matrix.ts +66 -66
  392. package/src/operations/Quaternion.ts +6 -6
  393. package/src/operations/Random.ts +18 -18
  394. package/src/operations/RandomGaussianSource.ts +4 -4
  395. package/src/operations/Vector.ts +24 -24
  396. package/src/operations/Vector3D.ts +18 -18
  397. package/src/operations/operations.ts +18 -18
  398. package/src/optimize/ChebyshevCompressor.ts +5 -5
  399. package/src/optimize/DownhillSimplex.ts +1 -1
  400. package/src/optimize/GoldenSection.ts +3 -3
  401. package/src/optimize/PolynomialRegression.ts +1 -1
  402. package/src/optimize/PolynomicalRegressionResult.ts +1 -1
  403. package/src/optimize/SimpleLinearRegression.ts +1 -1
  404. package/src/optimize/SimplexEntry.ts +8 -8
  405. package/src/orbit_determination/BatchLeastSquaresOD.ts +10 -10
  406. package/src/orbit_determination/BatchLeastSquaresResult.ts +1 -1
  407. package/src/orbit_determination/GibbsIOD.ts +1 -1
  408. package/src/orbit_determination/GoodingIOD.ts +1 -1
  409. package/src/orbit_determination/HerrickGibbsIOD.ts +1 -1
  410. package/src/orbit_determination/LambertIOD.ts +1 -1
  411. package/src/orbit_determination/ModifiedGoodingIOD.ts +3 -3
  412. package/src/propagator/DormandPrince54Propagator.ts +9 -9
  413. package/src/propagator/KeplerPropagator.ts +30 -30
  414. package/src/propagator/Propagator.ts +1 -1
  415. package/src/propagator/RkCheckpoint.ts +1 -1
  416. package/src/propagator/RkResult.ts +1 -1
  417. package/src/propagator/RungeKutta4Propagator.ts +2 -2
  418. package/src/propagator/RungeKutta89Propagator.ts +5 -5
  419. package/src/propagator/RungeKuttaAdaptive.ts +3 -3
  420. package/src/propagator/Sgp4Propagator.ts +13 -13
  421. package/src/sgp4/index.ts +18 -18
  422. package/src/sgp4/sgp4.LICENSE.md +2 -2
  423. package/src/sgp4/sgp4.ts +20 -23
  424. package/src/smoothing/ExponentialSmoothing.ts +1 -1
  425. package/src/time/Epoch.ts +18 -18
  426. package/src/time/EpochGPS.ts +20 -20
  427. package/src/time/EpochTAI.ts +18 -18
  428. package/src/time/EpochTDB.ts +18 -18
  429. package/src/time/EpochTT.ts +18 -18
  430. package/src/time/EpochUTC.ts +20 -20
  431. package/src/time/EpochWindow.ts +18 -18
  432. package/src/time/TimeStamped.ts +18 -22
  433. package/src/time/index.ts +0 -23
  434. package/src/transforms/TransformCache.ts +18 -18
  435. package/src/transforms/conversions.ts +18 -18
  436. package/src/types/types.ts +2 -2
  437. package/src/utils/create-covariance-from-tle.ts +75 -0
  438. package/src/utils/functions.ts +3 -3
  439. package/src/utils/index.ts +1 -0
  440. package/src/utils/jacobian.ts +6 -2
@@ -1,24 +1,24 @@
1
1
  /**
2
- * @author Theodore Kruczek.
3
- * @license MIT
4
- * @copyright (c) 2022-2025 Theodore Kruczek Permission is
5
- * hereby granted, free of charge, to any person obtaining a copy of this
6
- * software and associated documentation files (the "Software"), to deal in the
7
- * Software without restriction, including without limitation the rights to use,
8
- * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
- * the Software, and to permit persons to whom the Software is furnished to do
10
- * so, subject to the following conditions:
2
+ * @author @thkruz Theodore Kruczek
3
+ * @description Orbital Object ToolKit (ootk) is a collection of tools for working
4
+ * with satellites and other orbital objects.
5
+ * @license AGPL-3.0-or-later
6
+ * @copyright (c) 2025 Kruczek Labs LLC
11
7
  *
12
- * The above copyright notice and this permission notice shall be included in
13
- * all copies or substantial portions of the Software.
8
+ * Many of the classes are based off of the work of @david-rc-dayton and his
9
+ * Pious Squid library (https://github.com/david-rc-dayton/pious_squid) which
10
+ * is licensed under the MIT license.
14
11
  *
15
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- * SOFTWARE.
12
+ * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
13
+ * terms of the GNU Affero General Public License as published by the Free Software
14
+ * Foundation, either version 3 of the License, or (at your option) any later version.
15
+ *
16
+ * Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
17
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18
+ * See the GNU Affero General Public License for more details.
19
+ *
20
+ * You should have received a copy of the GNU Affero General Public License along with
21
+ * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
22
22
  */
23
23
 
24
24
  import { Kilometers, KilometersPerSecond } from '../main.js';
@@ -1,28 +1,29 @@
1
1
  /**
2
- * @author Theodore Kruczek.
3
- * @license MIT
4
- * @copyright (c) 2022-2025 Theodore Kruczek Permission is
5
- * hereby granted, free of charge, to any person obtaining a copy of this
6
- * software and associated documentation files (the "Software"), to deal in the
7
- * Software without restriction, including without limitation the rights to use,
8
- * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
- * the Software, and to permit persons to whom the Software is furnished to do
10
- * so, subject to the following conditions:
2
+ * @author @thkruz Theodore Kruczek
3
+ * @description Orbital Object ToolKit (ootk) is a collection of tools for working
4
+ * with satellites and other orbital objects.
5
+ * @license AGPL-3.0-or-later
6
+ * @copyright (c) 2025 Kruczek Labs LLC
11
7
  *
12
- * The above copyright notice and this permission notice shall be included in
13
- * all copies or substantial portions of the Software.
8
+ * Many of the classes are based off of the work of @david-rc-dayton and his
9
+ * Pious Squid library (https://github.com/david-rc-dayton/pious_squid) which
10
+ * is licensed under the MIT license.
14
11
  *
15
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- * SOFTWARE.
12
+ * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
13
+ * terms of the GNU Affero General Public License as published by the Free Software
14
+ * Foundation, either version 3 of the License, or (at your option) any later version.
15
+ *
16
+ * Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
17
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18
+ * See the GNU Affero General Public License for more details.
19
+ *
20
+ * You should have received a copy of the GNU Affero General Public License along with
21
+ * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
22
22
  */
23
23
 
24
- import { ClassicalElements, TAU, Earth, Kilometers, KilometersPerSecond, Minutes, EpochUTC, Vector3D }
25
- from '../main.js';
24
+ import {
25
+ ClassicalElements, TAU, Earth, Kilometers, KilometersPerSecond, Minutes, EpochUTC, Vector3D,
26
+ } from '../main.js';
26
27
 
27
28
  /**
28
29
  * A state vector is a set of coordinates used to specify the position and
@@ -1,24 +1,24 @@
1
1
  /**
2
- * @author Theodore Kruczek.
3
- * @license MIT
4
- * @copyright (c) 2022-2025 Theodore Kruczek Permission is
5
- * hereby granted, free of charge, to any person obtaining a copy of this
6
- * software and associated documentation files (the "Software"), to deal in the
7
- * Software without restriction, including without limitation the rights to use,
8
- * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
- * the Software, and to permit persons to whom the Software is furnished to do
10
- * so, subject to the following conditions:
2
+ * @author @thkruz Theodore Kruczek
3
+ * @description Orbital Object ToolKit (ootk) is a collection of tools for working
4
+ * with satellites and other orbital objects.
5
+ * @license AGPL-3.0-or-later
6
+ * @copyright (c) 2025 Kruczek Labs LLC
11
7
  *
12
- * The above copyright notice and this permission notice shall be included in
13
- * all copies or substantial portions of the Software.
8
+ * Many of the classes are based off of the work of @david-rc-dayton and his
9
+ * Pious Squid library (https://github.com/david-rc-dayton/pious_squid) which
10
+ * is licensed under the MIT license.
14
11
  *
15
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- * SOFTWARE.
12
+ * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
13
+ * terms of the GNU Affero General Public License as published by the Free Software
14
+ * Foundation, either version 3 of the License, or (at your option) any later version.
15
+ *
16
+ * Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
17
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18
+ * See the GNU Affero General Public License for more details.
19
+ *
20
+ * You should have received a copy of the GNU Affero General Public License along with
21
+ * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
22
22
  */
23
23
 
24
24
  import { Kilometers, KilometersPerSecond, Radians, Vector3D } from '../main.js';
@@ -1,30 +1,30 @@
1
1
  /* eslint-disable max-lines */
2
2
  /**
3
- * @author Theodore Kruczek.
4
- * @license MIT
5
- * @copyright (c) 2022-2025 Theodore Kruczek Permission is
6
- * hereby granted, free of charge, to any person obtaining a copy of this
7
- * software and associated documentation files (the "Software"), to deal in the
8
- * Software without restriction, including without limitation the rights to use,
9
- * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
10
- * the Software, and to permit persons to whom the Software is furnished to do
11
- * so, subject to the following conditions:
3
+ * @author @thkruz Theodore Kruczek
4
+ * @description Orbital Object ToolKit (ootk) is a collection of tools for working
5
+ * with satellites and other orbital objects.
6
+ * @license AGPL-3.0-or-later
7
+ * @copyright (c) 2025 Kruczek Labs LLC
12
8
  *
13
- * The above copyright notice and this permission notice shall be included in
14
- * all copies or substantial portions of the Software.
9
+ * Many of the classes are based off of the work of @david-rc-dayton and his
10
+ * Pious Squid library (https://github.com/david-rc-dayton/pious_squid) which
11
+ * is licensed under the MIT license.
15
12
  *
16
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
- * SOFTWARE.
13
+ * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
14
+ * terms of the GNU Affero General Public License as published by the Free Software
15
+ * Foundation, either version 3 of the License, or (at your option) any later version.
16
+ *
17
+ * Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
18
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
19
+ * See the GNU Affero General Public License for more details.
20
+ *
21
+ * You should have received a copy of the GNU Affero General Public License along with
22
+ * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
23
23
  */
24
24
 
25
25
  import { ClassicalElements, FormatTle, TEME } from './index.js';
26
26
  import { Sgp4OpsMode } from '../enums/Sgp4OpsMode.js';
27
- import { Satellite, Sgp4, Vector3D } from '../main.js';
27
+ import { Sgp4, Vector3D } from '../main.js';
28
28
  import { Sgp4GravConstants } from '../sgp4/sgp4.js';
29
29
  import { EpochUTC } from '../time/EpochUTC.js';
30
30
  import {
@@ -51,8 +51,8 @@ import { TleFormatData } from './tle-format-data.js';
51
51
  * Tle is a static class with a collection of methods for working with TLEs.
52
52
  */
53
53
  export class Tle {
54
- line1: string;
55
- line2: string;
54
+ line1: TleLine1;
55
+ line2: TleLine2;
56
56
  epoch: EpochUTC;
57
57
  satnum: number;
58
58
  private readonly satrec_: SatelliteRecord;
@@ -136,8 +136,8 @@ export class Tle {
136
136
  opsMode: Sgp4OpsMode = Sgp4OpsMode.AFSPC,
137
137
  gravConst: Sgp4GravConstants = Sgp4GravConstants.wgs72,
138
138
  ) {
139
- this.line1 = line1;
140
- this.line2 = line2;
139
+ this.line1 = line1 as TleLine1;
140
+ this.line2 = line2 as TleLine2;
141
141
  this.epoch = Tle.parseEpoch_(line1.substring(18, 32));
142
142
  this.satnum = parseInt(Tle.convertA5to6Digit(line1.substring(2, 7)));
143
143
  this.satrec_ = Sgp4.createSatrec(line1, line2, gravConst, opsMode);
@@ -228,7 +228,7 @@ export class Tle {
228
228
  }
229
229
 
230
230
  static calcElsetAge(
231
- sat: Satellite,
231
+ tle1: TleLine1,
232
232
  nowInput?: Date,
233
233
  outputUnits: 'days' | 'hours' | 'minutes' | 'seconds' = 'days',
234
234
  ): number {
@@ -236,8 +236,8 @@ export class Tle {
236
236
  const currentYearFull = nowInput.getUTCFullYear();
237
237
  const currentYearShort = currentYearFull % 100;
238
238
 
239
- const epochYearShort = parseInt(sat.tle1.substring(18, 20), 10);
240
- const epochDayOfYear = parseFloat(sat.tle1.substring(20, 32));
239
+ const epochYearShort = parseInt(tle1.substring(18, 20), 10);
240
+ const epochDayOfYear = parseFloat(tle1.substring(20, 32));
241
241
 
242
242
  let epochYearFull: number;
243
243
 
@@ -4,7 +4,6 @@ export * from './FormatTle.js';
4
4
  export * from './Geodetic.js';
5
5
  export * from './ITRF.js';
6
6
  export * from './J2000.js';
7
- // export * from '../enums/OrbitRegime.js';
8
7
  export * from './RelativeState.js';
9
8
  export * from './RIC.js';
10
9
  export * from './StateVector.js';
@@ -1,24 +1,24 @@
1
1
  /**
2
- * @author Theodore Kruczek.
3
- * @license MIT
4
- * @copyright (c) 2022-2025 Theodore Kruczek Permission is
5
- * hereby granted, free of charge, to any person obtaining a copy of this
6
- * software and associated documentation files (the "Software"), to deal in the
7
- * Software without restriction, including without limitation the rights to use,
8
- * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
- * the Software, and to permit persons to whom the Software is furnished to do
10
- * so, subject to the following conditions:
2
+ * @author @thkruz Theodore Kruczek
3
+ * @description Orbital Object ToolKit (ootk) is a collection of tools for working
4
+ * with satellites and other orbital objects.
5
+ * @license AGPL-3.0-or-later
6
+ * @copyright (c) 2025 Kruczek Labs LLC
11
7
  *
12
- * The above copyright notice and this permission notice shall be included in
13
- * all copies or substantial portions of the Software.
8
+ * Many of the classes are based off of the work of @david-rc-dayton and his
9
+ * Pious Squid library (https://github.com/david-rc-dayton/pious_squid) which
10
+ * is licensed under the MIT license.
14
11
  *
15
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- * SOFTWARE.
12
+ * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
13
+ * terms of the GNU Affero General Public License as published by the Free Software
14
+ * Foundation, either version 3 of the License, or (at your option) any later version.
15
+ *
16
+ * Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
17
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18
+ * See the GNU Affero General Public License for more details.
19
+ *
20
+ * You should have received a copy of the GNU Affero General Public License along with
21
+ * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
22
22
  */
23
23
 
24
24
  /**
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @author @thkruz Theodore Kruczek
3
3
  * @license AGPL-3.0-or-later
4
- * @copyright (c) 2020-2024 Theodore Kruczek
4
+ * @copyright (c) 2025 Kruczek Labs LLC
5
5
  *
6
6
  * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
7
7
  * terms of the GNU Affero General Public License as published by the Free Software
@@ -23,8 +23,10 @@ import {
23
23
  Kilometers,
24
24
  KilometersPerSecond,
25
25
  Matrix,
26
+ OrbitRegime,
26
27
  RelativeState,
27
28
  RIC,
29
+ Tle, Vec3Flat,
28
30
  Vector,
29
31
  Vector3D,
30
32
  } from '../main.js';
@@ -35,9 +37,9 @@ import { CovarianceFrame, StateCovariance } from './StateCovariance.js';
35
37
 
36
38
  // / Sigma point covariance sample.
37
39
  export class CovarianceSample {
38
- private _origin: RungeKutta89Propagator;
39
- private _samples: RungeKutta89Propagator[] = [];
40
- private matrix_ = Matrix.zero(6, 12);
40
+ private readonly origin_: RungeKutta89Propagator;
41
+ private readonly samples_: RungeKutta89Propagator[] = [];
42
+ private readonly matrix_ = Matrix.zero(6, 12);
41
43
 
42
44
  /**
43
45
  * Create a new [CovarianceSample] object from an inertial state, covariance
@@ -46,19 +48,45 @@ export class CovarianceSample {
46
48
  * Two-body physics will be used if a force model is not provided.
47
49
  * @param state The origin state.
48
50
  * @param covariance The covariance.
51
+ * @param tle The TLE object.
49
52
  * @param originForceModel The force model for the origin state.
50
53
  * @param sampleForceModel The force model for the samples.
51
54
  */
52
- constructor(state: J2000, covariance: StateCovariance, originForceModel?: ForceModel, sampleForceModel?: ForceModel) {
55
+ constructor(
56
+ state: J2000, covariance: StateCovariance, tle?: Tle, originForceModel?: ForceModel, sampleForceModel?: ForceModel,
57
+ ) {
53
58
  originForceModel ??= new ForceModel().setGravity();
54
59
  sampleForceModel ??= new ForceModel().setGravity();
55
- this._origin = new RungeKutta89Propagator(state, originForceModel);
60
+
61
+ // Scale covariance using TLE quality and regime aging factor if TLE info is provided
62
+ let scale = [1, 1, 1];
63
+
64
+ if (tle) {
65
+ const tleAgeDays = Tle.calcElsetAge(tle.line1, new Date(), 'days');
66
+
67
+ const quality = this.evaluateTleQuality(tle);
68
+ const aging = this.getRegimeAgingFactor(tle, tleAgeDays);
69
+
70
+ scale = [
71
+ quality[0] * aging[0],
72
+ quality[1] * aging[1],
73
+ quality[2] * aging[2],
74
+ ];
75
+ }
76
+
77
+ this.origin_ = new RungeKutta89Propagator(state, originForceModel);
56
78
  const s = covariance.matrix.cholesky().elements;
57
79
  const sqrt6 = Math.sqrt(6.0);
58
80
 
59
81
  for (let i = 0; i < 6; i++) {
60
82
  for (let j = 0; j < 6; j++) {
61
- s[i][j] *= sqrt6;
83
+ /*
84
+ * Apply scale[0] to R, scale[1] to I, scale[2] to C (x, y, z)
85
+ * Position: i = 0,1,2; Velocity: i = 3,4,5
86
+ */
87
+ const scaleIdx = i % 3;
88
+
89
+ s[i][j] *= sqrt6 * scale[scaleIdx];
62
90
  }
63
91
  }
64
92
 
@@ -92,23 +120,23 @@ export class CovarianceSample {
92
120
  if (covariance.frame === CovarianceFrame.ECI) {
93
121
  const sample = new J2000(state.epoch, state.position.add(sampleR), state.velocity.add(sampleV));
94
122
 
95
- this._samples.push(new RungeKutta89Propagator(sample, sampleForceModel));
123
+ this.samples_.push(new RungeKutta89Propagator(sample, sampleForceModel));
96
124
  } else if (covariance.frame === CovarianceFrame.RIC) {
97
125
  const sample = new RIC(sampleR, sampleV).toJ2000(state);
98
126
 
99
- this._samples.push(new RungeKutta89Propagator(sample, sampleForceModel));
127
+ this.samples_.push(new RungeKutta89Propagator(sample, sampleForceModel));
100
128
  }
101
129
  }
102
130
  }
103
131
 
104
132
  // / Current covariance sample epoch.
105
133
  get epoch(): Epoch {
106
- return this._origin.state.epoch;
134
+ return this.origin_.state.epoch;
107
135
  }
108
136
 
109
137
  // / Current covariance sample origin state.
110
138
  get state(): J2000 {
111
- return this._origin.state;
139
+ return this.origin_.state;
112
140
  }
113
141
 
114
142
  // / Rebuild covariance from sigma points.
@@ -142,16 +170,16 @@ export class CovarianceSample {
142
170
 
143
171
  // / Propagate covariance to a new epoch.
144
172
  propagate(epoch: EpochUTC): void {
145
- this._origin.propagate(epoch);
146
- for (const sample of this._samples) {
173
+ this.origin_.propagate(epoch);
174
+ for (const sample of this.samples_) {
147
175
  sample.propagate(epoch);
148
176
  }
149
177
  }
150
178
 
151
179
  // / Apply a maneuver to this covariance.
152
180
  maneuver(maneuver: Thrust): void {
153
- this._origin.maneuver(maneuver);
154
- for (const sample of this._samples) {
181
+ this.origin_.maneuver(maneuver);
182
+ for (const sample of this.samples_) {
155
183
  sample.maneuver(maneuver);
156
184
  }
157
185
  }
@@ -159,7 +187,7 @@ export class CovarianceSample {
159
187
  // / Desample covariance in J2000 frame.
160
188
  desampleJ2000(): StateCovariance {
161
189
  for (let i = 0; i < 12; i++) {
162
- const state = this._samples[i].state;
190
+ const state = this.samples_[i].state;
163
191
 
164
192
  this.matrix_.elements[0][i] = state.position.x;
165
193
  this.matrix_.elements[1][i] = state.position.y;
@@ -175,10 +203,10 @@ export class CovarianceSample {
175
203
 
176
204
  // / Desample covariance in RIC frame.
177
205
  desampleRIC(): StateCovariance {
178
- const rot = RelativeState.createMatrix(this._origin.state.position, this._origin.state.velocity);
206
+ const rot = RelativeState.createMatrix(this.origin_.state.position, this.origin_.state.velocity);
179
207
 
180
208
  for (let i = 0; i < 12; i++) {
181
- const state = RIC.fromJ2000Matrix(this._samples[i].state, this._origin.state, rot);
209
+ const state = RIC.fromJ2000Matrix(this.samples_[i].state, this.origin_.state, rot);
182
210
 
183
211
  this.matrix_.elements[0][i] = state.position.x;
184
212
  this.matrix_.elements[1][i] = state.position.y;
@@ -191,4 +219,74 @@ export class CovarianceSample {
191
219
 
192
220
  return new StateCovariance(matrix, CovarianceFrame.RIC);
193
221
  }
222
+
223
+ evaluateTleQuality(tle: Tle): Vec3Flat {
224
+ let c = 1,
225
+ i = 1,
226
+ r = 1; // start with nominal 120 / 1000 / 100 m
227
+
228
+ /* ---- Mean–motion first derivative (rev/day²) ---- */
229
+ const mm1 = Math.abs(Tle.meanMoDev1(tle.line1));
230
+
231
+ if (mm1 > 1e-3) { // clear manoeuvre or very low-drag orbit
232
+ i *= 3.0;
233
+ r *= 2.0;
234
+ c *= 1.2;
235
+ } else if (mm1 > 1e-5) { // high drag but likely passive
236
+ i *= 1.6;
237
+ r *= 1.3;
238
+ }
239
+
240
+ /* ---- BSTAR drag term ---- */
241
+ const bstar = Math.abs(Tle.bstar(tle.line1));
242
+
243
+ if (bstar > 5e-4) { // <≈400 km LEO
244
+ i *= 1.5;
245
+ r *= 1.5;
246
+ c *= 1.1;
247
+ } else if (bstar > 1e-4) { // 400–600 km
248
+ i *= 1.2;
249
+ r *= 1.2;
250
+ }
251
+
252
+ /* ---- Eccentricity ---- */
253
+ const e = tle.eccentricity;
254
+
255
+ if (e > 0.05) { // HEO, GTO, cubesat transfer, etc.
256
+ r *= 1 + 6 * e;
257
+ i *= 1 + 4 * e;
258
+ c *= 1 + 1 * e;
259
+ } else if (e > 0.02) { // mildly elliptical LEO/MEO
260
+ r *= 1 + 3 * e;
261
+ i *= 1 + 2 * e;
262
+ }
263
+
264
+ return [r, i, c];
265
+ }
266
+
267
+ getRegimeAgingFactor(tle: Tle, ageDays: number): Vec3Flat {
268
+ const regime = tle.state.toClassicalElements().getOrbitRegime();
269
+ const t = Math.max(ageDays, 0) ** 1.5; // non-linear growth
270
+
271
+ switch (regime) {
272
+
273
+ case OrbitRegime.LEO:
274
+ // Target ~×2 (R), ×3 (I), ×2.2 (C) after 1 day
275
+ return [1 + 1.0 * t, 1 + 2.0 * t, 1 + 1.2 * t];
276
+
277
+ case OrbitRegime.MEO:
278
+ // GNSS shells – slower growth
279
+ return [1 + 0.4 * t, 1 + 0.9 * t, 1 + 0.6 * t];
280
+
281
+ case OrbitRegime.GEO:
282
+ return [1 + 0.2 * t, 1 + 0.5 * t, 1 + 0.3 * t];
283
+
284
+ case OrbitRegime.HEO:
285
+ // Highly elliptical transfer or Molniya
286
+ return [1 + 1.2 * t, 1 + 2.4 * t, 1 + 1.4 * t];
287
+
288
+ default:
289
+ return [1 + 0.6 * t, 1 + 1.2 * t, 1 + 0.8 * t];
290
+ }
291
+ }
194
292
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @author @thkruz Theodore Kruczek
3
3
  * @license AGPL-3.0-or-later
4
- * @copyright (c) 2020-2024 Theodore Kruczek
4
+ * @copyright (c) 2025 Kruczek Labs LLC
5
5
  *
6
6
  * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
7
7
  * terms of the GNU Affero General Public License as published by the Free Software
@@ -0,0 +1,2 @@
1
+ export * from './CovarianceSample.js';
2
+ export * from './StateCovariance.js';
@@ -1,24 +1,24 @@
1
1
  /**
2
- * @author Theodore Kruczek.
3
- * @license MIT
4
- * @copyright (c) 2022-2025 Theodore Kruczek Permission is
5
- * hereby granted, free of charge, to any person obtaining a copy of this
6
- * software and associated documentation files (the "Software"), to deal in the
7
- * Software without restriction, including without limitation the rights to use,
8
- * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
- * the Software, and to permit persons to whom the Software is furnished to do
10
- * so, subject to the following conditions:
2
+ * @author @thkruz Theodore Kruczek
3
+ * @description Orbital Object ToolKit (ootk) is a collection of tools for working
4
+ * with satellites and other orbital objects.
5
+ * @license AGPL-3.0-or-later
6
+ * @copyright (c) 2025 Kruczek Labs LLC
11
7
  *
12
- * The above copyright notice and this permission notice shall be included in
13
- * all copies or substantial portions of the Software.
8
+ * Many of the classes are based off of the work of @david-rc-dayton and his
9
+ * Pious Squid library (https://github.com/david-rc-dayton/pious_squid) which
10
+ * is licensed under the MIT license.
14
11
  *
15
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- * SOFTWARE.
12
+ * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
13
+ * terms of the GNU Affero General Public License as published by the Free Software
14
+ * Foundation, either version 3 of the License, or (at your option) any later version.
15
+ *
16
+ * Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
17
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18
+ * See the GNU Affero General Public License for more details.
19
+ *
20
+ * You should have received a copy of the GNU Affero General Public License along with
21
+ * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
22
22
  */
23
23
 
24
24
  import { egm96Data, Egm96Entry } from './values/Egm96Data.js';
@@ -1,24 +1,24 @@
1
1
  /**
2
- * @author Theodore Kruczek.
3
- * @license MIT
4
- * @copyright (c) 2022-2025 Theodore Kruczek Permission is
5
- * hereby granted, free of charge, to any person obtaining a copy of this
6
- * software and associated documentation files (the "Software"), to deal in the
7
- * Software without restriction, including without limitation the rights to use,
8
- * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
- * the Software, and to permit persons to whom the Software is furnished to do
10
- * so, subject to the following conditions:
2
+ * @author @thkruz Theodore Kruczek
3
+ * @description Orbital Object ToolKit (ootk) is a collection of tools for working
4
+ * with satellites and other orbital objects.
5
+ * @license AGPL-3.0-or-later
6
+ * @copyright (c) 2025 Kruczek Labs LLC
11
7
  *
12
- * The above copyright notice and this permission notice shall be included in
13
- * all copies or substantial portions of the Software.
8
+ * Many of the classes are based off of the work of @david-rc-dayton and his
9
+ * Pious Squid library (https://github.com/david-rc-dayton/pious_squid) which
10
+ * is licensed under the MIT license.
14
11
  *
15
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- * SOFTWARE.
12
+ * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
13
+ * terms of the GNU Affero General Public License as published by the Free Software
14
+ * Foundation, either version 3 of the License, or (at your option) any later version.
15
+ *
16
+ * Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
17
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18
+ * See the GNU Affero General Public License for more details.
19
+ *
20
+ * You should have received a copy of the GNU Affero General Public License along with
21
+ * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
22
22
  */
23
23
 
24
24
  import { factorial } from '../../utils/functions.js';
@@ -62,7 +62,7 @@ export class Egm96Data {
62
62
 
63
63
  // / Return de-normalized EGM-96 coefficients for a given [l] and [m] index.
64
64
  getCoeffs(l: number, m: number): Egm96Entry {
65
- return this.coeffs_[Egm96Data.index_(l, m)] as Egm96Entry;
65
+ return this.coeffs_[Egm96Data.index_(l, m)];
66
66
  }
67
67
 
68
68
  // / Return the EGM-96 index for a given [l] and [m] lookup.