ootk 4.0.0-0 → 4.0.0-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. package/CHANGELOG.md +142 -31
  2. package/{lib → dist}/coordinate/Hill.d.ts +17 -18
  3. package/{lib → dist}/coordinate/Hill.js +44 -36
  4. package/dist/coordinate/Hill.js.map +1 -0
  5. package/{lib → dist}/covariance/CovarianceSample.d.ts +6 -7
  6. package/{lib → dist}/covariance/CovarianceSample.js +29 -28
  7. package/dist/covariance/CovarianceSample.js.map +1 -0
  8. package/{lib → dist}/covariance/StateCovariance.d.ts +4 -3
  9. package/{lib → dist}/covariance/StateCovariance.js +8 -5
  10. package/dist/covariance/StateCovariance.js.map +1 -0
  11. package/{lib → dist}/force/AtmosphericDrag.d.ts +1 -2
  12. package/{lib → dist}/force/AtmosphericDrag.js +13 -6
  13. package/dist/force/AtmosphericDrag.js.map +1 -0
  14. package/{lib → dist}/force/EarthGravity.d.ts +1 -2
  15. package/{lib → dist}/force/EarthGravity.js +4 -2
  16. package/dist/force/EarthGravity.js.map +1 -0
  17. package/{lib → dist}/force/Force.d.ts +3 -2
  18. package/{lib → dist}/force/Force.js +3 -2
  19. package/dist/force/Force.js.map +1 -0
  20. package/{lib → dist}/force/ForceModel.d.ts +4 -5
  21. package/{lib → dist}/force/ForceModel.js +6 -2
  22. package/dist/force/ForceModel.js.map +1 -0
  23. package/{lib → dist}/force/Gravity.d.ts +1 -4
  24. package/{lib → dist}/force/Gravity.js +3 -4
  25. package/dist/force/Gravity.js.map +1 -0
  26. package/{lib → dist}/force/SolarRadiationPressure.d.ts +1 -2
  27. package/{lib → dist}/force/SolarRadiationPressure.js +6 -4
  28. package/dist/force/SolarRadiationPressure.js.map +1 -0
  29. package/{lib → dist}/force/ThirdBodyGravity.d.ts +1 -2
  30. package/{lib → dist}/force/ThirdBodyGravity.js +4 -3
  31. package/dist/force/ThirdBodyGravity.js.map +1 -0
  32. package/{lib → dist}/force/Thrust.d.ts +10 -11
  33. package/{lib → dist}/force/Thrust.js +8 -3
  34. package/dist/force/Thrust.js.map +1 -0
  35. package/dist/interfaces/RfSensorParams.d.ts +28 -0
  36. package/dist/interfaces/RfSensorParams.js +24 -0
  37. package/dist/interfaces/RfSensorParams.js.map +1 -0
  38. package/dist/interfaces/index.d.ts +1 -0
  39. package/dist/interfaces/index.js +2 -0
  40. package/dist/interfaces/index.js.map +1 -0
  41. package/{lib → dist}/interpolator/ChebyshevCoefficients.d.ts +11 -15
  42. package/{lib → dist}/interpolator/ChebyshevCoefficients.js +19 -15
  43. package/dist/interpolator/ChebyshevCoefficients.js.map +1 -0
  44. package/{lib → dist}/interpolator/ChebyshevInterpolator.d.ts +1 -2
  45. package/{lib → dist}/interpolator/ChebyshevInterpolator.js +2 -2
  46. package/dist/interpolator/ChebyshevInterpolator.js.map +1 -0
  47. package/{lib → dist}/interpolator/CubicSpline.d.ts +8 -9
  48. package/{lib → dist}/interpolator/CubicSpline.js +10 -5
  49. package/dist/interpolator/CubicSpline.js.map +1 -0
  50. package/{lib → dist}/interpolator/CubicSplineInterpolator.d.ts +2 -3
  51. package/{lib → dist}/interpolator/CubicSplineInterpolator.js +6 -4
  52. package/dist/interpolator/CubicSplineInterpolator.js.map +1 -0
  53. package/{lib → dist}/interpolator/FieldInterpolator.d.ts +7 -5
  54. package/{lib → dist}/interpolator/FieldInterpolator.js +6 -3
  55. package/dist/interpolator/FieldInterpolator.js.map +1 -0
  56. package/{lib → dist}/interpolator/Interpolator.d.ts +1 -2
  57. package/{lib → dist}/interpolator/Interpolator.js +1 -2
  58. package/dist/interpolator/Interpolator.js.map +1 -0
  59. package/{lib → dist}/interpolator/LagrangeInterpolator.d.ts +8 -10
  60. package/{lib → dist}/interpolator/LagrangeInterpolator.js +32 -29
  61. package/dist/interpolator/LagrangeInterpolator.js.map +1 -0
  62. package/{lib → dist}/interpolator/StateInterpolator.d.ts +2 -4
  63. package/{lib → dist}/interpolator/StateInterpolator.js +2 -4
  64. package/dist/interpolator/StateInterpolator.js.map +1 -0
  65. package/{lib → dist}/interpolator/VerletBlendInterpolator.d.ts +4 -5
  66. package/{lib → dist}/interpolator/VerletBlendInterpolator.js +16 -13
  67. package/dist/interpolator/VerletBlendInterpolator.js.map +1 -0
  68. package/{lib/ootk.d.ts → dist/main.d.ts} +4 -2
  69. package/dist/main.js +32 -0
  70. package/dist/main.js.map +1 -0
  71. package/{lib → dist}/maneuver/TwoBurnOrbitTransfer.d.ts +5 -7
  72. package/{lib → dist}/maneuver/TwoBurnOrbitTransfer.js +6 -3
  73. package/dist/maneuver/TwoBurnOrbitTransfer.js.map +1 -0
  74. package/{lib → dist}/maneuver/Waypoint.d.ts +30 -5
  75. package/{lib → dist}/maneuver/Waypoint.js +31 -4
  76. package/dist/maneuver/Waypoint.js.map +1 -0
  77. package/{lib → dist}/objects/DetailedSatellite.d.ts +7 -31
  78. package/{lib → dist}/objects/DetailedSatellite.js +68 -72
  79. package/dist/objects/DetailedSatellite.js.map +1 -0
  80. package/{lib → dist}/objects/DetailedSensor.d.ts +1 -2
  81. package/{lib → dist}/objects/DetailedSensor.js +22 -2
  82. package/dist/objects/DetailedSensor.js.map +1 -0
  83. package/{lib → dist}/objects/LandObject.d.ts +3 -6
  84. package/{lib → dist}/objects/LandObject.js +9 -3
  85. package/dist/objects/LandObject.js.map +1 -0
  86. package/{lib → dist}/objects/Marker.d.ts +1 -2
  87. package/{lib → dist}/objects/Marker.js +1 -2
  88. package/dist/objects/Marker.js.map +1 -0
  89. package/dist/objects/RfSensor.d.ts +41 -0
  90. package/dist/objects/RfSensor.js +67 -0
  91. package/dist/objects/RfSensor.js.map +1 -0
  92. package/{lib → dist}/objects/index.d.ts +1 -1
  93. package/{lib → dist}/objects/index.js +1 -1
  94. package/dist/objects/index.js.map +1 -0
  95. package/{lib → dist}/observation/Observation.d.ts +42 -4
  96. package/{lib → dist}/observation/Observation.js +41 -10
  97. package/dist/observation/Observation.js.map +1 -0
  98. package/{lib → dist}/observation/ObservationOptical.d.ts +7 -6
  99. package/{lib → dist}/observation/ObservationOptical.js +19 -15
  100. package/dist/observation/ObservationOptical.js.map +1 -0
  101. package/{lib → dist}/observation/ObservationRadar.d.ts +7 -4
  102. package/{lib → dist}/observation/ObservationRadar.js +25 -19
  103. package/dist/observation/ObservationRadar.js.map +1 -0
  104. package/{lib → dist}/observation/ObservationUtils.d.ts +1 -2
  105. package/{lib → dist}/observation/ObservationUtils.js +1 -2
  106. package/dist/observation/ObservationUtils.js.map +1 -0
  107. package/{lib → dist}/observation/PropagatorPairs.d.ts +3 -2
  108. package/{lib → dist}/observation/PropagatorPairs.js +7 -4
  109. package/dist/observation/PropagatorPairs.js.map +1 -0
  110. package/{lib → dist}/operations/BoxMuller.d.ts +7 -2
  111. package/{lib → dist}/operations/BoxMuller.js +15 -4
  112. package/dist/operations/BoxMuller.js.map +1 -0
  113. package/dist/operations/EulerAngles.d.ts +105 -0
  114. package/{lib → dist}/operations/EulerAngles.js +72 -22
  115. package/dist/operations/EulerAngles.js.map +1 -0
  116. package/{lib → dist}/operations/Quaternion.d.ts +5 -6
  117. package/{lib → dist}/operations/Quaternion.js +12 -9
  118. package/dist/operations/Quaternion.js.map +1 -0
  119. package/{lib → dist}/operations/RandomGaussianSource.d.ts +1 -2
  120. package/{lib → dist}/operations/RandomGaussianSource.js +3 -3
  121. package/dist/operations/RandomGaussianSource.js.map +1 -0
  122. package/{lib → dist}/optimize/ChebyshevCompressor.d.ts +3 -2
  123. package/{lib → dist}/optimize/ChebyshevCompressor.js +7 -4
  124. package/dist/optimize/ChebyshevCompressor.js.map +1 -0
  125. package/{lib → dist}/optimize/DownhillSimplex.d.ts +16 -2
  126. package/{lib → dist}/optimize/DownhillSimplex.js +16 -2
  127. package/dist/optimize/DownhillSimplex.js.map +1 -0
  128. package/{lib → dist}/optimize/GoldenSection.d.ts +9 -3
  129. package/{lib → dist}/optimize/GoldenSection.js +9 -3
  130. package/dist/optimize/GoldenSection.js.map +1 -0
  131. package/{lib → dist}/optimize/PolynomialRegression.d.ts +14 -2
  132. package/{lib → dist}/optimize/PolynomialRegression.js +19 -2
  133. package/dist/optimize/PolynomialRegression.js.map +1 -0
  134. package/{lib → dist}/optimize/PolynomicalRegressionResult.d.ts +5 -2
  135. package/{lib → dist}/optimize/PolynomicalRegressionResult.js +8 -2
  136. package/dist/optimize/PolynomicalRegressionResult.js.map +1 -0
  137. package/{lib → dist}/optimize/SimpleLinearRegression.d.ts +5 -2
  138. package/{lib → dist}/optimize/SimpleLinearRegression.js +12 -7
  139. package/dist/optimize/SimpleLinearRegression.js.map +1 -0
  140. package/{lib → dist}/optimize/SimplexEntry.d.ts +1 -2
  141. package/{lib → dist}/optimize/SimplexEntry.js +5 -2
  142. package/dist/optimize/SimplexEntry.js.map +1 -0
  143. package/{lib → dist}/orbit_determination/BatchLeastSquaresOD.d.ts +14 -3
  144. package/{lib → dist}/orbit_determination/BatchLeastSquaresOD.js +29 -4
  145. package/dist/orbit_determination/BatchLeastSquaresOD.js.map +1 -0
  146. package/{lib → dist}/orbit_determination/BatchLeastSquaresResult.d.ts +4 -2
  147. package/{lib → dist}/orbit_determination/BatchLeastSquaresResult.js +7 -2
  148. package/dist/orbit_determination/BatchLeastSquaresResult.js.map +1 -0
  149. package/{lib → dist}/orbit_determination/GibbsIOD.d.ts +9 -4
  150. package/{lib → dist}/orbit_determination/GibbsIOD.js +11 -5
  151. package/dist/orbit_determination/GibbsIOD.js.map +1 -0
  152. package/{lib → dist}/orbit_determination/GoodingIOD.d.ts +21 -22
  153. package/{lib → dist}/orbit_determination/GoodingIOD.js +74 -71
  154. package/dist/orbit_determination/GoodingIOD.js.map +1 -0
  155. package/{lib → dist}/orbit_determination/HerrickGibbsIOD.d.ts +4 -4
  156. package/{lib → dist}/orbit_determination/HerrickGibbsIOD.js +3 -2
  157. package/dist/orbit_determination/HerrickGibbsIOD.js.map +1 -0
  158. package/{lib → dist}/orbit_determination/LambertIOD.d.ts +21 -8
  159. package/{lib → dist}/orbit_determination/LambertIOD.js +20 -6
  160. package/dist/orbit_determination/LambertIOD.js.map +1 -0
  161. package/{lib → dist}/orbit_determination/ModifiedGoodingIOD.d.ts +6 -7
  162. package/{lib → dist}/orbit_determination/ModifiedGoodingIOD.js +12 -11
  163. package/dist/orbit_determination/ModifiedGoodingIOD.js.map +1 -0
  164. package/{lib → dist}/propagator/DormandPrince54Propagator.d.ts +1 -2
  165. package/dist/propagator/DormandPrince54Propagator.js +64 -0
  166. package/dist/propagator/DormandPrince54Propagator.js.map +1 -0
  167. package/{lib → dist}/propagator/KeplerPropagator.d.ts +1 -2
  168. package/{lib → dist}/propagator/KeplerPropagator.js +5 -2
  169. package/{lib → dist}/propagator/KeplerPropagator.js.map +1 -1
  170. package/{lib → dist}/propagator/Propagator.d.ts +5 -6
  171. package/{lib → dist}/propagator/Propagator.js +5 -6
  172. package/dist/propagator/Propagator.js.map +1 -0
  173. package/{lib → dist}/propagator/RkCheckpoint.d.ts +1 -2
  174. package/{lib → dist}/propagator/RkCheckpoint.js +3 -2
  175. package/dist/propagator/RkCheckpoint.js.map +1 -0
  176. package/{lib → dist}/propagator/RkResult.d.ts +1 -2
  177. package/{lib → dist}/propagator/RkResult.js +4 -2
  178. package/dist/propagator/RkResult.js.map +1 -0
  179. package/{lib → dist}/propagator/RungeKutta4Propagator.d.ts +14 -10
  180. package/{lib → dist}/propagator/RungeKutta4Propagator.js +45 -36
  181. package/dist/propagator/RungeKutta4Propagator.js.map +1 -0
  182. package/{lib → dist}/propagator/RungeKutta89Propagator.d.ts +1 -2
  183. package/dist/propagator/RungeKutta89Propagator.js +126 -0
  184. package/dist/propagator/RungeKutta89Propagator.js.map +1 -0
  185. package/{lib → dist}/propagator/RungeKuttaAdaptive.d.ts +13 -11
  186. package/{lib → dist}/propagator/RungeKuttaAdaptive.js +31 -24
  187. package/dist/propagator/RungeKuttaAdaptive.js.map +1 -0
  188. package/{lib → dist}/propagator/Sgp4Propagator.d.ts +3 -4
  189. package/{lib → dist}/propagator/Sgp4Propagator.js +4 -3
  190. package/dist/propagator/Sgp4Propagator.js.map +1 -0
  191. package/{lib → dist}/smoothing/ExponentialSmoothing.d.ts +1 -2
  192. package/{lib → dist}/smoothing/ExponentialSmoothing.js +1 -2
  193. package/dist/smoothing/ExponentialSmoothing.js.map +1 -0
  194. package/dist/transforms/index.d.ts +1 -0
  195. package/dist/transforms/index.js +2 -0
  196. package/dist/transforms/index.js.map +1 -0
  197. package/dist/transforms/transforms.d.ts +58 -0
  198. package/dist/transforms/transforms.js +94 -0
  199. package/dist/transforms/transforms.js.map +1 -0
  200. package/{lib → dist}/types/types.d.ts +44 -4
  201. package/{lib → dist}/types/types.js +1 -2
  202. package/dist/types/types.js.map +1 -0
  203. package/dist/utils/functions.d.ts +8 -0
  204. package/dist/utils/functions.js +18 -0
  205. package/dist/utils/functions.js.map +1 -0
  206. package/dist/utils/index.d.ts +2 -0
  207. package/dist/utils/index.js +3 -0
  208. package/dist/utils/index.js.map +1 -0
  209. package/dist/utils/jacobian.d.ts +11 -0
  210. package/dist/utils/jacobian.js +29 -0
  211. package/dist/utils/jacobian.js.map +1 -0
  212. package/package.json +32 -42
  213. package/src/coordinate/Hill.ts +326 -0
  214. package/src/coordinate/index.ts +1 -0
  215. package/src/covariance/CovarianceSample.ts +194 -0
  216. package/src/covariance/StateCovariance.ts +69 -0
  217. package/src/force/AtmosphericDrag.ts +101 -0
  218. package/src/force/EarthGravity.ts +157 -0
  219. package/src/force/Force.ts +33 -0
  220. package/src/force/ForceModel.ts +91 -0
  221. package/src/force/Gravity.ts +53 -0
  222. package/src/force/SolarRadiationPressure.ts +42 -0
  223. package/src/force/ThirdBodyGravity.ts +62 -0
  224. package/src/force/Thrust.ts +83 -0
  225. package/src/interfaces/RfSensorParams.ts +30 -0
  226. package/src/interfaces/index.ts +1 -0
  227. package/src/interpolator/ChebyshevCoefficients.ts +109 -0
  228. package/src/interpolator/ChebyshevInterpolator.ts +87 -0
  229. package/src/interpolator/CubicSpline.ts +72 -0
  230. package/src/interpolator/CubicSplineInterpolator.ts +90 -0
  231. package/src/interpolator/FieldInterpolator.ts +37 -0
  232. package/src/interpolator/Interpolator.ts +56 -0
  233. package/src/interpolator/LagrangeInterpolator.ts +192 -0
  234. package/src/interpolator/StateInterpolator.ts +39 -0
  235. package/src/interpolator/VerletBlendInterpolator.ts +146 -0
  236. package/{lib/ootk.js → src/main.ts} +7 -3
  237. package/src/maneuver/TwoBurnOrbitTransfer.ts +79 -0
  238. package/src/maneuver/Waypoint.ts +267 -0
  239. package/src/objects/DetailedSatellite.ts +159 -0
  240. package/src/objects/DetailedSensor.ts +68 -0
  241. package/src/objects/LandObject.ts +46 -0
  242. package/src/objects/Marker.ts +25 -0
  243. package/src/objects/RfSensor.ts +78 -0
  244. package/src/objects/index.ts +5 -0
  245. package/src/observation/Observation.ts +125 -0
  246. package/src/observation/ObservationOptical.ts +146 -0
  247. package/src/observation/ObservationRadar.ts +131 -0
  248. package/src/observation/ObservationUtils.ts +40 -0
  249. package/src/observation/PropagatorPairs.ts +45 -0
  250. package/src/operations/BoxMuller.ts +87 -0
  251. package/src/operations/EulerAngles.ts +183 -0
  252. package/src/operations/Quaternion.ts +222 -0
  253. package/src/operations/RandomGaussianSource.ts +51 -0
  254. package/src/operations/index.ts +4 -0
  255. package/src/optimize/ChebyshevCompressor.ts +96 -0
  256. package/src/optimize/DownhillSimplex.ts +212 -0
  257. package/src/optimize/GoldenSection.ts +71 -0
  258. package/src/optimize/PolynomialRegression.ts +109 -0
  259. package/src/optimize/PolynomicalRegressionResult.ts +32 -0
  260. package/src/optimize/SimpleLinearRegression.ts +127 -0
  261. package/src/optimize/SimplexEntry.ts +50 -0
  262. package/src/orbit_determination/BatchLeastSquaresOD.ts +174 -0
  263. package/src/orbit_determination/BatchLeastSquaresResult.ts +33 -0
  264. package/src/orbit_determination/GibbsIOD.ts +95 -0
  265. package/src/orbit_determination/GoodingIOD.ts +380 -0
  266. package/src/orbit_determination/HerrickGibbsIOD.ts +51 -0
  267. package/src/orbit_determination/LambertIOD.ts +260 -0
  268. package/src/orbit_determination/ModifiedGoodingIOD.ts +133 -0
  269. package/src/propagator/DormandPrince54Propagator.ts +73 -0
  270. package/src/propagator/KeplerPropagator.ts +102 -0
  271. package/src/propagator/Propagator.ts +253 -0
  272. package/src/propagator/RkCheckpoint.ts +25 -0
  273. package/src/propagator/RkResult.ts +26 -0
  274. package/src/propagator/RungeKutta4Propagator.ts +179 -0
  275. package/src/propagator/RungeKutta89Propagator.ts +132 -0
  276. package/src/propagator/RungeKuttaAdaptive.ts +232 -0
  277. package/src/propagator/Sgp4Propagator.ts +71 -0
  278. package/src/smoothing/ExponentialSmoothing.ts +90 -0
  279. package/src/transforms/index.ts +1 -0
  280. package/src/transforms/transforms.ts +117 -0
  281. package/src/types/types.ts +135 -0
  282. package/src/utils/functions.ts +21 -0
  283. package/src/utils/index.ts +2 -0
  284. package/src/utils/jacobian.ts +38 -0
  285. package/.eslintrc.json +0 -244
  286. package/jest.config.ts +0 -30
  287. package/lib/coordinate/Hill.js.map +0 -1
  288. package/lib/covariance/CovarianceSample.js.map +0 -1
  289. package/lib/covariance/StateCovariance.js.map +0 -1
  290. package/lib/force/AtmosphericDrag.js.map +0 -1
  291. package/lib/force/EarthGravity.js.map +0 -1
  292. package/lib/force/Force.js.map +0 -1
  293. package/lib/force/ForceModel.js.map +0 -1
  294. package/lib/force/Gravity.js.map +0 -1
  295. package/lib/force/SolarRadiationPressure.js.map +0 -1
  296. package/lib/force/ThirdBodyGravity.js.map +0 -1
  297. package/lib/force/Thrust.js.map +0 -1
  298. package/lib/interpolator/ChebyshevCoefficients.js.map +0 -1
  299. package/lib/interpolator/ChebyshevInterpolator.js.map +0 -1
  300. package/lib/interpolator/CubicSpline.js.map +0 -1
  301. package/lib/interpolator/CubicSplineInterpolator.js.map +0 -1
  302. package/lib/interpolator/FieldInterpolator.js.map +0 -1
  303. package/lib/interpolator/Interpolator.js.map +0 -1
  304. package/lib/interpolator/LagrangeInterpolator.js.map +0 -1
  305. package/lib/interpolator/StateInterpolator.js.map +0 -1
  306. package/lib/interpolator/VerletBlendInterpolator.js.map +0 -1
  307. package/lib/maneuver/TwoBurnOrbitTransfer.js.map +0 -1
  308. package/lib/maneuver/Waypoint.js.map +0 -1
  309. package/lib/objects/DetailedSatellite.js.map +0 -1
  310. package/lib/objects/DetailedSensor.js.map +0 -1
  311. package/lib/objects/LandObject.js.map +0 -1
  312. package/lib/objects/Marker.js.map +0 -1
  313. package/lib/objects/index.js.map +0 -1
  314. package/lib/observation/Observation.js.map +0 -1
  315. package/lib/observation/ObservationOptical.js.map +0 -1
  316. package/lib/observation/ObservationRadar.js.map +0 -1
  317. package/lib/observation/ObservationUtils.js.map +0 -1
  318. package/lib/observation/PropagatorPairs.js.map +0 -1
  319. package/lib/ootk.js.map +0 -1
  320. package/lib/operations/BoxMuller.js.map +0 -1
  321. package/lib/operations/EulerAngles.d.ts +0 -50
  322. package/lib/operations/EulerAngles.js.map +0 -1
  323. package/lib/operations/Quaternion.js.map +0 -1
  324. package/lib/operations/RandomGaussianSource.js.map +0 -1
  325. package/lib/optimize/ChebyshevCompressor.js.map +0 -1
  326. package/lib/optimize/DownhillSimplex.js.map +0 -1
  327. package/lib/optimize/GoldenSection.js.map +0 -1
  328. package/lib/optimize/PolynomialRegression.js.map +0 -1
  329. package/lib/optimize/PolynomicalRegressionResult.js.map +0 -1
  330. package/lib/optimize/SimpleLinearRegression.js.map +0 -1
  331. package/lib/optimize/SimplexEntry.js.map +0 -1
  332. package/lib/orbit_determination/BatchLeastSquaresOD.js.map +0 -1
  333. package/lib/orbit_determination/BatchLeastSquaresResult.js.map +0 -1
  334. package/lib/orbit_determination/GibbsIOD.js.map +0 -1
  335. package/lib/orbit_determination/GoodingIOD.js.map +0 -1
  336. package/lib/orbit_determination/HerrickGibbsIOD.js.map +0 -1
  337. package/lib/orbit_determination/LambertIOD.js.map +0 -1
  338. package/lib/orbit_determination/ModifiedGoodingIOD.js.map +0 -1
  339. package/lib/propagator/DormandPrince54Propagator.js +0 -68
  340. package/lib/propagator/DormandPrince54Propagator.js.map +0 -1
  341. package/lib/propagator/Propagator.js.map +0 -1
  342. package/lib/propagator/RkCheckpoint.js.map +0 -1
  343. package/lib/propagator/RkResult.js.map +0 -1
  344. package/lib/propagator/RungeKutta4Propagator.js.map +0 -1
  345. package/lib/propagator/RungeKutta89Propagator.js +0 -130
  346. package/lib/propagator/RungeKutta89Propagator.js.map +0 -1
  347. package/lib/propagator/RungeKuttaAdaptive.js.map +0 -1
  348. package/lib/propagator/Sgp4Propagator.js.map +0 -1
  349. package/lib/smoothing/ExponentialSmoothing.js.map +0 -1
  350. package/lib/types/types.js.map +0 -1
  351. /package/{lib → dist}/coordinate/index.d.ts +0 -0
  352. /package/{lib → dist}/coordinate/index.js +0 -0
  353. /package/{lib → dist}/coordinate/index.js.map +0 -0
  354. /package/{lib → dist}/operations/index.d.ts +0 -0
  355. /package/{lib → dist}/operations/index.js +0 -0
  356. /package/{lib → dist}/operations/index.js.map +0 -0
