ootk 4.0.9 → 5.0.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 (535) 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 +305 -0
  18. package/dist/body/Sun.js +548 -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 +1 -1
  36. package/dist/coordinate/Hill.js +1 -1
  37. package/dist/coordinate/Hill.js.map +1 -1
  38. package/dist/coordinate/ITRF.d.ts +75 -0
  39. package/dist/coordinate/ITRF.js +135 -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 +430 -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 +12 -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 +1 -1
  66. package/dist/covariance/CovarianceSample.js +1 -1
  67. package/dist/covariance/CovarianceSample.js.map +1 -1
  68. package/dist/covariance/StateCovariance.d.ts +1 -1
  69. package/dist/covariance/StateCovariance.js +1 -1
  70. package/dist/covariance/StateCovariance.js.map +1 -1
  71. package/dist/data/DataHandler.d.ts +66 -0
  72. package/dist/data/DataHandler.js +80 -0
  73. package/dist/data/DataHandler.js.map +1 -0
  74. package/dist/data/values/Egm96Data.d.ts +37 -0
  75. package/dist/data/values/Egm96Data.js +63 -0
  76. package/dist/data/values/Egm96Data.js.map +1 -0
  77. package/dist/data/values/HpAtmosphereData.d.ts +33 -0
  78. package/dist/data/values/HpAtmosphereData.js +58 -0
  79. package/dist/data/values/HpAtmosphereData.js.map +1 -0
  80. package/dist/data/values/HpAtmosphereResult.d.ts +29 -0
  81. package/dist/data/values/HpAtmosphereResult.js +38 -0
  82. package/dist/data/values/HpAtmosphereResult.js.map +1 -0
  83. package/dist/data/values/Iau1980Data.d.ts +36 -0
  84. package/dist/data/values/Iau1980Data.js +52 -0
  85. package/dist/data/values/Iau1980Data.js.map +1 -0
  86. package/dist/data/values/LeapSecond.d.ts +27 -0
  87. package/dist/data/values/LeapSecond.js +35 -0
  88. package/dist/data/values/LeapSecond.js.map +1 -0
  89. package/dist/data/values/LeapSecondData.d.ts +41 -0
  90. package/dist/data/values/LeapSecondData.js +103 -0
  91. package/dist/data/values/LeapSecondData.js.map +1 -0
  92. package/dist/data/values/egm96.d.ts +24 -0
  93. package/dist/data/values/egm96.js +726 -0
  94. package/dist/data/values/egm96.js.map +1 -0
  95. package/dist/data/values/hpAtmosphere.d.ts +24 -0
  96. package/dist/data/values/hpAtmosphere.js +76 -0
  97. package/dist/data/values/hpAtmosphere.js.map +1 -0
  98. package/dist/data/values/iau1980.d.ts +24 -0
  99. package/dist/data/values/iau1980.js +30 -0
  100. package/dist/data/values/iau1980.js.map +1 -0
  101. package/dist/enums/AngularDiameterMethod.d.ts +27 -0
  102. package/dist/enums/AngularDiameterMethod.js +29 -0
  103. package/dist/enums/AngularDiameterMethod.js.map +1 -0
  104. package/dist/enums/AngularDistanceMethod.d.ts +27 -0
  105. package/dist/enums/AngularDistanceMethod.js +29 -0
  106. package/dist/enums/AngularDistanceMethod.js.map +1 -0
  107. package/dist/enums/OrbitRegime.d.ts +30 -0
  108. package/dist/enums/OrbitRegime.js +32 -0
  109. package/dist/enums/OrbitRegime.js.map +1 -0
  110. package/dist/enums/PassType.d.ts +28 -0
  111. package/dist/enums/PassType.js +30 -0
  112. package/dist/enums/PassType.js.map +1 -0
  113. package/dist/enums/Sgp4OpsMode.d.ts +26 -0
  114. package/dist/enums/Sgp4OpsMode.js +28 -0
  115. package/dist/enums/Sgp4OpsMode.js.map +1 -0
  116. package/dist/enums/index.d.ts +5 -0
  117. package/dist/enums/index.js +5 -0
  118. package/dist/enums/index.js.map +1 -1
  119. package/dist/force/AtmosphericDrag.d.ts +1 -1
  120. package/dist/force/AtmosphericDrag.js +1 -1
  121. package/dist/force/AtmosphericDrag.js.map +1 -1
  122. package/dist/force/EarthGravity.d.ts +1 -1
  123. package/dist/force/EarthGravity.js +1 -1
  124. package/dist/force/EarthGravity.js.map +1 -1
  125. package/dist/force/Force.d.ts +1 -1
  126. package/dist/force/ForceModel.d.ts +1 -1
  127. package/dist/force/ForceModel.js +1 -1
  128. package/dist/force/ForceModel.js.map +1 -1
  129. package/dist/force/Gravity.d.ts +1 -1
  130. package/dist/force/Gravity.js +1 -1
  131. package/dist/force/Gravity.js.map +1 -1
  132. package/dist/force/SolarRadiationPressure.d.ts +1 -1
  133. package/dist/force/SolarRadiationPressure.js +1 -1
  134. package/dist/force/SolarRadiationPressure.js.map +1 -1
  135. package/dist/force/ThirdBodyGravity.d.ts +1 -1
  136. package/dist/force/ThirdBodyGravity.js +1 -1
  137. package/dist/force/ThirdBodyGravity.js.map +1 -1
  138. package/dist/force/Thrust.d.ts +1 -1
  139. package/dist/force/Thrust.js +1 -1
  140. package/dist/force/Thrust.js.map +1 -1
  141. package/dist/interfaces/BaseObjectParams.d.ts +31 -0
  142. package/dist/interfaces/BaseObjectParams.js +24 -0
  143. package/dist/interfaces/BaseObjectParams.js.map +1 -0
  144. package/dist/interfaces/ClassicalElementsParams.d.ts +33 -0
  145. package/dist/interfaces/ClassicalElementsParams.js +24 -0
  146. package/dist/interfaces/ClassicalElementsParams.js.map +1 -0
  147. package/dist/interfaces/EquinoctialElementsParams.d.ts +35 -0
  148. package/dist/interfaces/EquinoctialElementsParams.js +24 -0
  149. package/dist/interfaces/EquinoctialElementsParams.js.map +1 -0
  150. package/dist/interfaces/GroundPositionParams.d.ts +28 -0
  151. package/dist/interfaces/GroundPositionParams.js +24 -0
  152. package/dist/interfaces/GroundPositionParams.js.map +1 -0
  153. package/dist/interfaces/OmmFormat.d.ts +62 -0
  154. package/dist/interfaces/OmmFormat.js +2 -0
  155. package/dist/interfaces/OmmFormat.js.map +1 -0
  156. package/dist/interfaces/OptionsParams.d.ts +3 -0
  157. package/dist/interfaces/OptionsParams.js +2 -0
  158. package/dist/interfaces/OptionsParams.js.map +1 -0
  159. package/dist/interfaces/RfSensorParams.d.ts +1 -1
  160. package/dist/interfaces/SatelliteParams.d.ts +18 -0
  161. package/dist/interfaces/SatelliteParams.js +2 -0
  162. package/dist/interfaces/SatelliteParams.js.map +1 -0
  163. package/dist/interfaces/SensorParams.d.ts +38 -0
  164. package/dist/interfaces/SensorParams.js +2 -0
  165. package/dist/interfaces/SensorParams.js.map +1 -0
  166. package/dist/interfaces/StarObjectParams.d.ts +10 -0
  167. package/dist/interfaces/StarObjectParams.js +2 -0
  168. package/dist/interfaces/StarObjectParams.js.map +1 -0
  169. package/dist/interfaces/TimeVariables.d.ts +6 -0
  170. package/dist/interfaces/TimeVariables.js +2 -0
  171. package/dist/interfaces/TimeVariables.js.map +1 -0
  172. package/dist/interfaces/index.d.ts +8 -0
  173. package/dist/interpolator/ChebyshevCoefficients.d.ts +1 -1
  174. package/dist/interpolator/ChebyshevCoefficients.js +1 -1
  175. package/dist/interpolator/ChebyshevCoefficients.js.map +1 -1
  176. package/dist/interpolator/ChebyshevInterpolator.d.ts +1 -1
  177. package/dist/interpolator/ChebyshevInterpolator.js +1 -1
  178. package/dist/interpolator/ChebyshevInterpolator.js.map +1 -1
  179. package/dist/interpolator/CubicSpline.d.ts +1 -1
  180. package/dist/interpolator/CubicSplineInterpolator.d.ts +1 -1
  181. package/dist/interpolator/CubicSplineInterpolator.js +1 -1
  182. package/dist/interpolator/CubicSplineInterpolator.js.map +1 -1
  183. package/dist/interpolator/Interpolator.d.ts +1 -1
  184. package/dist/interpolator/Interpolator.js +1 -1
  185. package/dist/interpolator/Interpolator.js.map +1 -1
  186. package/dist/interpolator/LagrangeInterpolator.d.ts +1 -1
  187. package/dist/interpolator/LagrangeInterpolator.js +1 -1
  188. package/dist/interpolator/LagrangeInterpolator.js.map +1 -1
  189. package/dist/interpolator/StateInterpolator.d.ts +1 -1
  190. package/dist/interpolator/VerletBlendInterpolator.d.ts +1 -1
  191. package/dist/interpolator/VerletBlendInterpolator.js +1 -1
  192. package/dist/interpolator/VerletBlendInterpolator.js.map +1 -1
  193. package/dist/main.d.ts +11 -3
  194. package/dist/main.js +11 -3
  195. package/dist/main.js.map +1 -1
  196. package/dist/maneuver/TwoBurnOrbitTransfer.d.ts +1 -1
  197. package/dist/maneuver/TwoBurnOrbitTransfer.js +1 -1
  198. package/dist/maneuver/TwoBurnOrbitTransfer.js.map +1 -1
  199. package/dist/maneuver/Waypoint.d.ts +1 -1
  200. package/dist/maneuver/Waypoint.js +1 -1
  201. package/dist/maneuver/Waypoint.js.map +1 -1
  202. package/dist/objects/BaseObject.d.ts +74 -0
  203. package/dist/objects/BaseObject.js +151 -0
  204. package/dist/objects/BaseObject.js.map +1 -0
  205. package/dist/objects/DetailedSatellite.d.ts +2 -1
  206. package/dist/objects/DetailedSatellite.js +2 -2
  207. package/dist/objects/DetailedSatellite.js.map +1 -1
  208. package/dist/objects/DetailedSensor.d.ts +2 -1
  209. package/dist/objects/DetailedSensor.js +1 -1
  210. package/dist/objects/DetailedSensor.js.map +1 -1
  211. package/dist/objects/GroundObject.d.ts +85 -0
  212. package/dist/objects/GroundObject.js +143 -0
  213. package/dist/objects/GroundObject.js.map +1 -0
  214. package/dist/objects/LandObject.d.ts +2 -1
  215. package/dist/objects/LandObject.js +1 -1
  216. package/dist/objects/LandObject.js.map +1 -1
  217. package/dist/objects/Marker.d.ts +1 -1
  218. package/dist/objects/Marker.js +1 -1
  219. package/dist/objects/Marker.js.map +1 -1
  220. package/dist/objects/RfSensor.d.ts +1 -2
  221. package/dist/objects/RfSensor.js +1 -2
  222. package/dist/objects/RfSensor.js.map +1 -1
  223. package/dist/objects/Satellite.d.ts +226 -0
  224. package/dist/objects/Satellite.js +443 -0
  225. package/dist/objects/Satellite.js.map +1 -0
  226. package/dist/objects/Sensor.d.ts +100 -0
  227. package/dist/objects/Sensor.js +239 -0
  228. package/dist/objects/Sensor.js.map +1 -0
  229. package/dist/objects/Star.d.ts +36 -0
  230. package/dist/objects/Star.js +59 -0
  231. package/dist/objects/Star.js.map +1 -0
  232. package/dist/objects/index.d.ts +5 -0
  233. package/dist/objects/index.js +5 -0
  234. package/dist/objects/index.js.map +1 -1
  235. package/dist/observation/Observation.d.ts +1 -1
  236. package/dist/observation/ObservationOptical.d.ts +1 -1
  237. package/dist/observation/ObservationOptical.js +1 -1
  238. package/dist/observation/ObservationOptical.js.map +1 -1
  239. package/dist/observation/ObservationRadar.d.ts +1 -1
  240. package/dist/observation/ObservationRadar.js +1 -1
  241. package/dist/observation/ObservationRadar.js.map +1 -1
  242. package/dist/observation/ObservationUtils.d.ts +3 -1
  243. package/dist/observation/ObservationUtils.js +15 -1
  244. package/dist/observation/ObservationUtils.js.map +1 -1
  245. package/dist/observation/RAE.d.ts +111 -0
  246. package/dist/observation/RAE.js +215 -0
  247. package/dist/observation/RAE.js.map +1 -0
  248. package/dist/observation/RadecGeocentric.d.ts +111 -0
  249. package/dist/observation/RadecGeocentric.js +169 -0
  250. package/dist/observation/RadecGeocentric.js.map +1 -0
  251. package/dist/observation/RadecTopocentric.d.ts +123 -0
  252. package/dist/observation/RadecTopocentric.js +196 -0
  253. package/dist/observation/RadecTopocentric.js.map +1 -0
  254. package/dist/observation/index.d.ts +26 -0
  255. package/dist/observation/index.js +27 -0
  256. package/dist/observation/index.js.map +1 -0
  257. package/dist/operations/BoxMuller.d.ts +1 -1
  258. package/dist/operations/BoxMuller.js +1 -1
  259. package/dist/operations/BoxMuller.js.map +1 -1
  260. package/dist/operations/EulerAngles.d.ts +1 -1
  261. package/dist/operations/EulerAngles.js +1 -1
  262. package/dist/operations/EulerAngles.js.map +1 -1
  263. package/dist/operations/Matrix.d.ts +170 -0
  264. package/dist/operations/Matrix.js +405 -0
  265. package/dist/operations/Matrix.js.map +1 -0
  266. package/dist/operations/Quaternion.d.ts +1 -1
  267. package/dist/operations/Quaternion.js +1 -1
  268. package/dist/operations/Quaternion.js.map +1 -1
  269. package/dist/operations/Random.d.ts +40 -0
  270. package/dist/operations/Random.js +50 -0
  271. package/dist/operations/Random.js.map +1 -0
  272. package/dist/operations/RandomGaussianSource.d.ts +1 -1
  273. package/dist/operations/RandomGaussianSource.js +1 -1
  274. package/dist/operations/RandomGaussianSource.js.map +1 -1
  275. package/dist/operations/Vector.d.ts +262 -0
  276. package/dist/operations/Vector.js +415 -0
  277. package/dist/operations/Vector.js.map +1 -0
  278. package/dist/operations/Vector3D.d.ts +86 -0
  279. package/dist/operations/Vector3D.js +241 -0
  280. package/dist/operations/Vector3D.js.map +1 -0
  281. package/dist/operations/operations.d.ts +26 -0
  282. package/dist/operations/operations.js +27 -0
  283. package/dist/operations/operations.js.map +1 -0
  284. package/dist/optimize/ChebyshevCompressor.js +1 -1
  285. package/dist/optimize/ChebyshevCompressor.js.map +1 -1
  286. package/dist/optimize/PolynomialRegression.js +1 -1
  287. package/dist/optimize/PolynomialRegression.js.map +1 -1
  288. package/dist/optimize/SimplexEntry.js +1 -1
  289. package/dist/optimize/SimplexEntry.js.map +1 -1
  290. package/dist/orbit_determination/BatchLeastSquaresOD.d.ts +1 -1
  291. package/dist/orbit_determination/BatchLeastSquaresOD.js +1 -1
  292. package/dist/orbit_determination/BatchLeastSquaresOD.js.map +1 -1
  293. package/dist/orbit_determination/BatchLeastSquaresResult.d.ts +1 -1
  294. package/dist/orbit_determination/GibbsIOD.d.ts +1 -1
  295. package/dist/orbit_determination/GibbsIOD.js +1 -1
  296. package/dist/orbit_determination/GibbsIOD.js.map +1 -1
  297. package/dist/orbit_determination/GoodingIOD.d.ts +1 -1
  298. package/dist/orbit_determination/GoodingIOD.js +1 -1
  299. package/dist/orbit_determination/GoodingIOD.js.map +1 -1
  300. package/dist/orbit_determination/HerrickGibbsIOD.d.ts +1 -1
  301. package/dist/orbit_determination/HerrickGibbsIOD.js +1 -1
  302. package/dist/orbit_determination/HerrickGibbsIOD.js.map +1 -1
  303. package/dist/orbit_determination/LambertIOD.d.ts +1 -1
  304. package/dist/orbit_determination/LambertIOD.js +1 -1
  305. package/dist/orbit_determination/LambertIOD.js.map +1 -1
  306. package/dist/orbit_determination/ModifiedGoodingIOD.d.ts +1 -1
  307. package/dist/orbit_determination/ModifiedGoodingIOD.js +1 -1
  308. package/dist/orbit_determination/ModifiedGoodingIOD.js.map +1 -1
  309. package/dist/orbit_determination/index.d.ts +7 -0
  310. package/dist/orbit_determination/index.js +8 -0
  311. package/dist/orbit_determination/index.js.map +1 -0
  312. package/dist/propagator/KeplerPropagator.d.ts +1 -1
  313. package/dist/propagator/KeplerPropagator.js +1 -1
  314. package/dist/propagator/KeplerPropagator.js.map +1 -1
  315. package/dist/propagator/Propagator.d.ts +1 -1
  316. package/dist/propagator/Propagator.js +1 -1
  317. package/dist/propagator/Propagator.js.map +1 -1
  318. package/dist/propagator/RkCheckpoint.d.ts +1 -1
  319. package/dist/propagator/RkResult.d.ts +1 -1
  320. package/dist/propagator/RungeKutta4Propagator.d.ts +1 -1
  321. package/dist/propagator/RungeKutta4Propagator.js +1 -1
  322. package/dist/propagator/RungeKutta4Propagator.js.map +1 -1
  323. package/dist/propagator/RungeKuttaAdaptive.d.ts +1 -1
  324. package/dist/propagator/RungeKuttaAdaptive.js +1 -1
  325. package/dist/propagator/RungeKuttaAdaptive.js.map +1 -1
  326. package/dist/propagator/Sgp4Propagator.d.ts +1 -1
  327. package/dist/sgp4/index.d.ts +23 -0
  328. package/dist/sgp4/index.js +24 -0
  329. package/dist/sgp4/index.js.map +1 -0
  330. package/dist/sgp4/sgp4-error.d.ts +22 -0
  331. package/dist/sgp4/sgp4-error.js +44 -0
  332. package/dist/sgp4/sgp4-error.js.map +1 -0
  333. package/dist/sgp4/sgp4.d.ts +102 -0
  334. package/dist/sgp4/sgp4.js +3167 -0
  335. package/dist/sgp4/sgp4.js.map +1 -0
  336. package/dist/smoothing/ExponentialSmoothing.d.ts +1 -1
  337. package/dist/time/Epoch.d.ts +44 -0
  338. package/dist/time/Epoch.js +109 -0
  339. package/dist/time/Epoch.js.map +1 -0
  340. package/dist/time/EpochGPS.d.ts +42 -0
  341. package/dist/time/EpochGPS.js +70 -0
  342. package/dist/time/EpochGPS.js.map +1 -0
  343. package/dist/time/EpochTAI.d.ts +26 -0
  344. package/dist/time/EpochTAI.js +27 -0
  345. package/dist/time/EpochTAI.js.map +1 -0
  346. package/dist/time/EpochTDB.d.ts +26 -0
  347. package/dist/time/EpochTDB.js +27 -0
  348. package/dist/time/EpochTDB.js.map +1 -0
  349. package/dist/time/EpochTT.d.ts +26 -0
  350. package/dist/time/EpochTT.js +27 -0
  351. package/dist/time/EpochTT.js.map +1 -0
  352. package/dist/time/EpochUTC.d.ts +59 -0
  353. package/dist/time/EpochUTC.js +137 -0
  354. package/dist/time/EpochUTC.js.map +1 -0
  355. package/dist/time/EpochWindow.d.ts +28 -0
  356. package/dist/time/EpochWindow.js +31 -0
  357. package/dist/time/EpochWindow.js.map +1 -0
  358. package/dist/time/TimeStamped.d.ts +43 -0
  359. package/dist/time/TimeStamped.js +46 -0
  360. package/dist/time/TimeStamped.js.map +1 -0
  361. package/dist/time/index.d.ts +30 -0
  362. package/dist/time/index.js +31 -0
  363. package/dist/time/index.js.map +1 -0
  364. package/dist/transforms/TransformCache.d.ts +27 -0
  365. package/dist/transforms/TransformCache.js +41 -0
  366. package/dist/transforms/TransformCache.js.map +1 -0
  367. package/dist/transforms/conversions.d.ts +63 -0
  368. package/dist/transforms/conversions.js +88 -0
  369. package/dist/transforms/conversions.js.map +1 -0
  370. package/dist/transforms/index.d.ts +1 -0
  371. package/dist/transforms/index.js +1 -0
  372. package/dist/transforms/index.js.map +1 -1
  373. package/dist/transforms/transforms.d.ts +166 -2
  374. package/dist/transforms/transforms.js +372 -1
  375. package/dist/transforms/transforms.js.map +1 -1
  376. package/dist/types/types.d.ts +674 -2
  377. package/dist/types/types.js +36 -0
  378. package/dist/types/types.js.map +1 -1
  379. package/dist/utils/constants.d.ts +80 -0
  380. package/dist/utils/constants.js +87 -0
  381. package/dist/utils/constants.js.map +1 -0
  382. package/dist/utils/functions.d.ts +228 -0
  383. package/dist/utils/functions.js +476 -0
  384. package/dist/utils/functions.js.map +1 -1
  385. package/dist/utils/index.d.ts +3 -1
  386. package/dist/utils/index.js +3 -1
  387. package/dist/utils/index.js.map +1 -1
  388. package/dist/utils/jacobian.d.ts +1 -1
  389. package/dist/utils/jacobian.js +1 -1
  390. package/dist/utils/jacobian.js.map +1 -1
  391. package/dist/utils/linearDistance.d.ts +8 -0
  392. package/dist/utils/linearDistance.js +10 -0
  393. package/dist/utils/linearDistance.js.map +1 -0
  394. package/package.json +4 -7
  395. package/src/body/Celestial.ts +134 -0
  396. package/src/body/Earth.ts +260 -0
  397. package/src/body/Moon.ts +556 -0
  398. package/src/body/NutationAngles.ts +40 -0
  399. package/src/body/PrecessionAngles.ts +31 -0
  400. package/src/body/Sun.ts +669 -0
  401. package/src/body/index.ts +27 -0
  402. package/src/body/suncalc.LICENSE.md +18 -0
  403. package/src/coordinate/ClassicalElements.ts +326 -0
  404. package/src/coordinate/EquinoctialElements.ts +189 -0
  405. package/src/coordinate/FormatTle.ts +214 -0
  406. package/src/coordinate/Geodetic.ts +186 -0
  407. package/src/coordinate/Hill.ts +1 -1
  408. package/src/coordinate/ITRF.ts +146 -0
  409. package/src/coordinate/J2000.ts +130 -0
  410. package/src/coordinate/RIC.ts +87 -0
  411. package/src/coordinate/RelativeState.ts +101 -0
  412. package/src/coordinate/StateVector.ts +122 -0
  413. package/src/coordinate/TEME.ts +97 -0
  414. package/src/coordinate/Tle.ts +1024 -0
  415. package/src/coordinate/index.ts +12 -0
  416. package/src/coordinate/tle-format-data.ts +47 -0
  417. package/src/covariance/CovarianceSample.ts +1 -1
  418. package/src/covariance/StateCovariance.ts +1 -1
  419. package/src/data/DataHandler.ts +88 -0
  420. package/src/data/values/Egm96Data.ts +75 -0
  421. package/src/data/values/HpAtmosphereData.ts +76 -0
  422. package/src/data/values/HpAtmosphereResult.ts +41 -0
  423. package/src/data/values/Iau1980Data.ts +63 -0
  424. package/src/data/values/LeapSecond.ts +37 -0
  425. package/src/data/values/LeapSecondData.ts +113 -0
  426. package/src/data/values/egm96.ts +728 -0
  427. package/src/data/values/hpAtmosphere.ts +79 -0
  428. package/src/data/values/iau1980.ts +32 -0
  429. package/src/enums/AngularDiameterMethod.ts +28 -0
  430. package/src/enums/AngularDistanceMethod.ts +28 -0
  431. package/src/enums/OrbitRegime.ts +31 -0
  432. package/src/enums/PassType.ts +29 -0
  433. package/src/enums/Sgp4OpsMode.ts +27 -0
  434. package/src/enums/index.ts +5 -0
  435. package/src/force/AtmosphericDrag.ts +1 -1
  436. package/src/force/EarthGravity.ts +1 -1
  437. package/src/force/Force.ts +1 -1
  438. package/src/force/ForceModel.ts +1 -1
  439. package/src/force/Gravity.ts +1 -1
  440. package/src/force/SolarRadiationPressure.ts +1 -1
  441. package/src/force/ThirdBodyGravity.ts +1 -1
  442. package/src/force/Thrust.ts +1 -1
  443. package/src/interfaces/BaseObjectParams.ts +33 -0
  444. package/src/interfaces/ClassicalElementsParams.ts +35 -0
  445. package/src/interfaces/EquinoctialElementsParams.ts +37 -0
  446. package/src/interfaces/GroundPositionParams.ts +30 -0
  447. package/src/interfaces/OmmFormat.ts +63 -0
  448. package/src/interfaces/OptionsParams.ts +3 -0
  449. package/src/interfaces/RfSensorParams.ts +1 -1
  450. package/src/interfaces/SatelliteParams.ts +20 -0
  451. package/src/interfaces/SensorParams.ts +39 -0
  452. package/src/interfaces/StarObjectParams.ts +11 -0
  453. package/src/interfaces/TimeVariables.ts +7 -0
  454. package/src/interfaces/index.ts +8 -0
  455. package/src/interpolator/ChebyshevCoefficients.ts +1 -1
  456. package/src/interpolator/ChebyshevInterpolator.ts +1 -1
  457. package/src/interpolator/CubicSpline.ts +1 -1
  458. package/src/interpolator/CubicSplineInterpolator.ts +1 -1
  459. package/src/interpolator/Interpolator.ts +1 -1
  460. package/src/interpolator/LagrangeInterpolator.ts +1 -1
  461. package/src/interpolator/StateInterpolator.ts +1 -1
  462. package/src/interpolator/VerletBlendInterpolator.ts +1 -1
  463. package/src/main.ts +11 -3
  464. package/src/maneuver/TwoBurnOrbitTransfer.ts +1 -1
  465. package/src/maneuver/Waypoint.ts +1 -1
  466. package/src/objects/BaseObject.ts +171 -0
  467. package/src/objects/DetailedSatellite.ts +3 -3
  468. package/src/objects/DetailedSensor.ts +2 -1
  469. package/src/objects/GroundObject.ts +176 -0
  470. package/src/objects/LandObject.ts +2 -1
  471. package/src/objects/Marker.ts +1 -1
  472. package/src/objects/RfSensor.ts +1 -2
  473. package/src/objects/Satellite.ts +552 -0
  474. package/src/objects/Sensor.ts +280 -0
  475. package/src/objects/Star.ts +96 -0
  476. package/src/objects/index.ts +5 -0
  477. package/src/observation/Observation.ts +1 -1
  478. package/src/observation/ObservationOptical.ts +1 -1
  479. package/src/observation/ObservationRadar.ts +1 -1
  480. package/src/observation/ObservationUtils.ts +30 -1
  481. package/src/observation/RAE.ts +262 -0
  482. package/src/observation/RadecGeocentric.ts +206 -0
  483. package/src/observation/RadecTopocentric.ts +241 -0
  484. package/src/observation/index.ts +27 -0
  485. package/src/operations/BoxMuller.ts +1 -1
  486. package/src/operations/EulerAngles.ts +1 -1
  487. package/src/operations/Matrix.ts +473 -0
  488. package/src/operations/Quaternion.ts +1 -1
  489. package/src/operations/Random.ts +54 -0
  490. package/src/operations/RandomGaussianSource.ts +1 -1
  491. package/src/operations/Vector.ts +484 -0
  492. package/src/operations/Vector3D.ts +289 -0
  493. package/src/operations/operations.ts +27 -0
  494. package/src/optimize/ChebyshevCompressor.ts +1 -1
  495. package/src/optimize/PolynomialRegression.ts +1 -1
  496. package/src/optimize/SimplexEntry.ts +1 -1
  497. package/src/orbit_determination/BatchLeastSquaresOD.ts +1 -1
  498. package/src/orbit_determination/BatchLeastSquaresResult.ts +1 -1
  499. package/src/orbit_determination/GibbsIOD.ts +3 -1
  500. package/src/orbit_determination/GoodingIOD.ts +1 -1
  501. package/src/orbit_determination/HerrickGibbsIOD.ts +1 -1
  502. package/src/orbit_determination/LambertIOD.ts +1 -1
  503. package/src/orbit_determination/ModifiedGoodingIOD.ts +1 -1
  504. package/src/orbit_determination/index.ts +7 -0
  505. package/src/propagator/KeplerPropagator.ts +1 -1
  506. package/src/propagator/Propagator.ts +1 -1
  507. package/src/propagator/RkCheckpoint.ts +1 -1
  508. package/src/propagator/RkResult.ts +1 -1
  509. package/src/propagator/RungeKutta4Propagator.ts +1 -1
  510. package/src/propagator/RungeKuttaAdaptive.ts +1 -1
  511. package/src/propagator/Sgp4Propagator.ts +1 -1
  512. package/src/sgp4/index.ts +24 -0
  513. package/src/sgp4/sgp4-error.ts +53 -0
  514. package/src/sgp4/sgp4.LICENSE.md +28 -0
  515. package/src/sgp4/sgp4.ts +3986 -0
  516. package/src/smoothing/ExponentialSmoothing.ts +1 -1
  517. package/src/time/Epoch.ts +128 -0
  518. package/src/time/EpochGPS.ts +76 -0
  519. package/src/time/EpochTAI.ts +27 -0
  520. package/src/time/EpochTDB.ts +27 -0
  521. package/src/time/EpochTT.ts +27 -0
  522. package/src/time/EpochUTC.ts +188 -0
  523. package/src/time/EpochWindow.ts +33 -0
  524. package/src/time/TimeStamped.ts +50 -0
  525. package/src/time/index.ts +31 -0
  526. package/src/transforms/TransformCache.ts +46 -0
  527. package/src/transforms/conversions.ts +98 -0
  528. package/src/transforms/index.ts +1 -0
  529. package/src/transforms/transforms.ts +478 -2
  530. package/src/types/types.ts +721 -2
  531. package/src/utils/constants.ts +113 -0
  532. package/src/utils/functions.ts +562 -0
  533. package/src/utils/index.ts +3 -1
  534. package/src/utils/jacobian.ts +1 -1
  535. package/src/utils/linearDistance.ts +11 -0
