ootk 4.0.9 → 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 (583) hide show
  1. package/README.md +0 -15
  2. package/dist/body/Celestial.d.ts +96 -0
  3. package/dist/body/Celestial.js +124 -0
  4. package/dist/body/Celestial.js.map +1 -0
  5. package/dist/body/Earth.d.ts +68 -0
  6. package/dist/body/Earth.js +198 -0
  7. package/dist/body/Earth.js.map +1 -0
  8. package/dist/body/Moon.d.ts +137 -0
  9. package/dist/body/Moon.js +464 -0
  10. package/dist/body/Moon.js.map +1 -0
  11. package/dist/body/NutationAngles.d.ts +38 -0
  12. package/dist/body/NutationAngles.js +24 -0
  13. package/dist/body/NutationAngles.js.map +1 -0
  14. package/dist/body/PrecessionAngles.d.ts +29 -0
  15. package/dist/body/PrecessionAngles.js +24 -0
  16. package/dist/body/PrecessionAngles.js.map +1 -0
  17. package/dist/body/Sun.d.ts +301 -0
  18. package/dist/body/Sun.js +544 -0
  19. package/dist/body/Sun.js.map +1 -0
  20. package/dist/body/index.d.ts +26 -0
  21. package/dist/body/index.js +27 -0
  22. package/dist/body/index.js.map +1 -0
  23. package/dist/coordinate/ClassicalElements.d.ts +132 -0
  24. package/dist/coordinate/ClassicalElements.js +279 -0
  25. package/dist/coordinate/ClassicalElements.js.map +1 -0
  26. package/dist/coordinate/EquinoctialElements.d.ts +114 -0
  27. package/dist/coordinate/EquinoctialElements.js +172 -0
  28. package/dist/coordinate/EquinoctialElements.js.map +1 -0
  29. package/dist/coordinate/FormatTle.d.ts +95 -0
  30. package/dist/coordinate/FormatTle.js +184 -0
  31. package/dist/coordinate/FormatTle.js.map +1 -0
  32. package/dist/coordinate/Geodetic.d.ts +110 -0
  33. package/dist/coordinate/Geodetic.js +163 -0
  34. package/dist/coordinate/Geodetic.js.map +1 -0
  35. package/dist/coordinate/Hill.d.ts +2 -2
  36. package/dist/coordinate/Hill.js +2 -2
  37. package/dist/coordinate/Hill.js.map +1 -1
  38. package/dist/coordinate/ITRF.d.ts +75 -0
  39. package/dist/coordinate/ITRF.js +134 -0
  40. package/dist/coordinate/ITRF.js.map +1 -0
  41. package/dist/coordinate/J2000.d.ts +65 -0
  42. package/dist/coordinate/J2000.js +120 -0
  43. package/dist/coordinate/J2000.js.map +1 -0
  44. package/dist/coordinate/RIC.d.ts +64 -0
  45. package/dist/coordinate/RIC.js +79 -0
  46. package/dist/coordinate/RIC.js.map +1 -0
  47. package/dist/coordinate/RelativeState.d.ts +70 -0
  48. package/dist/coordinate/RelativeState.js +79 -0
  49. package/dist/coordinate/RelativeState.js.map +1 -0
  50. package/dist/coordinate/StateVector.d.ts +76 -0
  51. package/dist/coordinate/StateVector.js +97 -0
  52. package/dist/coordinate/StateVector.js.map +1 -0
  53. package/dist/coordinate/TEME.d.ts +57 -0
  54. package/dist/coordinate/TEME.js +89 -0
  55. package/dist/coordinate/TEME.js.map +1 -0
  56. package/dist/coordinate/Tle.d.ts +429 -0
  57. package/dist/coordinate/Tle.js +865 -0
  58. package/dist/coordinate/Tle.js.map +1 -0
  59. package/dist/coordinate/index.d.ts +11 -0
  60. package/dist/coordinate/index.js +11 -0
  61. package/dist/coordinate/index.js.map +1 -1
  62. package/dist/coordinate/tle-format-data.d.ts +41 -0
  63. package/dist/coordinate/tle-format-data.js +46 -0
  64. package/dist/coordinate/tle-format-data.js.map +1 -0
  65. package/dist/covariance/CovarianceSample.d.ts +9 -6
  66. package/dist/covariance/CovarianceSample.js +92 -18
  67. package/dist/covariance/CovarianceSample.js.map +1 -1
  68. package/dist/covariance/StateCovariance.d.ts +2 -2
  69. package/dist/covariance/StateCovariance.js +2 -2
  70. package/dist/covariance/StateCovariance.js.map +1 -1
  71. package/dist/covariance/index.d.ts +2 -0
  72. package/dist/covariance/index.js +3 -0
  73. package/dist/covariance/index.js.map +1 -0
  74. package/dist/data/DataHandler.d.ts +66 -0
  75. package/dist/data/DataHandler.js +80 -0
  76. package/dist/data/DataHandler.js.map +1 -0
  77. package/dist/data/values/Egm96Data.d.ts +37 -0
  78. package/dist/data/values/Egm96Data.js +63 -0
  79. package/dist/data/values/Egm96Data.js.map +1 -0
  80. package/dist/data/values/HpAtmosphereData.d.ts +33 -0
  81. package/dist/data/values/HpAtmosphereData.js +58 -0
  82. package/dist/data/values/HpAtmosphereData.js.map +1 -0
  83. package/dist/data/values/HpAtmosphereResult.d.ts +29 -0
  84. package/dist/data/values/HpAtmosphereResult.js +38 -0
  85. package/dist/data/values/HpAtmosphereResult.js.map +1 -0
  86. package/dist/data/values/Iau1980Data.d.ts +36 -0
  87. package/dist/data/values/Iau1980Data.js +52 -0
  88. package/dist/data/values/Iau1980Data.js.map +1 -0
  89. package/dist/data/values/LeapSecond.d.ts +27 -0
  90. package/dist/data/values/LeapSecond.js +35 -0
  91. package/dist/data/values/LeapSecond.js.map +1 -0
  92. package/dist/data/values/LeapSecondData.d.ts +41 -0
  93. package/dist/data/values/LeapSecondData.js +103 -0
  94. package/dist/data/values/LeapSecondData.js.map +1 -0
  95. package/dist/data/values/egm96.d.ts +24 -0
  96. package/dist/data/values/egm96.js +726 -0
  97. package/dist/data/values/egm96.js.map +1 -0
  98. package/dist/data/values/hpAtmosphere.d.ts +24 -0
  99. package/dist/data/values/hpAtmosphere.js +76 -0
  100. package/dist/data/values/hpAtmosphere.js.map +1 -0
  101. package/dist/data/values/iau1980.d.ts +24 -0
  102. package/dist/data/values/iau1980.js +30 -0
  103. package/dist/data/values/iau1980.js.map +1 -0
  104. package/dist/enums/AngularDiameterMethod.d.ts +27 -0
  105. package/dist/enums/AngularDiameterMethod.js +29 -0
  106. package/dist/enums/AngularDiameterMethod.js.map +1 -0
  107. package/dist/enums/AngularDistanceMethod.d.ts +27 -0
  108. package/dist/enums/AngularDistanceMethod.js +29 -0
  109. package/dist/enums/AngularDistanceMethod.js.map +1 -0
  110. package/dist/enums/OrbitRegime.d.ts +30 -0
  111. package/dist/enums/OrbitRegime.js +32 -0
  112. package/dist/enums/OrbitRegime.js.map +1 -0
  113. package/dist/enums/PassType.d.ts +28 -0
  114. package/dist/enums/PassType.js +30 -0
  115. package/dist/enums/PassType.js.map +1 -0
  116. package/dist/enums/Sgp4OpsMode.d.ts +26 -0
  117. package/dist/enums/Sgp4OpsMode.js +28 -0
  118. package/dist/enums/Sgp4OpsMode.js.map +1 -0
  119. package/dist/enums/index.d.ts +5 -0
  120. package/dist/enums/index.js +5 -0
  121. package/dist/enums/index.js.map +1 -1
  122. package/dist/force/AtmosphericDrag.d.ts +2 -2
  123. package/dist/force/AtmosphericDrag.js +3 -6
  124. package/dist/force/AtmosphericDrag.js.map +1 -1
  125. package/dist/force/EarthGravity.d.ts +2 -2
  126. package/dist/force/EarthGravity.js +2 -2
  127. package/dist/force/EarthGravity.js.map +1 -1
  128. package/dist/force/Force.d.ts +2 -2
  129. package/dist/force/Force.js +1 -1
  130. package/dist/force/ForceModel.d.ts +2 -2
  131. package/dist/force/ForceModel.js +2 -2
  132. package/dist/force/ForceModel.js.map +1 -1
  133. package/dist/force/Gravity.d.ts +2 -2
  134. package/dist/force/Gravity.js +2 -2
  135. package/dist/force/Gravity.js.map +1 -1
  136. package/dist/force/SolarRadiationPressure.d.ts +2 -2
  137. package/dist/force/SolarRadiationPressure.js +2 -2
  138. package/dist/force/SolarRadiationPressure.js.map +1 -1
  139. package/dist/force/ThirdBodyGravity.d.ts +2 -2
  140. package/dist/force/ThirdBodyGravity.js +2 -2
  141. package/dist/force/ThirdBodyGravity.js.map +1 -1
  142. package/dist/force/Thrust.d.ts +2 -2
  143. package/dist/force/Thrust.js +2 -2
  144. package/dist/force/Thrust.js.map +1 -1
  145. package/dist/interfaces/BaseObjectParams.d.ts +31 -0
  146. package/dist/interfaces/BaseObjectParams.js +24 -0
  147. package/dist/interfaces/BaseObjectParams.js.map +1 -0
  148. package/dist/interfaces/ClassicalElementsParams.d.ts +33 -0
  149. package/dist/interfaces/ClassicalElementsParams.js +24 -0
  150. package/dist/interfaces/ClassicalElementsParams.js.map +1 -0
  151. package/dist/interfaces/EquinoctialElementsParams.d.ts +35 -0
  152. package/dist/interfaces/EquinoctialElementsParams.js +24 -0
  153. package/dist/interfaces/EquinoctialElementsParams.js.map +1 -0
  154. package/dist/interfaces/GroundPositionParams.d.ts +28 -0
  155. package/dist/interfaces/GroundPositionParams.js +24 -0
  156. package/dist/interfaces/GroundPositionParams.js.map +1 -0
  157. package/dist/interfaces/OmmFormat.d.ts +62 -0
  158. package/dist/interfaces/OmmFormat.js +2 -0
  159. package/dist/interfaces/OmmFormat.js.map +1 -0
  160. package/dist/interfaces/OptionsParams.d.ts +3 -0
  161. package/dist/interfaces/OptionsParams.js +2 -0
  162. package/dist/interfaces/OptionsParams.js.map +1 -0
  163. package/dist/interfaces/RfSensorParams.d.ts +1 -1
  164. package/dist/interfaces/SatelliteParams.d.ts +18 -0
  165. package/dist/interfaces/SatelliteParams.js +2 -0
  166. package/dist/interfaces/SatelliteParams.js.map +1 -0
  167. package/dist/interfaces/SensorParams.d.ts +38 -0
  168. package/dist/interfaces/SensorParams.js +2 -0
  169. package/dist/interfaces/SensorParams.js.map +1 -0
  170. package/dist/interfaces/StarObjectParams.d.ts +10 -0
  171. package/dist/interfaces/StarObjectParams.js +2 -0
  172. package/dist/interfaces/StarObjectParams.js.map +1 -0
  173. package/dist/interfaces/TimeVariables.d.ts +6 -0
  174. package/dist/interfaces/TimeVariables.js +2 -0
  175. package/dist/interfaces/TimeVariables.js.map +1 -0
  176. package/dist/interfaces/index.d.ts +8 -0
  177. package/dist/interpolator/ChebyshevCoefficients.d.ts +5 -5
  178. package/dist/interpolator/ChebyshevCoefficients.js +2 -2
  179. package/dist/interpolator/ChebyshevCoefficients.js.map +1 -1
  180. package/dist/interpolator/ChebyshevInterpolator.d.ts +3 -3
  181. package/dist/interpolator/ChebyshevInterpolator.js +9 -9
  182. package/dist/interpolator/ChebyshevInterpolator.js.map +1 -1
  183. package/dist/interpolator/CubicSpline.d.ts +2 -2
  184. package/dist/interpolator/CubicSpline.js +1 -1
  185. package/dist/interpolator/CubicSplineInterpolator.d.ts +4 -4
  186. package/dist/interpolator/CubicSplineInterpolator.js +10 -10
  187. package/dist/interpolator/CubicSplineInterpolator.js.map +1 -1
  188. package/dist/interpolator/FieldInterpolator.d.ts +1 -1
  189. package/dist/interpolator/FieldInterpolator.js +1 -1
  190. package/dist/interpolator/Interpolator.d.ts +2 -2
  191. package/dist/interpolator/Interpolator.js +2 -2
  192. package/dist/interpolator/Interpolator.js.map +1 -1
  193. package/dist/interpolator/LagrangeInterpolator.d.ts +7 -7
  194. package/dist/interpolator/LagrangeInterpolator.js +2 -2
  195. package/dist/interpolator/LagrangeInterpolator.js.map +1 -1
  196. package/dist/interpolator/StateInterpolator.d.ts +2 -2
  197. package/dist/interpolator/StateInterpolator.js +1 -1
  198. package/dist/interpolator/VerletBlendInterpolator.d.ts +2 -2
  199. package/dist/interpolator/VerletBlendInterpolator.js +2 -2
  200. package/dist/interpolator/VerletBlendInterpolator.js.map +1 -1
  201. package/dist/main.d.ts +15 -5
  202. package/dist/main.js +15 -5
  203. package/dist/main.js.map +1 -1
  204. package/dist/maneuver/TwoBurnOrbitTransfer.d.ts +2 -2
  205. package/dist/maneuver/TwoBurnOrbitTransfer.js +2 -2
  206. package/dist/maneuver/TwoBurnOrbitTransfer.js.map +1 -1
  207. package/dist/maneuver/Waypoint.d.ts +2 -2
  208. package/dist/maneuver/Waypoint.js +2 -2
  209. package/dist/maneuver/Waypoint.js.map +1 -1
  210. package/dist/objects/BaseObject.d.ts +74 -0
  211. package/dist/objects/BaseObject.js +151 -0
  212. package/dist/objects/BaseObject.js.map +1 -0
  213. package/dist/objects/DetailedSatellite.d.ts +3 -2
  214. package/dist/objects/DetailedSatellite.js +6 -4
  215. package/dist/objects/DetailedSatellite.js.map +1 -1
  216. package/dist/objects/DetailedSensor.d.ts +3 -2
  217. package/dist/objects/DetailedSensor.js +2 -2
  218. package/dist/objects/DetailedSensor.js.map +1 -1
  219. package/dist/objects/GroundObject.d.ts +85 -0
  220. package/dist/objects/GroundObject.js +143 -0
  221. package/dist/objects/GroundObject.js.map +1 -0
  222. package/dist/objects/LandObject.d.ts +3 -2
  223. package/dist/objects/LandObject.js +2 -2
  224. package/dist/objects/LandObject.js.map +1 -1
  225. package/dist/objects/Marker.d.ts +2 -2
  226. package/dist/objects/Marker.js +2 -2
  227. package/dist/objects/Marker.js.map +1 -1
  228. package/dist/objects/RfSensor.d.ts +1 -2
  229. package/dist/objects/RfSensor.js +1 -2
  230. package/dist/objects/RfSensor.js.map +1 -1
  231. package/dist/objects/Satellite.d.ts +226 -0
  232. package/dist/objects/Satellite.js +443 -0
  233. package/dist/objects/Satellite.js.map +1 -0
  234. package/dist/objects/Sensor.d.ts +99 -0
  235. package/dist/objects/Sensor.js +238 -0
  236. package/dist/objects/Sensor.js.map +1 -0
  237. package/dist/objects/Star.d.ts +36 -0
  238. package/dist/objects/Star.js +59 -0
  239. package/dist/objects/Star.js.map +1 -0
  240. package/dist/objects/index.d.ts +5 -0
  241. package/dist/objects/index.js +5 -0
  242. package/dist/objects/index.js.map +1 -1
  243. package/dist/observation/Observation.d.ts +2 -2
  244. package/dist/observation/Observation.js +1 -1
  245. package/dist/observation/ObservationOptical.d.ts +6 -6
  246. package/dist/observation/ObservationOptical.js +9 -9
  247. package/dist/observation/ObservationOptical.js.map +1 -1
  248. package/dist/observation/ObservationRadar.d.ts +6 -6
  249. package/dist/observation/ObservationRadar.js +9 -9
  250. package/dist/observation/ObservationRadar.js.map +1 -1
  251. package/dist/observation/ObservationUtils.d.ts +4 -2
  252. package/dist/observation/ObservationUtils.js +16 -2
  253. package/dist/observation/ObservationUtils.js.map +1 -1
  254. package/dist/observation/PropagatorPairs.d.ts +4 -4
  255. package/dist/observation/PropagatorPairs.js +7 -7
  256. package/dist/observation/PropagatorPairs.js.map +1 -1
  257. package/dist/observation/RAE.d.ts +111 -0
  258. package/dist/observation/RAE.js +214 -0
  259. package/dist/observation/RAE.js.map +1 -0
  260. package/dist/observation/RadecGeocentric.d.ts +111 -0
  261. package/dist/observation/RadecGeocentric.js +169 -0
  262. package/dist/observation/RadecGeocentric.js.map +1 -0
  263. package/dist/observation/RadecTopocentric.d.ts +123 -0
  264. package/dist/observation/RadecTopocentric.js +196 -0
  265. package/dist/observation/RadecTopocentric.js.map +1 -0
  266. package/dist/observation/index.d.ts +26 -0
  267. package/dist/observation/index.js +27 -0
  268. package/dist/observation/index.js.map +1 -0
  269. package/dist/operations/BoxMuller.d.ts +2 -2
  270. package/dist/operations/BoxMuller.js +2 -2
  271. package/dist/operations/BoxMuller.js.map +1 -1
  272. package/dist/operations/EulerAngles.d.ts +2 -2
  273. package/dist/operations/EulerAngles.js +2 -2
  274. package/dist/operations/EulerAngles.js.map +1 -1
  275. package/dist/operations/Matrix.d.ts +170 -0
  276. package/dist/operations/Matrix.js +405 -0
  277. package/dist/operations/Matrix.js.map +1 -0
  278. package/dist/operations/Quaternion.d.ts +7 -7
  279. package/dist/operations/Quaternion.js +2 -2
  280. package/dist/operations/Quaternion.js.map +1 -1
  281. package/dist/operations/Random.d.ts +40 -0
  282. package/dist/operations/Random.js +50 -0
  283. package/dist/operations/Random.js.map +1 -0
  284. package/dist/operations/RandomGaussianSource.d.ts +3 -3
  285. package/dist/operations/RandomGaussianSource.js +5 -5
  286. package/dist/operations/RandomGaussianSource.js.map +1 -1
  287. package/dist/operations/Vector.d.ts +262 -0
  288. package/dist/operations/Vector.js +415 -0
  289. package/dist/operations/Vector.js.map +1 -0
  290. package/dist/operations/Vector3D.d.ts +86 -0
  291. package/dist/operations/Vector3D.js +241 -0
  292. package/dist/operations/Vector3D.js.map +1 -0
  293. package/dist/operations/operations.d.ts +26 -0
  294. package/dist/operations/operations.js +27 -0
  295. package/dist/operations/operations.js.map +1 -0
  296. package/dist/optimize/ChebyshevCompressor.d.ts +3 -3
  297. package/dist/optimize/ChebyshevCompressor.js +8 -8
  298. package/dist/optimize/ChebyshevCompressor.js.map +1 -1
  299. package/dist/optimize/DownhillSimplex.d.ts +1 -1
  300. package/dist/optimize/DownhillSimplex.js +1 -1
  301. package/dist/optimize/GoldenSection.d.ts +2 -2
  302. package/dist/optimize/GoldenSection.js +3 -3
  303. package/dist/optimize/PolynomialRegression.d.ts +1 -1
  304. package/dist/optimize/PolynomialRegression.js +2 -2
  305. package/dist/optimize/PolynomialRegression.js.map +1 -1
  306. package/dist/optimize/PolynomicalRegressionResult.d.ts +1 -1
  307. package/dist/optimize/PolynomicalRegressionResult.js +1 -1
  308. package/dist/optimize/SimpleLinearRegression.d.ts +1 -1
  309. package/dist/optimize/SimpleLinearRegression.js +1 -1
  310. package/dist/optimize/SimplexEntry.d.ts +4 -4
  311. package/dist/optimize/SimplexEntry.js +11 -11
  312. package/dist/optimize/SimplexEntry.js.map +1 -1
  313. package/dist/orbit_determination/BatchLeastSquaresOD.d.ts +11 -11
  314. package/dist/orbit_determination/BatchLeastSquaresOD.js +2 -2
  315. package/dist/orbit_determination/BatchLeastSquaresOD.js.map +1 -1
  316. package/dist/orbit_determination/BatchLeastSquaresResult.d.ts +2 -2
  317. package/dist/orbit_determination/BatchLeastSquaresResult.js +1 -1
  318. package/dist/orbit_determination/GibbsIOD.d.ts +2 -2
  319. package/dist/orbit_determination/GibbsIOD.js +2 -2
  320. package/dist/orbit_determination/GibbsIOD.js.map +1 -1
  321. package/dist/orbit_determination/GoodingIOD.d.ts +2 -2
  322. package/dist/orbit_determination/GoodingIOD.js +2 -2
  323. package/dist/orbit_determination/GoodingIOD.js.map +1 -1
  324. package/dist/orbit_determination/HerrickGibbsIOD.d.ts +2 -2
  325. package/dist/orbit_determination/HerrickGibbsIOD.js +2 -2
  326. package/dist/orbit_determination/HerrickGibbsIOD.js.map +1 -1
  327. package/dist/orbit_determination/LambertIOD.d.ts +2 -2
  328. package/dist/orbit_determination/LambertIOD.js +2 -2
  329. package/dist/orbit_determination/LambertIOD.js.map +1 -1
  330. package/dist/orbit_determination/ModifiedGoodingIOD.d.ts +4 -4
  331. package/dist/orbit_determination/ModifiedGoodingIOD.js +2 -2
  332. package/dist/orbit_determination/ModifiedGoodingIOD.js.map +1 -1
  333. package/dist/orbit_determination/index.d.ts +7 -0
  334. package/dist/orbit_determination/index.js +8 -0
  335. package/dist/orbit_determination/index.js.map +1 -0
  336. package/dist/propagator/DormandPrince54Propagator.d.ts +5 -5
  337. package/dist/propagator/DormandPrince54Propagator.js +9 -9
  338. package/dist/propagator/DormandPrince54Propagator.js.map +1 -1
  339. package/dist/propagator/KeplerPropagator.d.ts +6 -6
  340. package/dist/propagator/KeplerPropagator.js +31 -31
  341. package/dist/propagator/KeplerPropagator.js.map +1 -1
  342. package/dist/propagator/Propagator.d.ts +2 -2
  343. package/dist/propagator/Propagator.js +2 -2
  344. package/dist/propagator/Propagator.js.map +1 -1
  345. package/dist/propagator/RkCheckpoint.d.ts +2 -2
  346. package/dist/propagator/RkCheckpoint.js +1 -1
  347. package/dist/propagator/RkResult.d.ts +2 -2
  348. package/dist/propagator/RkResult.js +1 -1
  349. package/dist/propagator/RungeKutta4Propagator.d.ts +3 -3
  350. package/dist/propagator/RungeKutta4Propagator.js +2 -2
  351. package/dist/propagator/RungeKutta4Propagator.js.map +1 -1
  352. package/dist/propagator/RungeKutta89Propagator.d.ts +5 -5
  353. package/dist/propagator/RungeKutta89Propagator.js +1 -1
  354. package/dist/propagator/RungeKutta89Propagator.js.map +1 -1
  355. package/dist/propagator/RungeKuttaAdaptive.d.ts +4 -4
  356. package/dist/propagator/RungeKuttaAdaptive.js +2 -2
  357. package/dist/propagator/RungeKuttaAdaptive.js.map +1 -1
  358. package/dist/propagator/Sgp4Propagator.d.ts +6 -6
  359. package/dist/propagator/Sgp4Propagator.js +15 -15
  360. package/dist/propagator/Sgp4Propagator.js.map +1 -1
  361. package/dist/sgp4/index.d.ts +23 -0
  362. package/dist/sgp4/index.js +24 -0
  363. package/dist/sgp4/index.js.map +1 -0
  364. package/dist/sgp4/sgp4-error.d.ts +22 -0
  365. package/dist/sgp4/sgp4-error.js +44 -0
  366. package/dist/sgp4/sgp4-error.js.map +1 -0
  367. package/dist/sgp4/sgp4.d.ts +99 -0
  368. package/dist/sgp4/sgp4.js +3164 -0
  369. package/dist/sgp4/sgp4.js.map +1 -0
  370. package/dist/smoothing/ExponentialSmoothing.d.ts +2 -2
  371. package/dist/smoothing/ExponentialSmoothing.js +1 -1
  372. package/dist/time/Epoch.d.ts +44 -0
  373. package/dist/time/Epoch.js +109 -0
  374. package/dist/time/Epoch.js.map +1 -0
  375. package/dist/time/EpochGPS.d.ts +42 -0
  376. package/dist/time/EpochGPS.js +70 -0
  377. package/dist/time/EpochGPS.js.map +1 -0
  378. package/dist/time/EpochTAI.d.ts +26 -0
  379. package/dist/time/EpochTAI.js +27 -0
  380. package/dist/time/EpochTAI.js.map +1 -0
  381. package/dist/time/EpochTDB.d.ts +26 -0
  382. package/dist/time/EpochTDB.js +27 -0
  383. package/dist/time/EpochTDB.js.map +1 -0
  384. package/dist/time/EpochTT.d.ts +26 -0
  385. package/dist/time/EpochTT.js +27 -0
  386. package/dist/time/EpochTT.js.map +1 -0
  387. package/dist/time/EpochUTC.d.ts +59 -0
  388. package/dist/time/EpochUTC.js +137 -0
  389. package/dist/time/EpochUTC.js.map +1 -0
  390. package/dist/time/EpochWindow.d.ts +28 -0
  391. package/dist/time/EpochWindow.js +31 -0
  392. package/dist/time/EpochWindow.js.map +1 -0
  393. package/dist/time/TimeStamped.d.ts +39 -0
  394. package/dist/time/TimeStamped.js +42 -0
  395. package/dist/time/TimeStamped.js.map +1 -0
  396. package/dist/time/index.d.ts +8 -0
  397. package/dist/time/index.js +9 -0
  398. package/dist/time/index.js.map +1 -0
  399. package/dist/transforms/TransformCache.d.ts +27 -0
  400. package/dist/transforms/TransformCache.js +41 -0
  401. package/dist/transforms/TransformCache.js.map +1 -0
  402. package/dist/transforms/conversions.d.ts +63 -0
  403. package/dist/transforms/conversions.js +88 -0
  404. package/dist/transforms/conversions.js.map +1 -0
  405. package/dist/transforms/index.d.ts +1 -0
  406. package/dist/transforms/index.js +1 -0
  407. package/dist/transforms/index.js.map +1 -1
  408. package/dist/transforms/transforms.d.ts +166 -2
  409. package/dist/transforms/transforms.js +372 -1
  410. package/dist/transforms/transforms.js.map +1 -1
  411. package/dist/types/types.d.ts +675 -3
  412. package/dist/types/types.js +37 -1
  413. package/dist/types/types.js.map +1 -1
  414. package/dist/utils/constants.d.ts +80 -0
  415. package/dist/utils/constants.js +87 -0
  416. package/dist/utils/constants.js.map +1 -0
  417. package/dist/utils/create-covariance-from-tle.d.ts +18 -0
  418. package/dist/utils/create-covariance-from-tle.js +57 -0
  419. package/dist/utils/create-covariance-from-tle.js.map +1 -0
  420. package/dist/utils/functions.d.ts +228 -0
  421. package/dist/utils/functions.js +476 -0
  422. package/dist/utils/functions.js.map +1 -1
  423. package/dist/utils/index.d.ts +4 -1
  424. package/dist/utils/index.js +4 -1
  425. package/dist/utils/index.js.map +1 -1
  426. package/dist/utils/jacobian.d.ts +7 -1
  427. package/dist/utils/jacobian.js +7 -2
  428. package/dist/utils/jacobian.js.map +1 -1
  429. package/dist/utils/linearDistance.d.ts +8 -0
  430. package/dist/utils/linearDistance.js +10 -0
  431. package/dist/utils/linearDistance.js.map +1 -0
  432. package/package.json +5 -8
  433. package/src/body/Celestial.ts +134 -0
  434. package/src/body/Earth.ts +260 -0
  435. package/src/body/Moon.ts +556 -0
  436. package/src/body/NutationAngles.ts +40 -0
  437. package/src/body/PrecessionAngles.ts +31 -0
  438. package/src/body/Sun.ts +665 -0
  439. package/src/body/index.ts +27 -0
  440. package/src/body/suncalc.LICENSE.md +18 -0
  441. package/src/coordinate/ClassicalElements.ts +327 -0
  442. package/src/coordinate/EquinoctialElements.ts +189 -0
  443. package/src/coordinate/FormatTle.ts +214 -0
  444. package/src/coordinate/Geodetic.ts +186 -0
  445. package/src/coordinate/Hill.ts +2 -2
  446. package/src/coordinate/ITRF.ts +146 -0
  447. package/src/coordinate/J2000.ts +130 -0
  448. package/src/coordinate/RIC.ts +87 -0
  449. package/src/coordinate/RelativeState.ts +101 -0
  450. package/src/coordinate/StateVector.ts +123 -0
  451. package/src/coordinate/TEME.ts +97 -0
  452. package/src/coordinate/Tle.ts +1024 -0
  453. package/src/coordinate/index.ts +11 -0
  454. package/src/coordinate/tle-format-data.ts +47 -0
  455. package/src/covariance/CovarianceSample.ts +117 -19
  456. package/src/covariance/StateCovariance.ts +2 -2
  457. package/src/covariance/index.ts +2 -0
  458. package/src/data/DataHandler.ts +88 -0
  459. package/src/data/values/Egm96Data.ts +75 -0
  460. package/src/data/values/HpAtmosphereData.ts +76 -0
  461. package/src/data/values/HpAtmosphereResult.ts +41 -0
  462. package/src/data/values/Iau1980Data.ts +63 -0
  463. package/src/data/values/LeapSecond.ts +37 -0
  464. package/src/data/values/LeapSecondData.ts +113 -0
  465. package/src/data/values/egm96.ts +728 -0
  466. package/src/data/values/hpAtmosphere.ts +79 -0
  467. package/src/data/values/iau1980.ts +32 -0
  468. package/src/enums/AngularDiameterMethod.ts +28 -0
  469. package/src/enums/AngularDistanceMethod.ts +28 -0
  470. package/src/enums/OrbitRegime.ts +31 -0
  471. package/src/enums/PassType.ts +29 -0
  472. package/src/enums/Sgp4OpsMode.ts +27 -0
  473. package/src/enums/index.ts +5 -0
  474. package/src/force/AtmosphericDrag.ts +2 -4
  475. package/src/force/EarthGravity.ts +2 -2
  476. package/src/force/Force.ts +2 -2
  477. package/src/force/ForceModel.ts +2 -2
  478. package/src/force/Gravity.ts +2 -2
  479. package/src/force/SolarRadiationPressure.ts +2 -2
  480. package/src/force/ThirdBodyGravity.ts +2 -2
  481. package/src/force/Thrust.ts +2 -2
  482. package/src/interfaces/BaseObjectParams.ts +33 -0
  483. package/src/interfaces/ClassicalElementsParams.ts +35 -0
  484. package/src/interfaces/EquinoctialElementsParams.ts +37 -0
  485. package/src/interfaces/GroundPositionParams.ts +30 -0
  486. package/src/interfaces/OmmFormat.ts +63 -0
  487. package/src/interfaces/OptionsParams.ts +3 -0
  488. package/src/interfaces/RfSensorParams.ts +1 -1
  489. package/src/interfaces/SatelliteParams.ts +20 -0
  490. package/src/interfaces/SensorParams.ts +39 -0
  491. package/src/interfaces/StarObjectParams.ts +11 -0
  492. package/src/interfaces/TimeVariables.ts +7 -0
  493. package/src/interfaces/index.ts +8 -0
  494. package/src/interpolator/ChebyshevCoefficients.ts +5 -5
  495. package/src/interpolator/ChebyshevInterpolator.ts +10 -10
  496. package/src/interpolator/CubicSpline.ts +2 -2
  497. package/src/interpolator/CubicSplineInterpolator.ts +8 -8
  498. package/src/interpolator/FieldInterpolator.ts +1 -1
  499. package/src/interpolator/Interpolator.ts +2 -2
  500. package/src/interpolator/LagrangeInterpolator.ts +7 -7
  501. package/src/interpolator/StateInterpolator.ts +2 -2
  502. package/src/interpolator/VerletBlendInterpolator.ts +2 -2
  503. package/src/main.ts +15 -5
  504. package/src/maneuver/TwoBurnOrbitTransfer.ts +2 -2
  505. package/src/maneuver/Waypoint.ts +2 -2
  506. package/src/objects/BaseObject.ts +171 -0
  507. package/src/objects/DetailedSatellite.ts +5 -4
  508. package/src/objects/DetailedSensor.ts +3 -2
  509. package/src/objects/GroundObject.ts +176 -0
  510. package/src/objects/LandObject.ts +3 -2
  511. package/src/objects/Marker.ts +2 -2
  512. package/src/objects/RfSensor.ts +1 -2
  513. package/src/objects/Satellite.ts +552 -0
  514. package/src/objects/Sensor.ts +279 -0
  515. package/src/objects/Star.ts +96 -0
  516. package/src/objects/index.ts +5 -0
  517. package/src/observation/Observation.ts +2 -2
  518. package/src/observation/ObservationOptical.ts +7 -7
  519. package/src/observation/ObservationRadar.ts +10 -6
  520. package/src/observation/ObservationUtils.ts +31 -2
  521. package/src/observation/PropagatorPairs.ts +3 -3
  522. package/src/observation/RAE.ts +261 -0
  523. package/src/observation/RadecGeocentric.ts +206 -0
  524. package/src/observation/RadecTopocentric.ts +241 -0
  525. package/src/observation/index.ts +27 -0
  526. package/src/operations/BoxMuller.ts +2 -2
  527. package/src/operations/EulerAngles.ts +2 -2
  528. package/src/operations/Matrix.ts +473 -0
  529. package/src/operations/Quaternion.ts +7 -7
  530. package/src/operations/Random.ts +54 -0
  531. package/src/operations/RandomGaussianSource.ts +5 -5
  532. package/src/operations/Vector.ts +484 -0
  533. package/src/operations/Vector3D.ts +289 -0
  534. package/src/operations/operations.ts +27 -0
  535. package/src/optimize/ChebyshevCompressor.ts +6 -6
  536. package/src/optimize/DownhillSimplex.ts +1 -1
  537. package/src/optimize/GoldenSection.ts +3 -3
  538. package/src/optimize/PolynomialRegression.ts +2 -2
  539. package/src/optimize/PolynomicalRegressionResult.ts +1 -1
  540. package/src/optimize/SimpleLinearRegression.ts +1 -1
  541. package/src/optimize/SimplexEntry.ts +9 -9
  542. package/src/orbit_determination/BatchLeastSquaresOD.ts +11 -11
  543. package/src/orbit_determination/BatchLeastSquaresResult.ts +2 -2
  544. package/src/orbit_determination/GibbsIOD.ts +4 -2
  545. package/src/orbit_determination/GoodingIOD.ts +2 -2
  546. package/src/orbit_determination/HerrickGibbsIOD.ts +2 -2
  547. package/src/orbit_determination/LambertIOD.ts +2 -2
  548. package/src/orbit_determination/ModifiedGoodingIOD.ts +4 -4
  549. package/src/orbit_determination/index.ts +7 -0
  550. package/src/propagator/DormandPrince54Propagator.ts +9 -9
  551. package/src/propagator/KeplerPropagator.ts +31 -31
  552. package/src/propagator/Propagator.ts +2 -2
  553. package/src/propagator/RkCheckpoint.ts +2 -2
  554. package/src/propagator/RkResult.ts +2 -2
  555. package/src/propagator/RungeKutta4Propagator.ts +3 -3
  556. package/src/propagator/RungeKutta89Propagator.ts +5 -5
  557. package/src/propagator/RungeKuttaAdaptive.ts +4 -4
  558. package/src/propagator/Sgp4Propagator.ts +14 -14
  559. package/src/sgp4/index.ts +24 -0
  560. package/src/sgp4/sgp4-error.ts +53 -0
  561. package/src/sgp4/sgp4.LICENSE.md +28 -0
  562. package/src/sgp4/sgp4.ts +3983 -0
  563. package/src/smoothing/ExponentialSmoothing.ts +2 -2
  564. package/src/time/Epoch.ts +128 -0
  565. package/src/time/EpochGPS.ts +76 -0
  566. package/src/time/EpochTAI.ts +27 -0
  567. package/src/time/EpochTDB.ts +27 -0
  568. package/src/time/EpochTT.ts +27 -0
  569. package/src/time/EpochUTC.ts +188 -0
  570. package/src/time/EpochWindow.ts +33 -0
  571. package/src/time/TimeStamped.ts +46 -0
  572. package/src/time/index.ts +8 -0
  573. package/src/transforms/TransformCache.ts +46 -0
  574. package/src/transforms/conversions.ts +98 -0
  575. package/src/transforms/index.ts +1 -0
  576. package/src/transforms/transforms.ts +478 -2
  577. package/src/types/types.ts +722 -3
  578. package/src/utils/constants.ts +113 -0
  579. package/src/utils/create-covariance-from-tle.ts +75 -0
  580. package/src/utils/functions.ts +562 -0
  581. package/src/utils/index.ts +4 -1
  582. package/src/utils/jacobian.ts +7 -3
  583. package/src/utils/linearDistance.ts +11 -0