@@ -1,8 +1,7 @@
1
1
  /**
2
2
  * @author @thkruz Theodore Kruczek
3
- *
4
3
  * @license AGPL-3.0-or-later
5
- * @Copyright (c) 2020-2024 Theodore Kruczek
4
+ * @copyright (c) 2020-2024 Theodore Kruczek
6
5
  *
7
6
  * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
8
7
  * terms of the GNU Affero General Public License as published by the Free Software
@@ -18,17 +17,21 @@
18
17
  import { EpochUTC, EpochWindow, J2000, Vector3D } from 'ootk-core';
19
18
  import { StateInterpolator } from './StateInterpolator';
20
19
  export class LagrangeInterpolator extends StateInterpolator {
20
+ t_;
21
+ x_;
22
+ y_;
23
+ z_;
24
+ order;
21
25
  constructor(t, x, y, z, order = 10) {
22
26
  super();
23
- this._t = t;
24
- this._x = x;
25
- this._y = y;
26
- this._z = z;
27
+ this.t_ = t;
28
+ this.x_ = x;
29
+ this.y_ = y;
30
+ this.z_ = z;
27
31
  this.order = order;
28
32
  }
29
33
  /**
30
34
  * Creates a LagrangeInterpolator from an array of J2000 ephemeris data.
31
- *
32
35
  * @param ephemeris - The array of J2000 ephemeris data.
33
36
  * @param order - The order of the LagrangeInterpolator. Default is 10.
34
37
  * @returns A new LagrangeInterpolator instance.
@@ -49,25 +52,25 @@ export class LagrangeInterpolator extends StateInterpolator {
49
52
  return new LagrangeInterpolator(t, x, y, z, order);
50
53
  }
51
54
  get sizeBytes() {
52
- return (64 * 4 * this._t.length) / 8;
55
+ return (64 * 4 * this.t_.length) / 8;
53
56
  }
54
57
  interpolate(epoch) {
55
58
  if (!this.inWindow(epoch)) {
56
59
  return null;
57
60
  }
58
61
  const posix = epoch.posix;
59
- const subDex = this._slice(posix);
62
+ const subDex = this.slice_(posix);
60
63
  const start = subDex.left;
61
64
  const stop = subDex.right;
62
- const ts = this._t.subarray(start, stop);
63
- const xs = this._x.subarray(start, stop);
64
- const ys = this._y.subarray(start, stop);
65
- const zs = this._z.subarray(start, stop);
66
- const position = new Vector3D(LagrangeInterpolator._position(ts, xs, posix), LagrangeInterpolator._position(ts, ys, posix), LagrangeInterpolator._position(ts, zs, posix));
67
- const velocity = new Vector3D(LagrangeInterpolator._velocity(ts, xs, posix), LagrangeInterpolator._velocity(ts, ys, posix), LagrangeInterpolator._velocity(ts, zs, posix));
65
+ const ts = this.t_.subarray(start, stop);
66
+ const xs = this.x_.subarray(start, stop);
67
+ const ys = this.y_.subarray(start, stop);
68
+ const zs = this.z_.subarray(start, stop);
69
+ const position = new Vector3D(LagrangeInterpolator.position_(ts, xs, posix), LagrangeInterpolator.position_(ts, ys, posix), LagrangeInterpolator.position_(ts, zs, posix));
70
+ const velocity = new Vector3D(LagrangeInterpolator.velocity_(ts, xs, posix), LagrangeInterpolator.velocity_(ts, ys, posix), LagrangeInterpolator.velocity_(ts, zs, posix));
68
71
  return new J2000(epoch, position, velocity);
69
72
  }
70
- static _position(xs, ys, x) {
73
+ static position_(xs, ys, x) {
71
74
  const k = xs.length - 1;
72
75
  let result = 0.0;
73
76
  for (let j = 0; j < k; j++) {
@@ -82,7 +85,7 @@ export class LagrangeInterpolator extends StateInterpolator {
82
85
  }
83
86
  return result;
84
87
  }
85
- static _velocity(xs, ys, x) {
88
+ static velocity_(xs, ys, x) {
86
89
  const k = xs.length;
87
90
  let result = 0.0;
88
91
  for (let j = 0; j < k; j++) {
@@ -107,32 +110,32 @@ export class LagrangeInterpolator extends StateInterpolator {
107
110
  static _getClosest(target, t1, d1, t2, d2) {
108
111
  return target - t1 >= t2 - target ? d2 : d1;
109
112
  }
110
- _slice(posix) {
111
- const n = this._t.length;
112
- if (posix <= this._t[0]) {
113
+ slice_(posix) {
114
+ const n = this.t_.length;
115
+ if (posix <= this.t_[0]) {
113
116
  return { left: 0, right: this.order };
114
117
  }
115
- if (posix >= this._t[n - 1]) {
118
+ if (posix >= this.t_[n - 1]) {
116
119
  return { left: n - this.order, right: n };
117
120
  }
118
121
  let i = 0;
119
- let j = this._t.length;
122
+ let j = this.t_.length;
120
123
  let mid = 0;
121
124
  while (i < j) {
122
125
  mid = (i + j) >> 1;
123
- if (this._t[mid] === posix) {
126
+ if (this.t_[mid] === posix) {
124
127
  break;
125
128
  }
126
- if (posix < this._t[mid]) {
127
- if (mid > 0 && posix > this._t[mid - 1]) {
128
- mid = LagrangeInterpolator._getClosest(posix, this._t[mid - 1], mid - 1, this._t[mid], mid);
129
+ if (posix < this.t_[mid]) {
130
+ if (mid > 0 && posix > this.t_[mid - 1]) {
131
+ mid = LagrangeInterpolator._getClosest(posix, this.t_[mid - 1], mid - 1, this.t_[mid], mid);
129
132
  break;
130
133
  }
131
134
  j = mid;
132
135
  }
133
136
  else {
134
- if (mid < this._t.length - 1 && posix < this._t[mid + 1]) {
135
- mid = LagrangeInterpolator._getClosest(posix, this._t[mid], mid, this._t[mid + 1], mid + 1);
137
+ if (mid < this.t_.length - 1 && posix < this.t_[mid + 1]) {
138
+ mid = LagrangeInterpolator._getClosest(posix, this.t_[mid], mid, this.t_[mid + 1], mid + 1);
136
139
  break;
137
140
  }
138
141
  i = mid + 1;
@@ -150,7 +153,7 @@ export class LagrangeInterpolator extends StateInterpolator {
150
153
  return { left, right };
151
154
  }
152
155
  window() {
153
- return new EpochWindow(new EpochUTC(this._t[0]), new EpochUTC(this._t[this._t.length - 1]));
156
+ return new EpochWindow(new EpochUTC(this.t_[0]), new EpochUTC(this.t_[this.t_.length - 1]));
154
157
  }
155
158
  }
156
159
  //# sourceMappingURL=LagrangeInterpolator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LagrangeInterpolator.js","sourceRoot":"","sources":["../../src/interpolator/LagrangeInterpolator.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,7 @@
1
1
  /**
2
2
  * @author @thkruz Theodore Kruczek
3
- *
4
3
  * @license AGPL-3.0-or-later
5
- * @Copyright (c) 2020-2024 Theodore Kruczek
4
+ * @copyright (c) 2020-2024 Theodore Kruczek
6
5
  *
7
6
  * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
8
7
  * terms of the GNU Affero General Public License as published by the Free Software
@@ -20,9 +19,8 @@ import { Interpolator } from './Interpolator';
20
19
  export declare abstract class StateInterpolator extends Interpolator {
21
20
  /**
22
21
  * Interpolates the state at the given epoch.
23
- *
24
22
  * @param epoch The epoch in UTC format.
25
- * @returns The interpolated state at the given epoch, or null if interpolation is not possible.
23
+ * @throws If the interpolator has not been initialized.
26
24
  */