@@ -1 +1,13 @@
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 '../enums/OrbitRegime.js';
8
+ export * from './RelativeState.js';
9
+ export * from './RIC.js';
10
+ export * from './StateVector.js';
11
+ export * from './TEME.js';
12
+ export * from './Tle.js';
1
13
  export { Hill } from './Hill.js';
@@ -0,0 +1,47 @@
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:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in
13
+ * all copies or substantial portions of the Software.
14
+ *
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.
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
+ }
@@ -27,7 +27,7 @@ import {
27
27
  RIC,
28
28
  Vector,
29
29
  Vector3D,
30
- } from 'ootk-core';
30
+ } from '../main.js';
31
31
  import { ForceModel } from '../force/ForceModel.js';
32
32
  import { Thrust } from '../force/Thrust.js';
33
33
  import { RungeKutta89Propagator } from '../propagator/RungeKutta89Propagator.js';
@@ -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,88 @@
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:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in
13
+ * all copies or substantial portions of the Software.
14
+ *
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.
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 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:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in
13
+ * all copies or substantial portions of the Software.
14
+ *
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.
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)] as Egm96Entry;
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 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:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in
13
+ * all copies or substantial portions of the Software.
14
+ *
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.
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] as HpAtmosphereEntry)[0]) {
65
+ index++;
66
+ }
67
+
68
+ return new HpAtmosphereResult(
69
+ height,
70
+ (this.table_[index] as HpAtmosphereEntry),
71
+ (this.table_[index + 1] as HpAtmosphereEntry),
72
+ );
73
+ }
74
+ }
75
+
76
+ export const hpAtmosphereData = HpAtmosphereData.fromVals(hpAtmosphere);
@@ -0,0 +1,41 @@
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:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in
13
+ * all copies or substantial portions of the Software.
14
+ *
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.
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 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:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in
13
+ * all copies or substantial portions of the Software.
14
+ *
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.
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] as Iau1980Entry;
59
+ }
60
+ }
61
+
62
+ // / IAU-1980 data container.
63
+ export const iau1980Data = Iau1980Data.fromCoeffs(iau1980);
@@ -0,0 +1,37 @@
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:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in
13
+ * all copies or substantial portions of the Software.
14
+ *
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.
22
+ */
23
+
24
+ // / Leap second data.
25
+ export class LeapSecond {
26
+ // / Julian date.
27
+ jd: number;
28
+
29
+ // / Offset seconds.
30
+ offset: number;
31
+
32
+ // / Create a new [LeapSecond] object.
33
+ constructor(jd: number, offset: number) {
34
+ this.jd = jd;
35
+ this.offset = offset;
36
+ }
37
+ }
@@ -0,0 +1,113 @@
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:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in
13
+ * all copies or substantial portions of the Software.
14
+ *
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.
22
+ */
23
+
24
+ import { LeapSecond } from './LeapSecond.js';
25
+ // / Leap second value tuples.
26
+ const leapSeconds: Array<[number, number]> = [
27
+ [2441317.5, 10],
28
+ [2441499.5, 11],
29
+ [2441683.5, 12],
30
+ [2442048.5, 13],
31
+ [2442413.5, 14],
32
+ [2442778.5, 15],
33
+ [2443144.5, 16],
34
+ [2443509.5, 17],
35
+ [2443874.5, 18],
36
+ [2444239.5, 19],
37
+ [2444786.5, 20],
38
+ [2445151.5, 21],
39
+ [2445516.5, 22],
40
+ [2446247.5, 23],
41
+ [2447161.5, 24],
42
+ [2447892.5, 25],
43
+ [2448257.5, 26],
44
+ [2448804.5, 27],
45
+ [2449169.5, 28],
46
+ [2449534.5, 29],
47
+ [2450083.5, 30],
48
+ [2450630.5, 31],
49
+ [2451179.5, 32],
50
+ [2453736.5, 33],
51
+ [2454832.5, 34],
52
+ [2456109.5, 35],
53
+ [2457204.5, 36],
54
+ [2457754.5, 37],
55
+ ] as const;
56
+
57
+ // / Leap second data container.
58
+ class LeapSecondData {
59
+ private readonly offsets_: LeapSecond[];
60
+ private readonly jdFirst_: number;
61
+ private readonly jdLast_: number;
62
+ private readonly offsetFirst_: number;
63
+ private readonly offsetLast_: number;
64
+
65
+ constructor(offsets: LeapSecond[]) {
66
+ this.offsets_ = offsets;
67
+ this.jdFirst_ = (this.offsets_[0] as LeapSecond).jd;
68
+ this.jdLast_ = (this.offsets_[this.offsets_.length - 1] as LeapSecond).jd;
69
+ this.offsetFirst_ = (this.offsets_[0] as LeapSecond).offset;
70
+ this.offsetLast_ = (this.offsets_[this.offsets_.length - 1] as LeapSecond).offset;
71
+ }
72
+
73
+ /**
74
+ * Create a new [LeapSecondData] container given a list of leap second
75
+ * value tuples [vals].
76
+ * @param vals Leap second value tuples.
77
+ * @returns A new [LeapSecondData] container.
78
+ */
79
+ static fromVals(vals: [number, number][]): LeapSecondData {
80
+ const output: LeapSecond[] = [];
81
+
82
+ for (const v of vals) {
83
+ const [jd, offset] = v;
84
+
85
+ output.push(new LeapSecond(jd, offset));
86
+ }
87
+
88
+ return new LeapSecondData(output);
89
+ }
90
+
91
+ // / Return the number of leap seconds for a given Julian date [jd].
92
+ getLeapSeconds(jd: number): number {
93
+ if (jd >= this.jdLast_) {
94
+ return this.offsetLast_;
95
+ }
96
+ if (jd <= this.jdFirst_) {
97
+ return this.offsetFirst_;
98
+ }
99
+ for (let i = 0; i < this.offsets_.length - 2; i++) {
100
+ const currentLeapSecond = this.offsets_[i] as LeapSecond;
101
+ const nextLeapSecond = this.offsets_[i + 1] as LeapSecond;
102
+
103
+ if (jd >= currentLeapSecond.jd && jd < nextLeapSecond.jd) {
104
+ return currentLeapSecond.offset;
105
+ }
106
+ }
107
+
108
+ return 0;
109
+ }
110
+ }
111
+
112
+ // / Leap second data container.
113
+ export const leapSecondData: LeapSecondData = LeapSecondData.fromVals(leapSeconds);