@@ -1 +1,12 @@
1
+ export * from './ClassicalElements.js';
2
+ export * from './EquinoctialElements.js';
3
+ export * from './FormatTle.js';
4
+ export * from './Geodetic.js';
5
+ export * from './ITRF.js';
6
+ export * from './J2000.js';
7
+ export * from './RelativeState.js';
8
+ export * from './RIC.js';
9
+ export * from './StateVector.js';
10
+ export * from './TEME.js';
11
+ export * from './Tle.js';
1
12
  export { Hill } from './Hill.js';
@@ -0,0 +1,47 @@
1
+ /**
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
7
+ *
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.
11
+ *
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
+ */
23
+
24
+ /**
25
+ * Represents the format data of a TLE (Two-Line Element) set. This is used to
26
+ * make it easier to remember the starting and ending positions of the columns
27
+ * containing the TLE data.
28
+ */
29
+ export class TleFormatData {
30
+ /** The starting position of the TLE data in the source string. */
31
+ start: number;
32
+ /** The ending position of the TLE data in the source string. */
33
+ stop: number;
34
+ /** The length of the TLE data in the source string. */
35
+ length: number;
36
+
37
+ /**
38
+ * Creates a new instance of TleFormatData.
39
+ * @param start The starting position of the TLE data in the source string.
40
+ * @param end The ending position of the TLE data in the source string.
41
+ */
42
+ constructor(start: number, end: number) {
43
+ this.start = start - 1;
44
+ this.stop = end;
45
+ this.length = this.stop - this.start;
46
+ }
47
+ }
@@ -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,11 +23,13 @@ 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
- } from 'ootk-core';
32
+ } from '../main.js';
31
33
  import { ForceModel } from '../force/ForceModel.js';