27
25
  interpolate(epoch: EpochUTC): J2000 | null;
28
26
  get sizeBytes(): number;
@@ -1,8 +1,7 @@
1
1
  /**
2
2
  * @author @thkruz Theodore Kruczek
3
- *
4
3
  * @license AGPL-3.0-or-later
5
- * @Copyright (c) 2020-2024 Theodore Kruczek
4
+ * @copyright (c) 2020-2024 Theodore Kruczek
6
5
  *
7
6
  * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
8
7
  * terms of the GNU Affero General Public License as published by the Free Software
@@ -22,9 +21,8 @@ import { Interpolator } from './Interpolator';
22
21
  export class StateInterpolator extends Interpolator {
23
22
  /**
24
23
  * Interpolates the state at the given epoch.
25
- *
26
24
  * @param epoch The epoch in UTC format.
27
- * @returns The interpolated state at the given epoch, or null if interpolation is not possible.
25
+ * @throws If the interpolator has not been initialized.
28
26
  */
29
27
  interpolate(epoch) {
30
28
  throw new Error('Not implemented.');
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateInterpolator.js","sourceRoot":"","sources":["../../src/interpolator/StateInterpolator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,sDAAsD;AACtD,2CAA2C;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,+CAA+C;AAC/C,MAAM,OAAgB,iBAAkB,SAAQ,YAAY;IAC1D;;;;OAIG;IACH,WAAW,CAAC,KAAe;QACzB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IAED,kEAAkE;IAClE,IAAI,SAAS;QACX,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;CACF"}
@@ -1,8 +1,7 @@
1
1
  /**
2
2
  * @author @thkruz Theodore Kruczek
3
- *
4
3
  * @license AGPL-3.0-or-later
5
- * @Copyright (c) 2020-2024 Theodore Kruczek
4
+ * @copyright (c) 2020-2024 Theodore Kruczek
6
5
  *
7
6
  * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
8
7
  * terms of the GNU Affero General Public License as published by the Free Software
@@ -33,10 +32,10 @@ export declare class VerletBlendInterpolator extends StateInterpolator {
33
32
  constructor(ephemeris: J2000[]);
34
33
  get sizeBytes(): number;
35
34
  window(): EpochWindow;
36
- private static _getClosest;
37
- private _matchState;
35
+ private static getClosest_;
36
+ private matchState_;
38
37
  private static _gravity;
39
- private static _integrate;
38
+ private static integrate_;
40
39
  interpolate(epoch: EpochUTC): J2000 | null;
41
40
  getCachedState(epoch: EpochUTC): J2000 | null;
42
41
  toCubicSpline(): CubicSplineInterpolator;
@@ -1,8 +1,7 @@
1
1
  /**
2
2
  * @author @thkruz Theodore Kruczek
3
- *
4
3
  * @license AGPL-3.0-or-later
5
- * @Copyright (c) 2020-2024 Theodore Kruczek
4
+ * @copyright (c) 2020-2024 Theodore Kruczek
6
5
  *
7
6
  * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
8
7
  * terms of the GNU Affero General Public License as published by the Free Software
@@ -15,7 +14,7 @@
15
14
  * You should have received a copy of the GNU Affero General Public License along with
16
15
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
17
16
  */
18
- import { copySign, Earth, EpochWindow, J2000 } from 'ootk-core';
17
+ import { copySign, Earth, EpochWindow, J2000, } from 'ootk-core';
19
18
  import { CubicSplineInterpolator } from './CubicSplineInterpolator';
20
19
  import { LagrangeInterpolator } from './LagrangeInterpolator';
21
20
  import { StateInterpolator } from './StateInterpolator';
@@ -29,6 +28,7 @@ import { StateInterpolator } from './StateInterpolator';
29
28
  * ephemerides.
30
29
  */
31
30
  export class VerletBlendInterpolator extends StateInterpolator {
31
+ ephemeris;
32
32
  constructor(ephemeris) {
33
33
  super();
34
34
  this.ephemeris = ephemeris;
@@ -39,10 +39,10 @@ export class VerletBlendInterpolator extends StateInterpolator {
39
39
  window() {
40
40
  return new EpochWindow(this.ephemeris[0].epoch, this.ephemeris[this.ephemeris.length - 1].epoch);
41
41
  }
42
- static _getClosest(target, s1, s2) {
42
+ static getClosest_(target, s1, s2) {
43
43
  return target - s1.epoch.posix >= s2.epoch.posix - target ? s2 : s1;
44
44
  }
45
- _matchState(epoch) {
45
+ matchState_(epoch) {
46
46
  const target = epoch.posix;
47
47
  if (target <= this.ephemeris[0].epoch.posix) {
48
48
  return this.ephemeris[0];
@@ -60,13 +60,13 @@ export class VerletBlendInterpolator extends StateInterpolator {
60
60
  }
61
61
  if (target < this.ephemeris[mid].epoch.posix) {
62
62
  if (mid > 0 && target > this.ephemeris[mid - 1].epoch.posix) {
63
- return VerletBlendInterpolator._getClosest(target, this.ephemeris[mid - 1], this.ephemeris[mid]);
63
+ return VerletBlendInterpolator.getClosest_(target, this.ephemeris[mid - 1], this.ephemeris[mid]);
64
64
  }
65
65
  j = mid;
66
66
  }
67
67
  else {
68
68
  if (mid < this.ephemeris.length - 1 && target < this.ephemeris[mid + 1].epoch.posix) {
69
- return VerletBlendInterpolator._getClosest(target, this.ephemeris[mid], this.ephemeris[mid + 1]);
69
+ return VerletBlendInterpolator.getClosest_(target, this.ephemeris[mid], this.ephemeris[mid + 1]);
70
70
  }
71
71
  i = mid + 1;
72
72
  }
@@ -77,25 +77,28 @@ export class VerletBlendInterpolator extends StateInterpolator {
77
77
  const r = position.magnitude();
78
78
  return position.scale(-Earth.mu / (r * r * r));
79
79
  }
80
- static _integrate(state, step) {
80
+ static integrate_(state, step) {
81
81
  const x0 = state.position;
82
82
  const a0 = VerletBlendInterpolator._gravity(x0);
83
83
  const v0 = state.velocity;
84
- const x1 = x0.add(v0.scale(step)).add(a0.scale(0.5 * step * step));
84
+ const x1 = x0
85
+ .add(v0.scale(step))
86
+ .add(a0.scale(0.5 * step * step));
85
87
  const a1 = VerletBlendInterpolator._gravity(x1);
86
- const v1 = v0.add(a0.add(a1).scale(0.5 * step));
88
+ const v1 = v0
89
+ .add(a0.add(a1).scale(0.5 * step));
87
90
  return new J2000(state.epoch.roll(step), x1, v1);
88
91
  }
89
92
  interpolate(epoch) {
90
93
  if (!this.inWindow(epoch)) {
91
94
  return null;
92
95
  }
93
- let state = this._matchState(epoch);
96
+ let state = this.matchState_(epoch);
94
97
  while (state.epoch.posix !== epoch.posix) {
95
98
  const delta = epoch.posix - state.epoch.posix;
96
99
  const stepMag = Math.min(5.0, Math.abs(delta));
97
100
  const stepSize = copySign(stepMag, delta);
98
- state = VerletBlendInterpolator._integrate(state, stepSize);
101
+ state = VerletBlendInterpolator.integrate_(state, stepSize);
99
102
  }
100
103
  return state;
101
104
  }
@@ -103,7 +106,7 @@ export class VerletBlendInterpolator extends StateInterpolator {
103
106
  if (!this.inWindow(epoch)) {
104
107
  return null;
105
108
  }
106
- return this._matchState(epoch);
109
+ return this.matchState_(epoch);
107
110
  }
108
111
  toCubicSpline() {
109
112
  return CubicSplineInterpolator.fromEphemeris(this.ephemeris);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerletBlendInterpolator.js","sourceRoot":"","sources":["../../src/interpolator/VerletBlendInterpolator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,QAAQ,EACR,KAAK,EAEL,WAAW,EACX,KAAK,GAKN,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;;;;;;GAQG;AACH,MAAM,OAAO,uBAAwB,SAAQ,iBAAiB;IACzC;IAAnB,YAAmB,SAAkB;QACnC,KAAK,EAAE,CAAC;QADS,cAAS,GAAT,SAAS,CAAS;IAErC,CAAC;IAED,IAAI,SAAS;QACX,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACnG,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,MAAc,EAAE,EAAS,EAAE,EAAS;QAC7D,OAAO,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,CAAC;IAEO,WAAW,CAAC,KAAe;QACjC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;QAE3B,IAAI,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE;YAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SAC1B;QACD,IAAI,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE;YACnE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAClD;QAED,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAC9B,IAAI,GAAG,GAAG,CAAC,CAAC;QAEZ,OAAO,CAAC,GAAG,CAAC,EAAE;YACZ,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;YACnB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE;gBAC9C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;aAC5B;YACD,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE;gBAC5C,IAAI,GAAG,GAAG,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE;oBAC3D,OAAO,uBAAuB,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;iBAClG;gBACD,CAAC,GAAG,GAAG,CAAC;aACT;iBAAM;gBACL,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE;oBACnF,OAAO,uBAAuB,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;iBAClG;gBACD,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;aACb;SACF;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAEO,MAAM,CAAC,QAAQ,CAAC,QAAkB;QACxC,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;QAE/B,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAEO,MAAM,CAAC,UAAU,CAAC,KAAY,EAAE,IAAa;QACnD,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC1B,MAAM,EAAE,GAAG,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAkC,CAAC;QACjF,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC1B,MAAM,EAAE,GAAG,EAAE;aACV,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAoC,CAAC;aACtD,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAoC,CAAC,CAAC;QACvE,MAAM,EAAE,GAAG,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAkC,CAAC;QACjF,MAAM,EAAE,GAAG,EAAE;aACV,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAkC,CAAC,CAAC;QAEtE,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,WAAW,CAAC,KAAe;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACzB,OAAO,IAAI,CAAC;SACb;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAEpC,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE;YACxC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAY,CAAC;YAErD,KAAK,GAAG,uBAAuB,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;SAC7D;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,cAAc,CAAC,KAAe;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACzB,OAAO,IAAI,CAAC;SACb;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,aAAa;QACX,OAAO,uBAAuB,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;IAED,UAAU,CAAC,KAAK,GAAG,EAAE;QACnB,OAAO,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC;CACF"}
@@ -2,9 +2,8 @@
2
2
  * @author @thkruz Theodore Kruczek
3
3
  * @description Orbital Object ToolKit (ootk) is a collection of tools for working
4
4
  * with satellites and other orbital objects.
5
- *
6
5
  * @license AGPL-3.0-or-later
7
- * @Copyright (c) 2020-2024 Theodore Kruczek
6
+ * @copyright (c) 2020-2024 Theodore Kruczek
8
7
  *
9
8
  * Many of the classes are based off of the work of @david-rc-dayton and his
10
9
  * Pious Squid library (https://github.com/david-rc-dayton/pious_squid).
@@ -24,4 +23,7 @@ export * from 'ootk-core';
24
23
  export * from './coordinate';
25
24
  export * from './objects';
26
25
  export * from './operations';
26
+ export * from './transforms';
27
+ export * from './interfaces';
27
28
  export * from './types/types';
29
+ export * from './utils';
package/dist/main.js ADDED
@@ -0,0 +1,32 @@
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) 2020-2024 Theodore Kruczek
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).
10
+ *
11
+ * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
12
+ * terms of the GNU Affero General Public License as published by the Free Software
13
+ * Foundation, either version 3 of the License, or (at your option) any later version.
14
+ *
15
+ * Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
16
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17
+ * See the GNU Affero General Public License for more details.
18
+ *
19
+ * You should have received a copy of the GNU Affero General Public License along with
20
+ * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
21
+ */
22
+ export * from 'ootk-core';
23
+ export * from './coordinate';
24
+ export * from './objects';
25
+ export * from './operations';
26
+ export * from './transforms';
27
+ export * from './interfaces';
28
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
29
+ // @ts-ignore
30
+ export * from './types/types';
31
+ export * from './utils';
32
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,6DAA6D;AAC7D,aAAa;AACb,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC"}
@@ -1,8 +1,7 @@
1
1
  /**
2
2
  * @author @thkruz Theodore Kruczek
3
- *
4
3
  * @license AGPL-3.0-or-later
5
- * @Copyright (c) 2020-2024 Theodore Kruczek
4
+ * @copyright (c) 2020-2024 Theodore Kruczek
6
5
  *
7
6
  * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
8
7
  * terms of the GNU Affero General Public License as published by the Free Software
@@ -15,18 +14,17 @@
15
14
  * You should have received a copy of the GNU Affero General Public License along with
16
15
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
17
16
  */
18
- import { EpochUTC } from 'ootk-core';
17
+ import { EpochUTC, Seconds, SecondsPerMeterPerSecond } from 'ootk-core';
19
18
  import { Thrust } from '../force/Thrust';
20
19
  export declare class TwoBurnOrbitTransfer {
21
20
  vInit: number;
22
21
  vFinal: number;
23
22
  vTransA: number;
24
23
  vTransB: number;
25
- tTrans: number;
26
- constructor(vInit: number, vFinal: number, vTransA: number, vTransB: number, tTrans: number);
24
+ tTrans: Seconds;
25
+ constructor(vInit: number, vFinal: number, vTransA: number, vTransB: number, tTrans: Seconds);
27
26
  /**
28
27
  * Calculates the parameters for a Hohmann transfer orbit between two circular orbits.
29
- *
30
28
  * @param rInit The initial radius of the orbit. (km)
31
29
  * @param rFinal The final radius of the orbit. (km)
32
30
  * @returns An instance of TwoBurnOrbitTransfer containing the calculated parameters.
@@ -39,5 +37,5 @@ export declare class TwoBurnOrbitTransfer {
39
37
  * @param durationRate The duration rate of the maneuver (s/m/s).
40
38
  * @returns An array containing the two thrust objects representing the maneuvers.
41
39
  */
42
- toManeuvers(epoch: EpochUTC, durationRate?: number): [Thrust, Thrust];
40
+ toManeuvers(epoch: EpochUTC, durationRate?: SecondsPerMeterPerSecond): [Thrust, Thrust];
43
41
  }
@@ -1,8 +1,7 @@
1
1
  /**
2
2
  * @author @thkruz Theodore Kruczek
3
- *
4
3
  * @license AGPL-3.0-or-later
5
- * @Copyright (c) 2020-2024 Theodore Kruczek
4
+ * @copyright (c) 2020-2024 Theodore Kruczek
6
5
  *
7
6
  * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
8
7
  * terms of the GNU Affero General Public License as published by the Free Software
@@ -19,6 +18,11 @@ import { Earth } from 'ootk-core';
19
18
  import { Thrust } from '../force/Thrust';
20
19
  // / Container for a two-burn orbit transfer.
21
20
  export class TwoBurnOrbitTransfer {
21
+ vInit;
22
+ vFinal;
23
+ vTransA;
24
+ vTransB;
25
+ tTrans;
22
26
  // / Create a new [TwoBurnOrbitTransfer] object.
23
27
  constructor(vInit, vFinal, vTransA, vTransB, tTrans) {
24
28
  this.vInit = vInit;
@@ -30,7 +34,6 @@ export class TwoBurnOrbitTransfer {
30
34
  }
31
35
  /**
32
36
  * Calculates the parameters for a Hohmann transfer orbit between two circular orbits.
33
- *
34
37
  * @param rInit The initial radius of the orbit. (km)
35
38
  * @param rFinal The final radius of the orbit. (km)
36
39
  * @returns An instance of TwoBurnOrbitTransfer containing the calculated parameters.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TwoBurnOrbitTransfer.js","sourceRoot":"","sources":["../../src/maneuver/TwoBurnOrbitTransfer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,KAAK,EAAgE,MAAM,WAAW,CAAC;AAChG,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,6CAA6C;AAC7C,MAAM,OAAO,oBAAoB;IAGtB;IACA;IACA;IACA;IACA;IANT,gDAAgD;IAChD,YACS,KAAa,EACb,MAAc,EACd,OAAe,EACf,OAAe,EACf,MAAe;QAJf,UAAK,GAAL,KAAK,CAAQ;QACb,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAAQ;QACf,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAS;QAEtB,sBAAsB;IACxB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,KAAa,EAAE,MAAc;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAY,CAAC;QAExF,OAAO,IAAI,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3E,CAAC;IAED,2EAA2E;IAC3E,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,KAAe,EAAE,eAAe,GAA+B;QACzE,MAAM,EAAE,GAAG,IAAI,MAAM,CACnB,KAAK,EACL,GAAsB,EACtB,IAAI,CAAC,OAAO,GAAG,MAAyB,EACxC,GAAsB,EACtB,YAAY,CACb,CAAC;QACF,MAAM,EAAE,GAAG,IAAI,MAAM,CACnB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EACvB,GAAsB,EACtB,IAAI,CAAC,OAAO,GAAG,MAAyB,EACxC,GAAsB,EACtB,YAAY,CACb,CAAC;QAEF,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAClB,CAAC;CACF"}
@@ -1,8 +1,7 @@
1
1
  /**
2
2
  * @author @thkruz Theodore Kruczek
3
- *
4
3
  * @license AGPL-3.0-or-later
5
- * @Copyright (c) 2020-2024 Theodore Kruczek
4
+ * @copyright (c) 2020-2024 Theodore Kruczek
6
5
  *
7
6
  * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
8
7
  * terms of the GNU Affero General Public License as published by the Free Software
@@ -15,19 +14,26 @@
15
14
  * You should have received a copy of the GNU Affero General Public License along with
16
15
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
17
16
  */
18
- import { EpochUTC, J2000, Vector3D } from 'ootk-core';
17
+ import { EpochUTC, J2000, Kilometers, Vector3D } from 'ootk-core';
19
18
  import { Thrust } from '../force/Thrust';
20
19
  import { StateInterpolator } from '../interpolator/StateInterpolator';
21
20
  import { ForceModel } from './../force/ForceModel';
22
21
  export declare class Waypoint {
23
22
  epoch: EpochUTC;
24
- relativePosition: Vector3D;
25
- constructor(epoch: EpochUTC, relativePosition: Vector3D);
23
+ relativePosition: Vector3D<Kilometers>;
24
+ constructor(epoch: EpochUTC, relativePosition: Vector3D<Kilometers>);
26
25
  /**
27
26
  * Return the perturbed error in a [maneuver] when compared against the
28
27
  * target [waypoint] given an initial [state], [forceModel],
29
28
  * [target] interpolator, and speculative relative maneuver
30
29
  * [components] _(m/s)_.
30
+ * @param waypoint The waypoint to target.
31
+ * @param maneuver The maneuver to perturb.
32
+ * @param state The initial state of the interceptor.
33
+ * @param forceModel The force model to use for propagation.
34
+ * @param target The target interpolator.
35
+ * @param components The speculative maneuver components.
36
+ * @returns The perturbed error in the maneuver.
31
37
  */
32
38
  static _error(waypoint: Waypoint, maneuver: Thrust, state: J2000, forceModel: ForceModel, target: StateInterpolator, components: Float64Array): number;
33
39
  /**
@@ -36,6 +42,12 @@ export declare class Waypoint {
36
42
  * The score function takes an array of speculative radial, intrack, and
37
43
  * crosstrack components _(m/s)_ and returns the propagated error from the
38
44
  * desired waypoint target.
45
+ * @param waypoint The waypoint to target.
46
+ * @param maneuver The maneuver to perturb.
47
+ * @param state The initial state of the interceptor.
48
+ * @param forceModel The force model to use for propagation.
49
+ * @param target The target interpolator.
50
+ * @returns A score function for refining maneuvers.
39
51
  */
40
52
  static _refineManeuverScore(waypoint: Waypoint, maneuver: Thrust, state: J2000, forceModel: ForceModel, target: StateInterpolator): (components: Float64Array) => number;
41
53
  /**
@@ -51,6 +63,19 @@ export declare class Waypoint {
51
63
  * - `refine`: refine maneuvers to account for perturbations if `true`
52
64
  * - `maxIter`: maximum refinement iterations per maneuver
53
65
  * - `printIter`: print debug information on each refinement iteration
66
+ * @param interceptor The interceptor state.
67
+ * @param pivot The epoch of the first burn.
68
+ * @param waypoints The waypoints to target.
69
+ * @param target The target interpolator.
70
+ * @param preManeuvers The maneuvers to execute before the pivot burn.
71
+ * @param postManeuvers The maneuvers to execute after the last pivot burn.
72
+ * @param root0 The optional arguments.
73
+ * @param root0.durationRate The thruster duration rate.
74
+ * @param root0.forceModel The interceptor force model.
75
+ * @param root0.refine Whether to refine maneuvers to account for perturbations.
76
+ * @param root0.maxIter The maximum refinement iterations per maneuver.
77
+ * @param root0.printIter Whether to print debug information on each refinement iteration.
78
+ * @returns An array of maneuvers.
54
79
  */
55
80
  static toManeuvers(interceptor: J2000, pivot: EpochUTC, waypoints: Waypoint[], target: StateInterpolator, preManeuvers: Thrust[] | null, postManeuvers: Thrust[] | null, { durationRate, forceModel, refine, maxIter, printIter, }?: {
56
81
  durationRate?: number;
@@ -1,8 +1,7 @@
1
1
  /**
2
2
  * @author @thkruz Theodore Kruczek
3
- *
4
3
  * @license AGPL-3.0-or-later
5
- * @Copyright (c) 2020-2024 Theodore Kruczek
4
+ * @copyright (c) 2020-2024 Theodore Kruczek
6
5
  *
7
6
  * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
8
7
  * terms of the GNU Affero General Public License as published by the Free Software
@@ -15,7 +14,7 @@
15
14
  * You should have received a copy of the GNU Affero General Public License along with
16
15
  * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
17
16
  */
18
- import { RIC, Vector3D } from 'ootk-core';
17
+ import { RIC, Vector3D, } from 'ootk-core';
19
18
  import { Thrust } from '../force/Thrust';
20
19
  import { ForceModel } from './../force/ForceModel';
21
20
  import { DownhillSimplex } from './../optimize/DownhillSimplex';
@@ -23,6 +22,8 @@ import { LambertIOD } from './../orbit_determination/LambertIOD';
23
22
  import { RungeKutta89Propagator } from './../propagator/RungeKutta89Propagator';
24
23
  // / Relative waypoint targeting.
25
24
  export class Waypoint {
25
+ epoch;
26
+ relativePosition;
26
27
  // / Create a new [Waypoint] object.
27
28
  constructor(epoch, relativePosition) {
28
29
  this.epoch = epoch;
@@ -33,6 +34,13 @@ export class Waypoint {
33
34
  * target [waypoint] given an initial [state], [forceModel],
34
35
  * [target] interpolator, and speculative relative maneuver
35
36
  * [components] _(m/s)_.
37
+ * @param waypoint The waypoint to target.
38
+ * @param maneuver The maneuver to perturb.
39
+ * @param state The initial state of the interceptor.
40
+ * @param forceModel The force model to use for propagation.
41
+ * @param target The target interpolator.
42
+ * @param components The speculative maneuver components.
43
+ * @returns The perturbed error in the maneuver.
36
44
  */
37
45
  static _error(waypoint, maneuver, state, forceModel, target, components) {
38
46
  const testManeuver = new Thrust(maneuver.center, components[0], components[1], components[2], maneuver.durationRate);
@@ -54,6 +62,12 @@ export class Waypoint {
54
62
  * The score function takes an array of speculative radial, intrack, and
55
63
  * crosstrack components _(m/s)_ and returns the propagated error from the
56
64
  * desired waypoint target.
65
+ * @param waypoint The waypoint to target.
66
+ * @param maneuver The maneuver to perturb.
67
+ * @param state The initial state of the interceptor.
68
+ * @param forceModel The force model to use for propagation.
69
+ * @param target The target interpolator.
70
+ * @returns A score function for refining maneuvers.
57
71
  */
58
72
  static _refineManeuverScore(waypoint, maneuver, state, forceModel, target) {
59
73
  return (components) => Waypoint._error(waypoint, maneuver, state, forceModel, target, components);
@@ -71,6 +85,19 @@ export class Waypoint {
71
85
  * - `refine`: refine maneuvers to account for perturbations if `true`
72
86
  * - `maxIter`: maximum refinement iterations per maneuver
73
87
  * - `printIter`: print debug information on each refinement iteration
88
+ * @param interceptor The interceptor state.
89
+ * @param pivot The epoch of the first burn.
90
+ * @param waypoints The waypoints to target.
91
+ * @param target The target interpolator.
92
+ * @param preManeuvers The maneuvers to execute before the pivot burn.
93
+ * @param postManeuvers The maneuvers to execute after the last pivot burn.
94
+ * @param root0 The optional arguments.
95
+ * @param root0.durationRate The thruster duration rate.
96
+ * @param root0.forceModel The interceptor force model.
97
+ * @param root0.refine Whether to refine maneuvers to account for perturbations.
98
+ * @param root0.maxIter The maximum refinement iterations per maneuver.
99
+ * @param root0.printIter Whether to print debug information on each refinement iteration.
100
+ * @returns An array of maneuvers.
74
101
  */
75
102
  static toManeuvers(interceptor, pivot, waypoints, target, preManeuvers, postManeuvers, { durationRate = 0.0, forceModel, refine = false, maxIter = 500, printIter = false, } = {}) {
76
103
  const preMnv = preManeuvers ?? [];
@@ -93,7 +120,7 @@ export class Waypoint {
93
120
  }
94
121
  const wpState = targetWp.toJ2000(targetState);
95
122
  const tof = wp.epoch.difference(state.epoch);
96
- const revs = Math.floor(tof / state.period());
123
+ const revs = Math.floor(tof / state.period);
97
124
  const shortPath = LambertIOD.useShortPath(state, targetState);
98
125
  const lambert = new LambertIOD();
99
126
  const components = lambert.estimate(state.position, wpState.position, state.epoch, wp.epoch, {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Waypoint.js","sourceRoot":"","sources":["../../src/maneuver/Waypoint.ts"],"names":[],"mappings":"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"}