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
package/README.md CHANGED
@@ -1,10 +1,8 @@
1
1
  # ootk
2
2
 
3
- [![build](https://img.shields.io/github/workflow/status/thkruz/ootk/CI?style=flat-square)](https://github.com/thkruz/ootk/actions?query=workflow%3ACI)
4
3
  ![Size](https://img.shields.io/github/languages/code-size/thkruz/ootk?style=flat-square)
5
4
  [![Release](https://img.shields.io/github/v/release/thkruz/ootk?style=flat-square)](https://www.npmjs.com/package/ootk)
6
5
  [![Issues](https://img.shields.io/github/issues/thkruz/ootk?style=flat-square)](https://github.com/thkruz/ootk/issues)
7
- [![Coverage](https://img.shields.io/codecov/c/github/thkruz/ootk?style=flat-square)](https://codecov.io/gh/thkruz/ootk)
8
6
  [![License](https://img.shields.io/github/license/thkruz/ootk?style=flat-square)](LICENSE.MD)
9
7
 
10
8
  > An Orbital Object Toolkit in Your Web Browser
@@ -15,19 +13,6 @@ developed to simplify the math and let you focus on using the results.
15
13
  Most of the functionality was originally written for [KeepTrack](https://github.com/thkruz/keeptrack.space) and then
16
14
  later refactored into this library for others to use.
17
15
 
18
- ## :blue_book: Table of Contents
19
-
20
- - [Installation](#Installation)
21
- - [Usage](#Usage)
22
- - [Loading the Library](#Loading-the-Library)
23
- - [Propagating a TLE](#Propagating-a-TLE)
24
- - [Creating a Satellite](#Creating-a-Satellite)
25
- - [Creating a Sensor](#Creating-a-Sensor)
26
- - [Contributing](#Contributing)
27
- - [Building](#Building)
28
- - [Contributors](#Contributors)
29
- - [License](#License)
30
-
31
16
  ## :wrench: Installation
32
17
 
33
18
  Install the library with [NPM](https://www.npmjs.com/):
@@ -0,0 +1,96 @@
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
+ import { AzEl, Degrees, Radians } from '../main.js';
24
+ /**
25
+ * Celestial is a static class that provides methods for calculating the position of celestial objects such as the Sun,
26
+ * Moon, and planets in the sky. To create an instance of a Celestial object, use the Star class.
27
+ */
28
+ export declare class Celestial {
29
+ private constructor();
30
+ /**
31
+ * Calculates the azimuth and elevation of a celestial object at a given date, latitude,
32
+ * longitude, right ascension, and declination.
33
+ * @param date - The date for which to calculate the azimuth and elevation.
34
+ * @param lat - The latitude of the observer.
35
+ * @param lon - The longitude of the observer.
36
+ * @param ra - The right ascension of the celestial object.
37
+ * @param dec - The declination of the celestial object.
38
+ * @returns An object containing the azimuth and elevation in degrees.
39
+ */
40
+ static azEl(date: Date, lat: Degrees, lon: Degrees, ra: Radians, dec: Radians): AzEl<Degrees>;
41
+ /**
42
+ * Atmospheric refraction in astronomy, refers to the bending of light as it passes through the Earth's
43
+ * atmosphere. This effect is most noticeable for celestial objects like stars and planets when they are
44
+ * close to the horizon. Here's a breakdown of how it works:
45
+ *
46
+ * Actual Position: Due to this bending of light, the apparent position of a celestial object is slightly
47
+ * different from its true position in the sky. When a star or planet is near the horizon, the effect is more
48
+ * pronounced because the light path passes through more of the Earth's atmosphere, which increases the amount of
49
+ * bending.
50
+ *
51
+ * A familiar example of atmospheric refraction is observed during sunrise and sunset. The Sun appears to
52
+ * be above the horizon when it is actually just below it. This is because the light from the Sun is bent
53
+ * upwards as it passes through the atmosphere.
54
+ * @param h - elevation
55
+ * @returns refraction
56
+ */
57
+ static atmosphericRefraction(h: Radians): Radians;
58
+ /**
59
+ * Calculate the declination. Similar to latitude on Earth, declination is another celestial coordinate.
60
+ * It measures how far north or south an object is from the celestial equator
61
+ * @param l - ecliptic longitude
62
+ * @param b - ecliptic latitude
63
+ * @returns declination
64
+ */
65
+ static declination(l: number, b: number): Radians;
66
+ /**
67
+ * Calculate the right ascension. This is a celestial coordinate used to determine the position of objects
68
+ * in the sky. It's analogous to longitude on Earth. Right Ascension indicates how far east an object is
69
+ * from the vernal equinox along the celestial equator.
70
+ * @param l - ecliptic longitude
71
+ * @param b - ecliptic latitude
72
+ * @returns right ascension
73
+ */
74
+ static rightAscension(l: number, b: number): Radians;
75
+ /**
76
+ * Calculate the elevation. Elevation, or altitude, is the angle between an object in the sky and the
77
+ * observer's local horizon. It's commonly expressed in degrees, where 0 degrees is right at the horizon
78
+ * and 90 degrees is directly overhead (the zenith), but we are using radians to support trigonometric
79
+ * functions like Math.sin() and Math.cos().
80
+ * @param H - siderealTime
81
+ * @param phi - latitude
82
+ * @param dec - The declination of the sun
83
+ * @returns elevation
84
+ */
85
+ static elevation(H: number, phi: Radians, dec: Radians): Radians;
86
+ /**
87
+ * Calculate the azimuth. This is a compass direction measurement. Azimuth measures the angle along
88
+ * the horizon from a specific reference direction (usually true north) to the point where a vertical
89
+ * line from the object intersects the horizon.
90
+ * @param H - siderealTime
91
+ * @param phi - latitude
92
+ * @param dec - The declination of the sun
93
+ * @returns azimuth in rad
94
+ */
95
+ static azimuth(H: number, phi: Radians, dec: Radians): Radians;
96
+ }
@@ -0,0 +1,124 @@
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
+ import { RAD2DEG, Sun } from '../main.js';
24
+ /**
25
+ * Celestial is a static class that provides methods for calculating the position of celestial objects such as the Sun,
26
+ * Moon, and planets in the sky. To create an instance of a Celestial object, use the Star class.
27
+ */
28
+ export class Celestial {
29
+ constructor() {
30
+ // disable constructor
31
+ }
32
+ /**
33
+ * Calculates the azimuth and elevation of a celestial object at a given date, latitude,
34
+ * longitude, right ascension, and declination.
35
+ * @param date - The date for which to calculate the azimuth and elevation.
36
+ * @param lat - The latitude of the observer.
37
+ * @param lon - The longitude of the observer.
38
+ * @param ra - The right ascension of the celestial object.
39
+ * @param dec - The declination of the celestial object.
40
+ * @returns An object containing the azimuth and elevation in degrees.
41
+ */
42
+ static azEl(date, lat, lon, ra, dec) {
43
+ const c = {
44
+ ra,
45
+ dec,
46
+ dist: 0,
47
+ };
48
+ const azEl = Sun.azEl(date, lat, lon, c);
49
+ const el = (azEl.el + Celestial.atmosphericRefraction(azEl.el)); // elevation correction for refraction
50
+ return {
51
+ az: (azEl.az * RAD2DEG),
52
+ el: (el * RAD2DEG),
53
+ };
54
+ }
55
+ /**
56
+ * Atmospheric refraction in astronomy, refers to the bending of light as it passes through the Earth's
57
+ * atmosphere. This effect is most noticeable for celestial objects like stars and planets when they are
58
+ * close to the horizon. Here's a breakdown of how it works:
59
+ *
60
+ * Actual Position: Due to this bending of light, the apparent position of a celestial object is slightly
61
+ * different from its true position in the sky. When a star or planet is near the horizon, the effect is more
62
+ * pronounced because the light path passes through more of the Earth's atmosphere, which increases the amount of
63
+ * bending.
64
+ *
65
+ * A familiar example of atmospheric refraction is observed during sunrise and sunset. The Sun appears to
66
+ * be above the horizon when it is actually just below it. This is because the light from the Sun is bent
67
+ * upwards as it passes through the atmosphere.
68
+ * @param h - elevation
69
+ * @returns refraction
70
+ */
71
+ static atmosphericRefraction(h) {
72
+ if (h < 0) {
73
+ h = 0;
74
+ }
75
+ return (0.0002967 / Math.tan(h + 0.00312536 / (h + 0.08901179)));
76
+ }
77
+ /**
78
+ * Calculate the declination. Similar to latitude on Earth, declination is another celestial coordinate.
79
+ * It measures how far north or south an object is from the celestial equator
80
+ * @param l - ecliptic longitude
81
+ * @param b - ecliptic latitude
82
+ * @returns declination
83
+ */
84
+ static declination(l, b) {
85
+ return Math.asin(Math.sin(b) * Math.cos(Sun.e) + Math.cos(b) * Math.sin(Sun.e) * Math.sin(l));
86
+ }
87
+ /**
88
+ * Calculate the right ascension. This is a celestial coordinate used to determine the position of objects
89
+ * in the sky. It's analogous to longitude on Earth. Right Ascension indicates how far east an object is
90
+ * from the vernal equinox along the celestial equator.
91
+ * @param l - ecliptic longitude
92
+ * @param b - ecliptic latitude
93
+ * @returns right ascension
94
+ */
95
+ static rightAscension(l, b) {
96
+ return Math.atan2(Math.sin(l) * Math.cos(Sun.e) - Math.tan(b) * Math.sin(Sun.e), Math.cos(l));
97
+ }
98
+ /**
99
+ * Calculate the elevation. Elevation, or altitude, is the angle between an object in the sky and the
100
+ * observer's local horizon. It's commonly expressed in degrees, where 0 degrees is right at the horizon
101
+ * and 90 degrees is directly overhead (the zenith), but we are using radians to support trigonometric
102
+ * functions like Math.sin() and Math.cos().
103
+ * @param H - siderealTime
104
+ * @param phi - latitude
105
+ * @param dec - The declination of the sun
106
+ * @returns elevation
107
+ */
108
+ static elevation(H, phi, dec) {
109
+ return Math.asin(Math.sin(phi) * Math.sin(dec) + Math.cos(phi) * Math.cos(dec) * Math.cos(H));
110
+ }
111
+ /**
112
+ * Calculate the azimuth. This is a compass direction measurement. Azimuth measures the angle along
113
+ * the horizon from a specific reference direction (usually true north) to the point where a vertical
114
+ * line from the object intersects the horizon.
115
+ * @param H - siderealTime
116
+ * @param phi - latitude
117
+ * @param dec - The declination of the sun
118
+ * @returns azimuth in rad
119
+ */
120
+ static azimuth(H, phi, dec) {
121
+ return (Math.PI + Math.atan2(Math.sin(H), Math.cos(H) * Math.sin(phi) - Math.tan(dec) * Math.cos(phi)));
122
+ }
123
+ }
124
+ //# sourceMappingURL=Celestial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Celestial.js","sourceRoot":"","sources":["../../src/body/Celestial.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
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
+ import { EpochUTC, Kilometers, RadiansPerSecond, Vector3D } from '../main.js';
24
+ import { NutationAngles } from './NutationAngles.js';
25
+ import { PrecessionAngles } from './PrecessionAngles.js';
26
+ export declare class Earth {
27
+ private constructor();
28
+ static readonly mu: number;
29
+ static readonly radiusEquator: Kilometers;
30
+ static readonly flattening: number;
31
+ static readonly radiusPolar: Kilometers;
32
+ static readonly radiusMean: Kilometers;
33
+ static readonly eccentricitySquared: number;
34
+ static readonly j2: number;
35
+ static readonly j3: number;
36
+ static readonly j4: number;
37
+ static readonly j5: number;
38
+ static readonly j6: number;
39
+ static readonly rotation: Vector3D<RadiansPerSecond>;
40
+ static smaToMeanMotion(semimajorAxis: Kilometers): RadiansPerSecond;
41
+ /**
42
+ * Converts revolutions per day to semi-major axis.
43
+ * @param rpd - The number of revolutions per day.
44
+ * @returns The semi-major axis value.
45
+ */
46
+ static revsPerDayToSma(rpd: number): number;
47
+ static precession(epoch: EpochUTC): PrecessionAngles;
48
+ static nutation(epoch: EpochUTC): NutationAngles;
49
+ static smaToDrift(semimajorAxis: number): number;
50
+ static smaToDriftDegrees(semimajorAxis: number): number;
51
+ static driftToSemimajorAxis(driftRate: number): number;
52
+ static driftDegreesToSma(driftRate: number): number;
53
+ /**
54
+ * Calculates the diameter of the Earth based on the satellite position.
55
+ * @param satPos The position of the satellite.
56
+ * @returns The diameter of the Earth.
57
+ */
58
+ static diameter(satPos: Vector3D): number;
59
+ private static readonly zetaPoly_;
60
+ private static readonly thetaPoly_;
61
+ private static readonly zedPoly_;
62
+ private static readonly moonAnomPoly_;
63
+ private static readonly sunAnomPoly_;
64
+ private static readonly moonLatPoly_;
65
+ private static readonly sunElongPoly_;
66
+ private static readonly moonRaanPoly_;
67
+ private static readonly meanEpsilonPoly_;
68
+ }
@@ -0,0 +1,198 @@
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
+ import { angularDiameter, AngularDiameterMethod, asec2rad, DataHandler, DEG2RAD, earthGravityParam, evalPoly, RAD2DEG, secondsPerDay, secondsPerSiderealDay, TAU, ttasec2rad, Vector3D, } from '../main.js';
24
+ // / Earth metrics and operations.
25
+ export class Earth {
26
+ constructor() {
27
+ // disable constructor
28
+ }
29
+ // / Earth gravitational parameter _(km²/s³)_.
30
+ static mu = earthGravityParam;
31
+ // / Earth equatorial radius.
32
+ static radiusEquator = 6378.1363;
33
+ // / Earth coefficient of flattening _(unitless)_.
34
+ static flattening = 1.0 / 298.257223563;
35
+ // / Earth polar radius.
36
+ static radiusPolar = (Earth.radiusEquator * (1.0 - Earth.flattening));
37
+ // / Earth mean radius.
38
+ static radiusMean = ((2.0 * Earth.radiusEquator + Earth.radiusPolar) / 3.0);
39
+ // / Earth eccentricity squared _(unitless)_.
40
+ static eccentricitySquared = Earth.flattening * (2.0 - Earth.flattening);
41
+ // / Earth J2 effect coefficient _(unitless)_.
42
+ static j2 = 1.08262668355315e-3;
43
+ // / Earth J3 effect coefficient _(unitless)_.
44
+ static j3 = -2.53265648533224e-6;
45
+ // / Earth J4 effect coefficient _(unitless)_.
46
+ static j4 = -1.619621591367e-6;
47
+ // / Earth J5 effect coefficient _(unitless)_.
48
+ static j5 = -2.27296082868698e-7;
49
+ // / Earth J6 effect coefficient _(unitless)_.
50
+ static j6 = 5.40681239107085e-7;
51
+ // / Earth rotation vector _(rad/s)_.
52
+ static rotation = new Vector3D(0, 0, 7.292115146706979e-5);
53
+ // / Calculate mean motion _(rad/s)_ from a given [semimajorAxis] _(km)_.
54
+ static smaToMeanMotion(semimajorAxis) {
55
+ return Math.sqrt(Earth.mu / (semimajorAxis * semimajorAxis * semimajorAxis));
56
+ }
57
+ /**
58
+ * Converts revolutions per day to semi-major axis.
59
+ * @param rpd - The number of revolutions per day.
60
+ * @returns The semi-major axis value.
61
+ */
62
+ static revsPerDayToSma(rpd) {
63
+ return Earth.mu ** (1 / 3) / ((TAU * rpd) / secondsPerDay) ** (2 / 3);
64
+ }
65
+ // / Calculate Earth [PrecessionAngles] at a given UTC [epoch].
66
+ static precession(epoch) {
67
+ const t = epoch.toTT().toJulianCenturies();
68
+ const zeta = evalPoly(t, Earth.zetaPoly_);
69
+ const theta = evalPoly(t, Earth.thetaPoly_);
70
+ const zed = evalPoly(t, Earth.zedPoly_);
71
+ return { zeta: zeta, theta: theta, zed: zed };
72
+ }
73
+ // / Calculate Earth [NutationAngles] for a given UTC [epoch].
74
+ static nutation(epoch) {
75
+ const t = epoch.toTT().toJulianCenturies();
76
+ const moonAnom = evalPoly(t, Earth.moonAnomPoly_);
77
+ const sunAnom = evalPoly(t, Earth.sunAnomPoly_);
78
+ const moonLat = evalPoly(t, Earth.moonLatPoly_);
79
+ const sunElong = evalPoly(t, Earth.sunElongPoly_);
80
+ const moonRaan = evalPoly(t, Earth.moonRaanPoly_);
81
+ let deltaPsi = 0.0;
82
+ let deltaEpsilon = 0.0;
83
+ const dh = DataHandler.getInstance();
84
+ for (let i = 0; i < 4; i++) {
85
+ const [a1, a2, a3, a4, a5, ai, bi, ci, di] = dh.getIau1980Coeffs(i);
86
+ const arg = a1 * moonAnom + a2 * sunAnom + a3 * moonLat + a4 * sunElong + a5 * moonRaan;
87
+ const sinC = ai + bi * t;
88
+ const cosC = ci + di * t;
89
+ deltaPsi += sinC * Math.sin(arg);
90
+ deltaEpsilon += cosC * Math.cos(arg);
91
+ }
92
+ deltaPsi *= ttasec2rad;
93
+ deltaEpsilon *= ttasec2rad;
94
+ const meanEpsilon = evalPoly(t, Earth.meanEpsilonPoly_);
95
+ const epsilon = meanEpsilon + deltaEpsilon;
96
+ const eqEq = deltaPsi * Math.cos(meanEpsilon) +
97
+ 0.00264 * asec2rad * Math.sin(moonRaan) +
98
+ 0.000063 * asec2rad * Math.sin(2.0 * moonRaan);
99
+ const gast = epoch.gmstAngle() + eqEq;
100
+ return {
101
+ dPsi: deltaPsi,
102
+ dEps: deltaEpsilon,
103
+ mEps: meanEpsilon,
104
+ eps: epsilon,
105
+ eqEq: eqEq,
106
+ gast: gast,
107
+ };
108
+ }
109
+ // / Convert a [semimajorAxis] _(km)_ to an eastward drift rate _(rad/day)_.
110
+ static smaToDrift(semimajorAxis) {
111
+ const t = (TAU * Math.sqrt(semimajorAxis ** 3 / Earth.mu)) / secondsPerSiderealDay;
112
+ return (1.0 - t) * TAU;
113
+ }
114
+ // / Convert a [semimajorAxis] _(km)_ to an eastward drift rate _(°/day)_.
115
+ static smaToDriftDegrees(semimajorAxis) {
116
+ return Earth.smaToDrift(semimajorAxis) * RAD2DEG;
117
+ }
118
+ // / Convert an eastward [driftRate] _(rad/day)_ to a semimajor-axis _(km)_.
119
+ static driftToSemimajorAxis(driftRate) {
120
+ const t = (-driftRate / TAU + 1) * secondsPerSiderealDay;
121
+ return ((Earth.mu * t * t) / (4 * Math.PI * Math.PI)) ** (1 / 3);
122
+ }
123
+ // / Convert an eastward [driftRate] _(°/day)_ to a semimajor-axis _(km)_.
124
+ static driftDegreesToSma(driftRate) {
125
+ return Earth.driftToSemimajorAxis(DEG2RAD * driftRate);
126
+ }
127
+ /**
128
+ * Calculates the diameter of the Earth based on the satellite position.
129
+ * @param satPos The position of the satellite.
130
+ * @returns The diameter of the Earth.
131
+ */
132
+ static diameter(satPos) {
133
+ return angularDiameter(Earth.radiusEquator * 2, satPos.magnitude(), AngularDiameterMethod.Sphere);
134
+ }
135
+ // / Earth precession `zeta` polynomial coefficients.
136
+ static zetaPoly_ = Float64Array.from([
137
+ 0.017998 * asec2rad,
138
+ 0.30188 * asec2rad,
139
+ 2306.2181 * asec2rad,
140
+ 0.0,
141
+ ]);
142
+ // / Earth precession `theta` polynomial coefficients.
143
+ static thetaPoly_ = Float64Array.from([
144
+ -0.041833 * asec2rad,
145
+ -0.42665 * asec2rad,
146
+ 2004.3109 * asec2rad,
147
+ 0.0,
148
+ ]);
149
+ // / Earth precession `zed` polynomial coefficients.
150
+ static zedPoly_ = Float64Array.from([
151
+ 0.018203 * asec2rad,
152
+ 1.09468 * asec2rad,
153
+ 2306.2181 * asec2rad,
154
+ 0,
155
+ ]);
156
+ static moonAnomPoly_ = Float64Array.from([
157
+ 1.4343e-5 * DEG2RAD,
158
+ 0.0088553 * DEG2RAD,
159
+ (1325.0 * 360.0 + 198.8675605) * DEG2RAD,
160
+ 134.96340251 * DEG2RAD,
161
+ ]);
162
+ // / Earth nutation Sun anomaly polynomial coefficients.
163
+ static sunAnomPoly_ = Float64Array.from([
164
+ 3.8e-8 * DEG2RAD,
165
+ -0.0001537 * DEG2RAD,
166
+ (99.0 * 360.0 + 359.0502911) * DEG2RAD,
167
+ 357.52910918 * DEG2RAD,
168
+ ]);
169
+ // / Earth nutation Moon latitude polynomial coefficients.
170
+ static moonLatPoly_ = Float64Array.from([
171
+ -2.88e-7 * DEG2RAD,
172
+ -0.003542 * DEG2RAD,
173
+ (1342.0 * 360.0 + 82.0174577) * DEG2RAD,
174
+ 93.27209062 * DEG2RAD,
175
+ ]);
176
+ // / Earth nutation Sun elongation polynomial coefficients.
177
+ static sunElongPoly_ = Float64Array.from([
178
+ 1.831e-6 * DEG2RAD,
179
+ -0.0017696 * DEG2RAD,
180
+ (1236.0 * 360.0 + 307.1114469) * DEG2RAD,
181
+ 297.85019547 * DEG2RAD,
182
+ ]);
183
+ // / Earth nutation Moon right-ascension polynomial coefficients.
184
+ static moonRaanPoly_ = Float64Array.from([
185
+ 2.139e-6 * DEG2RAD,
186
+ 0.0020756 * DEG2RAD,
187
+ -(5.0 * 360.0 + 134.1361851) * DEG2RAD,
188
+ 125.04455501 * DEG2RAD,
189
+ ]);
190
+ // / Earth nutation mean epsilon polynomial coefficients.
191
+ static meanEpsilonPoly_ = Float64Array.from([
192
+ 0.001813 * asec2rad,
193
+ -0.00059 * asec2rad,
194
+ -46.815 * asec2rad,
195
+ 84381.448 * asec2rad,
196
+ ]);
197
+ }
198
+ //# sourceMappingURL=Earth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Earth.js","sourceRoot":"","sources":["../../src/body/Earth.ts"],"names":[],"mappings":"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"}