32
34
  import { Thrust } from '../force/Thrust.js';
33
35
  import { RungeKutta89Propagator } from '../propagator/RungeKutta89Propagator.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
@@ -15,7 +15,7 @@
15
15
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
16
16
  */
17
17
 
18
- import { Matrix, Vector } from 'ootk-core';
18
+ import { Matrix, Vector } from '../main.js';
19
19
 
20
20
  /** Covariance Frame */
21
21
  export enum CovarianceFrame {
@@ -0,0 +1,2 @@
1
+ export * from './CovarianceSample.js';
2
+ export * from './StateCovariance.js';
@@ -0,0 +1,88 @@
1
+ /**
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
7
+ *
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.
11
+ *
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
+ */
23
+
24
+ import { egm96Data, Egm96Entry } from './values/Egm96Data.js';
25
+ import { hpAtmosphereData } from './values/HpAtmosphereData.js';
26
+ import { HpAtmosphereResult } from './values/HpAtmosphereResult.js';
27
+ import { iau1980Data, Iau1980Entry } from './values/Iau1980Data.js';
28
+ import { leapSecondData } from './values/LeapSecondData.js';
29
+
30
+ /**
31
+ * Astrodynamic data management singleton.
32
+ *
33
+ * This class provides access to the various data sets used by the library.
34
+ * It is a singleton class, and can be accessed via the static
35
+ * [getInstance] method.
36
+ */
37
+ export class DataHandler {
38
+ private static readonly instance_ = new DataHandler();
39
+
40
+ private constructor() {
41
+ // Prevent instantiation.
42
+ }
43
+
44
+ /**
45
+ * Returns the singleton instance of the DataHandler class.
46
+ * @returns The singleton instance of the DataHandler class.
47
+ */
48
+ static getInstance(): DataHandler {
49
+ return DataHandler.instance_;
50
+ }
51
+
52
+ /**
53
+ * Retrieves the Egm96 coefficients for the given l and m values.
54
+ * @param l - The degree of the coefficient.
55
+ * @param m - The order of the coefficient.
56
+ * @returns The Egm96Entry object containing the coefficients.
57
+ */
58
+ getEgm96Coeffs(l: number, m: number): Egm96Entry {
59
+ return egm96Data.getCoeffs(l, m);
60
+ }
61
+
62
+ /**
63
+ * Retrieves the IAU 1980 coefficients for the specified row.
64
+ * @param row The row index of the coefficients to retrieve.
65
+ * @returns The IAU 1980 entry containing the coefficients.
66
+ */
67
+ getIau1980Coeffs(row: number): Iau1980Entry {
68
+ return iau1980Data.getCoeffs(row);
69
+ }
70
+
71
+ /**
72
+ * Retrieves the number of leap seconds for a given Julian date.
73
+ * @param jd The Julian date.
74
+ * @returns The number of leap seconds.
75
+ */
76
+ getLeapSeconds(jd: number): number {
77
+ return leapSecondData.getLeapSeconds(jd);
78
+ }
79
+
80
+ /**
81
+ * Retrieves the atmosphere data for a given height.
82
+ * @param height The height for which to retrieve the atmosphere data.
83
+ * @returns The atmosphere data for the given height, or null if no data is available.
84
+ */
85
+ getHpAtmosphere(height: number): HpAtmosphereResult | null {
86
+ return hpAtmosphereData.getAtmosphere(height);
87
+ }
88
+ }
@@ -0,0 +1,75 @@
1
+ /**
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
7
+ *
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.
11
+ *
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
+ */
23
+
24
+ import { factorial } from '../../utils/functions.js';
25
+ import { egm96 } from './egm96.js';
26
+
27
+ // / EGM-96 entry for l, m indexes and clm, slm values.
28
+ export type Egm96Entry = [number, number, number, number];
29
+
30
+ // / Container for EGM-96 data.
31
+ export class Egm96Data {
32
+ private readonly coeffs_: Egm96Entry[];
33
+
34
+ // / Create a new [Egm96Data] object.
35
+ constructor(coeffs: Egm96Entry[]) {
36
+ this.coeffs_ = coeffs;
37
+ }
38
+
39
+ /**
40
+ * Create a new [Egm96Data] container given a list of EGM-96
41
+ * coefficient tuples [vals].
42
+ * @param vals List of EGM-96 coefficient tuples.
43
+ * @returns A new [Egm96Data] object.
44
+ */
45
+ static fromVals(vals: Egm96Entry[]): Egm96Data {
46
+ const output: Egm96Entry[] = [];
47
+
48
+ for (const v of vals) {
49
+ const [l, m, clm, slm] = v;
50
+ const k = m === 0 ? 1 : 2;
51
+ const a = factorial(l + m);
52
+ const b = factorial(l - m) * (k * (2 * l + 1));
53
+ const nFac = Math.sqrt(a / b);
54
+ const normalizedClm = clm / nFac;
55
+ const normalizedSlm = slm / nFac;
56
+
57
+ output.push([l, m, normalizedClm, normalizedSlm]);
58
+ }
59
+
60
+ return new Egm96Data(output);
61
+ }
62
+
63
+ // / Return de-normalized EGM-96 coefficients for a given [l] and [m] index.
64
+ getCoeffs(l: number, m: number): Egm96Entry {
65
+ return this.coeffs_[Egm96Data.index_(l, m)];
66
+ }
67
+
68
+ // / Return the EGM-96 index for a given [l] and [m] lookup.
69
+ private static index_(l: number, m: number): number {
70
+ return (((l - 2) * (l + 2) + l) >> 1) - 1 + m;
71
+ }
72
+ }
73
+
74
+ // / De-normalized EGM-96 data container.
75
+ export const egm96Data = Egm96Data.fromVals(egm96);
@@ -0,0 +1,76 @@
1
+ /**
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
7
+ *
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.
11
+ *
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
+ */
23
+
24
+ import { hpAtmosphere } from './hpAtmosphere.js';
25
+ import { HpAtmosphereResult } from './HpAtmosphereResult.js';
26
+
27
+ // / Harris-Priester atmosphere entry for height, min, and max density values.
28
+ export type HpAtmosphereEntry = [number, number, number];
29
+
30
+ // / Container for Harris-Priester atmosphere data.
31
+ export class HpAtmosphereData {
32
+ private readonly table_: HpAtmosphereEntry[];
33
+ private readonly hMin_: number;
34
+ private readonly hMax_: number;
35
+
36
+ constructor(table: HpAtmosphereEntry[]) {
37
+ this.table_ = table;
38
+ if (table.length === 0 || typeof table[0]?.[0] === 'undefined') {
39
+ throw new Error('Table must have at least one valid entry.');
40
+ }
41
+
42
+ this.hMin_ = table[0][0];
43
+ this.hMax_ = table[table.length - 1]?.[0] ?? 0;
44
+ }
45
+
46
+ static fromVals(vals: [number, number, number][]): HpAtmosphereData {
47
+ const output: HpAtmosphereEntry[] = [];
48
+
49
+ for (const v of vals) {
50
+ const [h, minD, maxD] = v;
51
+
52
+ output.push([h, minD, maxD]);
53
+ }
54
+
55
+ return new HpAtmosphereData(output);
56
+ }
57
+
58
+ getAtmosphere(height: number): HpAtmosphereResult | null {
59
+ if (height < this.hMin_ || height > this.hMax_) {
60
+ return null;
61
+ }
62
+ let index = 0;
63
+
64
+ while (index < this.table_.length - 2 && height > (this.table_[index + 1])[0]) {
65
+ index++;
66
+ }
67
+
68
+ return new HpAtmosphereResult(
69
+ height,
70
+ (this.table_[index]),
71
+ (this.table_[index + 1]),
72
+ );
73
+ }
74
+ }
75
+
76
+ export const hpAtmosphereData = HpAtmosphereData.fromVals(hpAtmosphere);
@@ -0,0 +1,41 @@
1
+ /**
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
7
+ *
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.
11
+ *
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
+ */
23
+
24
+ import { HpAtmosphereEntry } from './HpAtmosphereData.js';
25
+
26
+ // / Harris-Priester atmospheric density bracket.
27
+ export class HpAtmosphereResult {
28
+ // / Height above Earth's surface _(km)_.
29
+ height: number;
30
+ // / Lower bound for atmospheric parameters.
31
+ hp0: HpAtmosphereEntry;
32
+ // / Upper bound for atmospheric parameters.
33
+ hp1: HpAtmosphereEntry;
34
+
35
+ // / Create a new [HpAtmosphereResult] object.
36
+ constructor(height: number, hp0: HpAtmosphereEntry, hp1: HpAtmosphereEntry) {
37
+ this.height = height;
38
+ this.hp0 = hp0;
39
+ this.hp1 = hp1;
40
+ }
41
+ }
@@ -0,0 +1,63 @@
1
+ /**
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
7
+ *
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.
11
+ *
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
+ */
23
+
24
+ import { iau1980 } from './iau1980.js';
25
+
26
+ // / IAU a1, a2, a3, a4, a5, Ai, Bi, Ci, Di coefficients.
27
+ export type Iau1980Entry = [number, number, number, number, number, number, number, number, number];
28
+
29
+ // / Container for IAU-1980 data.
30
+ export class Iau1980Data {
31
+ private readonly coeffs_: Iau1980Entry[];
32
+
33
+ // / Create a new [Iau1980Data] object.
34
+ constructor(coeffs: Iau1980Entry[]) {
35
+ this.coeffs_ = coeffs;
36
+ }
37
+
38
+ /**
39
+ * Create a new [Iau1980Data] container object from an array of IAU-1980
40
+ * coefficient tuples [coeffs].
41
+ * @param coeffs IAU-1980 coefficients.
42
+ * @returns A new [Iau1980Data] object.
43
+ */
44
+ static fromCoeffs(coeffs: Array<Iau1980Entry>): Iau1980Data {
45
+ const output: Iau1980Entry[] = [];
46
+
47
+ for (const c of coeffs) {
48
+ const [a1, a2, a3, a4, a5, ai, bi, ci, di] = c;
49
+
50
+ output.push([a1, a2, a3, a4, a5, ai, bi, ci, di]);
51
+ }
52
+
53
+ return new Iau1980Data(output);
54
+ }
55
+
56
+ // / Get IAU-1980 coefficients for a given row number.
57
+ getCoeffs(row: number): Iau1980Entry {
58
+ return this.coeffs_[row];
59
+ }
60
+ }
61
+
62
+ // / IAU-1980 data container.
63
+ export const iau1980Data = Iau1980Data.fromCoeffs(iau1980);