ootk 3.0.0 → 4.0.0-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. package/.eslintrc.json +10 -10
  2. package/CHANGELOG.md +122 -0
  3. package/README.md +27 -40
  4. package/lib/coordinate/Hill.d.ts +50 -0
  5. package/lib/coordinate/Hill.js +214 -0
  6. package/lib/coordinate/Hill.js.map +1 -0
  7. package/lib/coordinate/index.d.ts +1 -0
  8. package/lib/coordinate/index.js +2 -0
  9. package/lib/coordinate/index.js.map +1 -0
  10. package/lib/covariance/CovarianceSample.d.ts +44 -0
  11. package/lib/covariance/CovarianceSample.js +146 -0
  12. package/lib/covariance/CovarianceSample.js.map +1 -0
  13. package/lib/covariance/StateCovariance.d.ts +41 -0
  14. package/lib/covariance/StateCovariance.js +62 -0
  15. package/lib/covariance/StateCovariance.js.map +1 -0
  16. package/lib/force/AtmosphericDrag.d.ts +32 -0
  17. package/lib/force/AtmosphericDrag.js +66 -0
  18. package/lib/force/AtmosphericDrag.js.map +1 -0
  19. package/lib/force/EarthGravity.d.ts +28 -0
  20. package/lib/force/EarthGravity.js +115 -0
  21. package/lib/force/EarthGravity.js.map +1 -0
  22. package/{dist/ootk.d.ts → lib/force/Force.d.ts} +10 -10
  23. package/lib/force/Force.js +30 -0
  24. package/lib/force/Force.js.map +1 -0
  25. package/lib/force/ForceModel.d.ts +38 -0
  26. package/lib/force/ForceModel.js +71 -0
  27. package/lib/force/ForceModel.js.map +1 -0
  28. package/lib/force/Gravity.d.ts +41 -0
  29. package/lib/force/Gravity.js +48 -0
  30. package/lib/force/Gravity.js.map +1 -0
  31. package/lib/force/SolarRadiationPressure.d.ts +27 -0
  32. package/lib/force/SolarRadiationPressure.js +42 -0
  33. package/lib/force/SolarRadiationPressure.js.map +1 -0
  34. package/lib/force/ThirdBodyGravity.d.ts +27 -0
  35. package/lib/force/ThirdBodyGravity.js +56 -0
  36. package/lib/force/ThirdBodyGravity.js.map +1 -0
  37. package/lib/force/Thrust.d.ts +35 -0
  38. package/lib/force/Thrust.js +53 -0
  39. package/lib/force/Thrust.js.map +1 -0
  40. package/lib/interpolator/ChebyshevCoefficients.d.ts +54 -0
  41. package/lib/interpolator/ChebyshevCoefficients.js +90 -0
  42. package/lib/interpolator/ChebyshevCoefficients.js.map +1 -0
  43. package/lib/interpolator/ChebyshevInterpolator.d.ts +39 -0
  44. package/lib/interpolator/ChebyshevInterpolator.js +71 -0
  45. package/lib/interpolator/ChebyshevInterpolator.js.map +1 -0
  46. package/lib/interpolator/CubicSpline.d.ts +36 -0
  47. package/lib/interpolator/CubicSpline.js +64 -0
  48. package/lib/interpolator/CubicSpline.js.map +1 -0
  49. package/lib/interpolator/CubicSplineInterpolator.d.ts +37 -0
  50. package/lib/interpolator/CubicSplineInterpolator.js +78 -0
  51. package/lib/interpolator/CubicSplineInterpolator.js.map +1 -0
  52. package/lib/interpolator/FieldInterpolator.d.ts +26 -0
  53. package/lib/interpolator/FieldInterpolator.js +31 -0
  54. package/lib/interpolator/FieldInterpolator.js.map +1 -0
  55. package/lib/interpolator/Interpolator.d.ts +23 -0
  56. package/lib/interpolator/Interpolator.js +48 -0
  57. package/lib/interpolator/Interpolator.js.map +1 -0
  58. package/lib/interpolator/LagrangeInterpolator.d.ts +42 -0
  59. package/lib/interpolator/LagrangeInterpolator.js +156 -0
  60. package/lib/interpolator/LagrangeInterpolator.js.map +1 -0
  61. package/lib/interpolator/StateInterpolator.d.ts +29 -0
  62. package/lib/interpolator/StateInterpolator.js +37 -0
  63. package/lib/interpolator/StateInterpolator.js.map +1 -0
  64. package/lib/interpolator/VerletBlendInterpolator.d.ts +44 -0
  65. package/lib/interpolator/VerletBlendInterpolator.js +115 -0
  66. package/lib/interpolator/VerletBlendInterpolator.js.map +1 -0
  67. package/lib/maneuver/TwoBurnOrbitTransfer.d.ts +43 -0
  68. package/lib/maneuver/TwoBurnOrbitTransfer.js +62 -0
  69. package/lib/maneuver/TwoBurnOrbitTransfer.js.map +1 -0
  70. package/lib/maneuver/Waypoint.d.ts +66 -0
  71. package/lib/maneuver/Waypoint.js +152 -0
  72. package/lib/maneuver/Waypoint.js.map +1 -0
  73. package/lib/objects/DetailedSatellite.d.ts +94 -0
  74. package/lib/objects/DetailedSatellite.js +140 -0
  75. package/lib/objects/DetailedSatellite.js.map +1 -0
  76. package/lib/objects/DetailedSensor.d.ts +43 -0
  77. package/lib/objects/DetailedSensor.js +45 -0
  78. package/lib/objects/DetailedSensor.js.map +1 -0
  79. package/{dist/objects/space-object.d.ts → lib/objects/LandObject.d.ts} +19 -21
  80. package/lib/objects/LandObject.js +28 -0
  81. package/lib/objects/LandObject.js.map +1 -0
  82. package/lib/objects/Marker.d.ts +21 -0
  83. package/lib/objects/Marker.js +25 -0
  84. package/lib/objects/Marker.js.map +1 -0
  85. package/lib/objects/index.d.ts +5 -4
  86. package/lib/objects/index.js +5 -4
  87. package/lib/objects/index.js.map +1 -1
  88. package/lib/observation/Observation.d.ts +51 -0
  89. package/lib/observation/Observation.js +71 -0
  90. package/lib/observation/Observation.js.map +1 -0
  91. package/lib/observation/ObservationOptical.d.ts +47 -0
  92. package/lib/observation/ObservationOptical.js +101 -0
  93. package/lib/observation/ObservationOptical.js.map +1 -0
  94. package/lib/observation/ObservationRadar.d.ts +43 -0
  95. package/lib/observation/ObservationRadar.js +90 -0
  96. package/lib/observation/ObservationRadar.js.map +1 -0
  97. package/lib/observation/ObservationUtils.d.ts +21 -0
  98. package/lib/observation/ObservationUtils.js +33 -0
  99. package/lib/observation/ObservationUtils.js.map +1 -0
  100. package/lib/observation/PropagatorPairs.d.ts +31 -0
  101. package/lib/observation/PropagatorPairs.js +40 -0
  102. package/lib/observation/PropagatorPairs.js.map +1 -0
  103. package/lib/ootk.d.ts +10 -8
  104. package/lib/ootk.js +10 -8
  105. package/lib/ootk.js.map +1 -1
  106. package/lib/operations/BoxMuller.d.ts +41 -0
  107. package/lib/operations/BoxMuller.js +66 -0
  108. package/lib/operations/BoxMuller.js.map +1 -0
  109. package/lib/operations/EulerAngles.d.ts +50 -0
  110. package/lib/operations/EulerAngles.js +111 -0
  111. package/lib/operations/EulerAngles.js.map +1 -0
  112. package/lib/operations/Quaternion.d.ts +57 -0
  113. package/lib/operations/Quaternion.js +164 -0
  114. package/lib/operations/Quaternion.js.map +1 -0
  115. package/lib/operations/RandomGaussianSource.d.ts +25 -0
  116. package/lib/operations/RandomGaussianSource.js +43 -0
  117. package/lib/operations/RandomGaussianSource.js.map +1 -0
  118. package/lib/operations/index.d.ts +4 -0
  119. package/lib/operations/index.js +5 -0
  120. package/lib/operations/index.js.map +1 -0
  121. package/lib/optimize/ChebyshevCompressor.d.ts +31 -0
  122. package/lib/optimize/ChebyshevCompressor.js +80 -0
  123. package/lib/optimize/ChebyshevCompressor.js.map +1 -0
  124. package/lib/optimize/DownhillSimplex.d.ts +50 -0
  125. package/lib/optimize/DownhillSimplex.js +168 -0
  126. package/lib/optimize/DownhillSimplex.js.map +1 -0
  127. package/lib/optimize/GoldenSection.d.ts +33 -0
  128. package/lib/optimize/GoldenSection.js +49 -0
  129. package/lib/optimize/GoldenSection.js.map +1 -0
  130. package/lib/optimize/PolynomialRegression.d.ts +37 -0
  131. package/lib/optimize/PolynomialRegression.js +66 -0
  132. package/lib/optimize/PolynomialRegression.js.map +1 -0
  133. package/lib/optimize/PolynomicalRegressionResult.d.ts +28 -0
  134. package/lib/optimize/PolynomicalRegressionResult.js +32 -0
  135. package/lib/optimize/PolynomicalRegressionResult.js.map +1 -0
  136. package/lib/optimize/SimpleLinearRegression.d.ts +41 -0
  137. package/lib/optimize/SimpleLinearRegression.js +107 -0
  138. package/lib/optimize/SimpleLinearRegression.js.map +1 -0
  139. package/lib/optimize/SimplexEntry.d.ts +33 -0
  140. package/lib/optimize/SimplexEntry.js +39 -0
  141. package/lib/optimize/SimplexEntry.js.map +1 -0
  142. package/lib/orbit_determination/BatchLeastSquaresOD.d.ts +54 -0
  143. package/lib/orbit_determination/BatchLeastSquaresOD.js +118 -0
  144. package/lib/orbit_determination/BatchLeastSquaresOD.js.map +1 -0
  145. package/lib/orbit_determination/BatchLeastSquaresResult.d.ts +29 -0
  146. package/lib/orbit_determination/BatchLeastSquaresResult.js +31 -0
  147. package/lib/orbit_determination/BatchLeastSquaresResult.js.map +1 -0
  148. package/lib/orbit_determination/GibbsIOD.d.ts +33 -0
  149. package/lib/orbit_determination/GibbsIOD.js +70 -0
  150. package/lib/orbit_determination/GibbsIOD.js.map +1 -0
  151. package/lib/orbit_determination/GoodingIOD.d.ts +52 -0
  152. package/lib/orbit_determination/GoodingIOD.js +244 -0
  153. package/lib/orbit_determination/GoodingIOD.js.map +1 -0
  154. package/lib/{objects/space-object.d.ts → orbit_determination/HerrickGibbsIOD.d.ts} +17 -22
  155. package/lib/orbit_determination/HerrickGibbsIOD.js +49 -0
  156. package/lib/orbit_determination/HerrickGibbsIOD.js.map +1 -0
  157. package/lib/orbit_determination/LambertIOD.d.ts +46 -0
  158. package/lib/orbit_determination/LambertIOD.js +199 -0
  159. package/lib/orbit_determination/LambertIOD.js.map +1 -0
  160. package/lib/orbit_determination/ModifiedGoodingIOD.d.ts +41 -0
  161. package/lib/orbit_determination/ModifiedGoodingIOD.js +82 -0
  162. package/lib/orbit_determination/ModifiedGoodingIOD.js.map +1 -0
  163. package/lib/propagator/DormandPrince54Propagator.d.ts +29 -0
  164. package/lib/propagator/DormandPrince54Propagator.js +68 -0
  165. package/lib/propagator/DormandPrince54Propagator.js.map +1 -0
  166. package/lib/propagator/KeplerPropagator.d.ts +36 -0
  167. package/lib/propagator/KeplerPropagator.js +81 -0
  168. package/lib/propagator/KeplerPropagator.js.map +1 -0
  169. package/lib/propagator/Propagator.d.ts +35 -0
  170. package/lib/propagator/Propagator.js +163 -0
  171. package/lib/propagator/Propagator.js.map +1 -0
  172. package/lib/propagator/RkCheckpoint.d.ts +23 -0
  173. package/lib/propagator/RkCheckpoint.js +26 -0
  174. package/lib/propagator/RkCheckpoint.js.map +1 -0
  175. package/lib/propagator/RkResult.d.ts +24 -0
  176. package/lib/propagator/RkResult.js +28 -0
  177. package/lib/propagator/RkResult.js.map +1 -0
  178. package/lib/propagator/RungeKutta4Propagator.d.ts +46 -0
  179. package/lib/propagator/RungeKutta4Propagator.js +132 -0
  180. package/lib/propagator/RungeKutta4Propagator.js.map +1 -0
  181. package/lib/propagator/RungeKutta89Propagator.d.ts +29 -0
  182. package/lib/propagator/RungeKutta89Propagator.js +130 -0
  183. package/lib/propagator/RungeKutta89Propagator.js.map +1 -0
  184. package/lib/propagator/RungeKuttaAdaptive.d.ts +52 -0
  185. package/lib/propagator/RungeKuttaAdaptive.js +152 -0
  186. package/lib/propagator/RungeKuttaAdaptive.js.map +1 -0
  187. package/lib/propagator/Sgp4Propagator.d.ts +35 -0
  188. package/lib/propagator/Sgp4Propagator.js +55 -0
  189. package/lib/propagator/Sgp4Propagator.js.map +1 -0
  190. package/lib/smoothing/ExponentialSmoothing.d.ts +24 -0
  191. package/lib/smoothing/ExponentialSmoothing.js +82 -0
  192. package/lib/smoothing/ExponentialSmoothing.js.map +1 -0
  193. package/lib/types/types.d.ts +65 -584
  194. package/lib/types/types.js +21 -33
  195. package/lib/types/types.js.map +1 -1
  196. package/package.json +16 -14
  197. package/.prettierrc +0 -17
  198. package/babel.config.js +0 -16
  199. package/codecov.yml +0 -21
  200. package/dist/objects/base-object.d.ts +0 -40
  201. package/dist/objects/detailed-sat.d.ts +0 -66
  202. package/dist/objects/index.d.ts +0 -4
  203. package/dist/objects/sat.d.ts +0 -92
  204. package/dist/objects/sensor.d.ts +0 -93
  205. package/dist/objects/star.d.ts +0 -46
  206. package/dist/ootk.js +0 -2
  207. package/dist/ootk.js.LICENSE.txt +0 -77
  208. package/dist/sgp4/sgp4.d.ts +0 -82
  209. package/dist/tle/tle-format-data.d.ts +0 -6
  210. package/dist/tle/tle.d.ts +0 -375
  211. package/dist/transforms/transforms.d.ts +0 -94
  212. package/dist/types/types.d.ts +0 -605
  213. package/dist/utils/constants.d.ts +0 -34
  214. package/dist/utils/moon-math.d.ts +0 -113
  215. package/dist/utils/sun-math.d.ts +0 -230
  216. package/dist/utils/utils.d.ts +0 -39
  217. package/lib/objects/base-object.d.ts +0 -40
  218. package/lib/objects/base-object.js +0 -79
  219. package/lib/objects/base-object.js.map +0 -1
  220. package/lib/objects/detailed-sat.d.ts +0 -66
  221. package/lib/objects/detailed-sat.js +0 -149
  222. package/lib/objects/detailed-sat.js.map +0 -1
  223. package/lib/objects/sat.d.ts +0 -92
  224. package/lib/objects/sat.js +0 -188
  225. package/lib/objects/sat.js.map +0 -1
  226. package/lib/objects/sensor.d.ts +0 -93
  227. package/lib/objects/sensor.js +0 -273
  228. package/lib/objects/sensor.js.map +0 -1
  229. package/lib/objects/space-object.js +0 -60
  230. package/lib/objects/space-object.js.map +0 -1
  231. package/lib/objects/star.d.ts +0 -46
  232. package/lib/objects/star.js +0 -91
  233. package/lib/objects/star.js.map +0 -1
  234. package/lib/sgp4/sgp4.d.ts +0 -82
  235. package/lib/sgp4/sgp4.js +0 -3262
  236. package/lib/sgp4/sgp4.js.map +0 -1
  237. package/lib/tle/tle-format-data.d.ts +0 -6
  238. package/lib/tle/tle-format-data.js +0 -10
  239. package/lib/tle/tle-format-data.js.map +0 -1
  240. package/lib/tle/tle.d.ts +0 -375
  241. package/lib/tle/tle.js +0 -611
  242. package/lib/tle/tle.js.map +0 -1
  243. package/lib/transforms/transforms.d.ts +0 -94
  244. package/lib/transforms/transforms.js +0 -308
  245. package/lib/transforms/transforms.js.map +0 -1
  246. package/lib/utils/constants.d.ts +0 -34
  247. package/lib/utils/constants.js +0 -35
  248. package/lib/utils/constants.js.map +0 -1
  249. package/lib/utils/moon-math.d.ts +0 -113
  250. package/lib/utils/moon-math.js +0 -387
  251. package/lib/utils/moon-math.js.map +0 -1
  252. package/lib/utils/sun-math.d.ts +0 -230
  253. package/lib/utils/sun-math.js +0 -422
  254. package/lib/utils/sun-math.js.map +0 -1
  255. package/lib/utils/utils.d.ts +0 -39
  256. package/lib/utils/utils.js +0 -102
  257. package/lib/utils/utils.js.map +0 -1
  258. package/sandbox.html +0 -8
  259. package/tsconfig.base.json +0 -31
  260. package/tsconfig.build.json +0 -14
  261. /package/{LICENSE.MD → LICENSE.md} +0 -0
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @author @thkruz Theodore Kruczek
3
+ *
4
+ * @license AGPL-3.0-or-later
5
+ * @Copyright (c) 2020-2024 Theodore Kruczek
6
+ *
7
+ * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
8
+ * terms of the GNU Affero General Public License as published by the Free Software
9
+ * Foundation, either version 3 of the License, or (at your option) any later version.
10
+ *
11
+ * Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
12
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ * See the GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License along with
16
+ * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ import { EpochUTC, J2000 } from 'ootk-core';
19
+ import { ForceModel } from '../force/ForceModel';
20
+ import { Thrust } from '../force/Thrust';
21
+ import { VerletBlendInterpolator } from '../interpolator/VerletBlendInterpolator';
22
+ import { Propagator } from './Propagator';
23
+ export declare class RungeKutta4Propagator extends Propagator {
24
+ private _initState;
25
+ private _forceModel;
26
+ private _stepSize;
27
+ private _cacheState;
28
+ private _checkpoints;
29
+ /**
30
+ * Create a new [RungeKutta4Propagator] object from an initial state vector and
31
+ * along with an optional [ForceModel] and [stepSize] in seconds.
32
+ */
33
+ constructor(_initState: J2000, _forceModel?: ForceModel, _stepSize?: number, _cacheState?: J2000, _checkpoints?: J2000[]);
34
+ setStepSize(seconds: number): void;
35
+ setForceModel(forceModel: ForceModel): void;
36
+ ephemerisManeuver(start: EpochUTC, finish: EpochUTC, maneuvers: Thrust[], interval?: number): VerletBlendInterpolator;
37
+ maneuver(maneuver: Thrust, interval?: number): J2000[];
38
+ private _kFn;
39
+ private _integrate;
40
+ propagate(epoch: EpochUTC): J2000;
41
+ reset(): void;
42
+ get state(): J2000;
43
+ checkpoint(): number;
44
+ clearCheckpoints(): void;
45
+ restore(index: number): void;
46
+ }
@@ -0,0 +1,132 @@
1
+ /**
2
+ * @author @thkruz Theodore Kruczek
3
+ *
4
+ * @license AGPL-3.0-or-later
5
+ * @Copyright (c) 2020-2024 Theodore Kruczek
6
+ *
7
+ * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
8
+ * terms of the GNU Affero General Public License as published by the Free Software
9
+ * Foundation, either version 3 of the License, or (at your option) any later version.
10
+ *
11
+ * Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
12
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ * See the GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License along with
16
+ * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ import { J2000, Vector } from 'ootk-core';
19
+ import { ForceModel } from '../force/ForceModel';
20
+ import { VerletBlendInterpolator } from '../interpolator/VerletBlendInterpolator';
21
+ import { Propagator } from './Propagator';
22
+ // / Runge-Kutta 4 fixed numerical propagator.
23
+ export class RungeKutta4Propagator extends Propagator {
24
+ /**
25
+ * Create a new [RungeKutta4Propagator] object from an initial state vector and
26
+ * along with an optional [ForceModel] and [stepSize] in seconds.
27
+ */
28
+ constructor(_initState, _forceModel = new ForceModel().setGravity(), _stepSize = 15.0, _cacheState = _initState, _checkpoints = []) {
29
+ super();
30
+ this._initState = _initState;
31
+ this._forceModel = _forceModel;
32
+ this._stepSize = _stepSize;
33
+ this._cacheState = _cacheState;
34
+ this._checkpoints = _checkpoints;
35
+ this._stepSize = Math.abs(_stepSize);
36
+ }
37
+ // / Set the integrator step size to the provided number of [seconds].
38
+ setStepSize(seconds) {
39
+ this._stepSize = Math.abs(seconds);
40
+ }
41
+ // / Set numerical integration force model.
42
+ setForceModel(forceModel) {
43
+ this._forceModel = forceModel;
44
+ }
45
+ ephemerisManeuver(start, finish, maneuvers, interval = 60.0) {
46
+ const tMvr = maneuvers.slice(0).filter((mvr) => mvr.start >= start || mvr.stop <= finish);
47
+ const ephemeris = [];
48
+ if (tMvr[0].start > start) {
49
+ ephemeris.push(this.propagate(start));
50
+ }
51
+ for (const mvr of tMvr) {
52
+ while (this._cacheState.epoch < mvr.start) {
53
+ const step = Math.min(mvr.start.difference(this._cacheState.epoch), interval);
54
+ this.propagate(this._cacheState.epoch.roll(step));
55
+ if (this._cacheState.epoch.posix !== mvr.start.posix) {
56
+ ephemeris.push(this._cacheState);
57
+ }
58
+ }
59
+ ephemeris.push(...this.maneuver(mvr, interval));
60
+ }
61
+ while (this._cacheState.epoch.posix < finish.posix) {
62
+ const step = Math.min(finish.difference(this._cacheState.epoch), interval);
63
+ this.propagate(this._cacheState.epoch.roll(step));
64
+ ephemeris.push(this._cacheState);
65
+ }
66
+ return new VerletBlendInterpolator(ephemeris);
67
+ }
68
+ maneuver(maneuver, interval = 60.0) {
69
+ if (maneuver.isImpulsive) {
70
+ this._cacheState = maneuver.apply(this.propagate(maneuver.center));
71
+ return [this._cacheState];
72
+ }
73
+ let tState = this.propagate(maneuver.start);
74
+ this._forceModel.loadManeuver(maneuver);
75
+ const ephemeris = [tState];
76
+ while (tState.epoch < maneuver.stop) {
77
+ const step = Math.min(maneuver.stop.difference(tState.epoch), interval);
78
+ tState = this.propagate(tState.epoch.roll(step));
79
+ ephemeris.push(tState);
80
+ }
81
+ this._forceModel.clearManeuver();
82
+ return ephemeris;
83
+ }
84
+ _kFn(state, hArg, kArg) {
85
+ const epoch = state.epoch.roll(hArg);
86
+ const posvel = state.position.join(state.velocity);
87
+ const result = posvel.add(kArg);
88
+ const sample = new J2000(epoch, result.toVector3D(0), result.toVector3D(3));
89
+ return this._forceModel.derivative(sample);
90
+ }
91
+ _integrate(state, step) {
92
+ const k1 = this._kFn(state, 0, Vector.zero(6)).scale(step);
93
+ const k2 = this._kFn(state, 0.5 * step, k1.scale(0.5)).scale(step);
94
+ const k3 = this._kFn(state, 0.5 * step, k2.scale(0.5)).scale(step);
95
+ const k4 = this._kFn(state, step, k3).scale(step);
96
+ const v1 = k1;
97
+ const v2 = v1.add(k2.scale(2));
98
+ const v3 = v2.add(k3.scale(2));
99
+ const v4 = v3.add(k4);
100
+ const tNext = state.epoch.roll(step);
101
+ const posvel = state.position.join(state.velocity);
102
+ const result = posvel.add(v4.scale(1 / 6));
103
+ return new J2000(tNext, result.toVector3D(0), result.toVector3D(3));
104
+ }
105
+ propagate(epoch) {
106
+ let delta = epoch.difference(this._cacheState.epoch);
107
+ while (delta !== 0) {
108
+ const direction = delta >= 0 ? 1 : -1;
109
+ const dt = Math.min(Math.abs(delta), this._stepSize) * direction;
110
+ this._cacheState = this._integrate(this._cacheState, dt);
111
+ delta = epoch.difference(this._cacheState.epoch);
112
+ }
113
+ return this._cacheState;
114
+ }
115
+ reset() {
116
+ this._cacheState = this._initState;
117
+ }
118
+ get state() {
119
+ return this._cacheState;
120
+ }
121
+ checkpoint() {
122
+ this._checkpoints.push(this._cacheState);
123
+ return this._checkpoints.length - 1;
124
+ }
125
+ clearCheckpoints() {
126
+ this._checkpoints = [];
127
+ }
128
+ restore(index) {
129
+ this._cacheState = this._checkpoints[index];
130
+ }
131
+ }
132
+ //# sourceMappingURL=RungeKutta4Propagator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RungeKutta4Propagator.js","sourceRoot":"","sources":["../../src/propagator/RungeKutta4Propagator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @author @thkruz Theodore Kruczek
3
+ *
4
+ * @license AGPL-3.0-or-later
5
+ * @Copyright (c) 2020-2024 Theodore Kruczek
6
+ *
7
+ * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
8
+ * terms of the GNU Affero General Public License as published by the Free Software
9
+ * Foundation, either version 3 of the License, or (at your option) any later version.
10
+ *
11
+ * Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
12
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ * See the GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License along with
16
+ * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ import { RungeKuttaAdaptive } from './RungeKuttaAdaptive';
19
+ export declare class RungeKutta89Propagator extends RungeKuttaAdaptive {
20
+ private a_;
21
+ private b_;
22
+ private ch_;
23
+ private c_;
24
+ get a(): Float64Array;
25
+ get b(): Float64Array[];
26
+ get ch(): Float64Array;
27
+ get c(): Float64Array;
28
+ get order(): number;
29
+ }
@@ -0,0 +1,130 @@
1
+ /**
2
+ * @author @thkruz Theodore Kruczek
3
+ *
4
+ * @license AGPL-3.0-or-later
5
+ * @Copyright (c) 2020-2024 Theodore Kruczek
6
+ *
7
+ * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
8
+ * terms of the GNU Affero General Public License as published by the Free Software
9
+ * Foundation, either version 3 of the License, or (at your option) any later version.
10
+ *
11
+ * Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
12
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ * See the GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License along with
16
+ * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ /* eslint-disable @typescript-eslint/no-loss-of-precision */
19
+ /* eslint-disable class-methods-use-this */
20
+ import { RungeKuttaAdaptive } from './RungeKuttaAdaptive';
21
+ // / Runge-Kutta 8(9) adaptive numerical propagator.
22
+ export class RungeKutta89Propagator extends RungeKuttaAdaptive {
23
+ constructor() {
24
+ super(...arguments);
25
+ this.a_ = Float64Array.from([
26
+ 0.0, 0.3462e-1, 0.9702435063878044594828361677100617517633e-1, 0.1455365259581706689224254251565092627645, 0.561,
27
+ 0.2290079115904850126662751771814700052182, 0.5449920884095149873337248228185299947818, 0.645, 0.48375, 0.6757e-1,
28
+ 0.25, 0.6590650618730998549405331618649220295334, 0.8206, 0.9012, 1.0, 1.0,
29
+ ]);
30
+ this.b_ = [
31
+ new Float64Array(0),
32
+ Float64Array.from([0.3462e-1]),
33
+ Float64Array.from([-0.389335438857287327017042687229284478532e-1, 0.1359578945245091786499878854939346230295]),
34
+ Float64Array.from([0.3638413148954266723060635628912731569111e-1, 0.0, 0.1091523944686280016918190688673819470733]),
35
+ Float64Array.from([
36
+ 2.025763914393969636805657604282571047511, 0.0, -7.638023836496292020387602153091964592952,
37
+ 6.173259922102322383581944548809393545442,
38
+ ]),
39
+ Float64Array.from([
40
+ 0.5112275589406060872792270881648288397197e-1, 0.0, 0.0, 0.1770823794555021537929910813839068684087,
41
+ 0.80277624092225014536138698108025283759e-3,
42
+ ]),
43
+ Float64Array.from([
44
+ 0.1316006357975216279279871693164256985334, 0.0, 0.0, -0.2957276252669636417685183174672273730699,
45
+ 0.878137803564295237421124704053886667082e-1, 0.62130529752252747743214350056394300261,
46
+ ]),
47
+ Float64Array.from([
48
+ 0.7166666666666666666666666666666666666667e-1, 0.0, 0.0, 0.0, 0.0, 0.3305533578915319409260346730051472207728,
49
+ 0.2427799754418013924072986603281861125606,
50
+ ]),
51
+ Float64Array.from([
52
+ 0.71806640625e-1, 0.0, 0.0, 0.0, 0.0, 0.3294380283228177160744825466257672816401,
53
+ 0.1165190029271822839255174533742327183599, -0.34013671875e-1,
54
+ ]),
55
+ Float64Array.from([
56
+ 0.4836757646340646986611287718844085773549e-1, 0.0, 0.0, 0.0, 0.0, 0.3928989925676163974333190042057047002852e-1,
57
+ 0.1054740945890344608263649267140088017604, -0.2143865284648312665982642293830533996214e-1,
58
+ -0.1041229174627194437759832813847147895623,
59
+ ]),
60
+ Float64Array.from([
61
+ -0.2664561487201478635337289243849737340534e-1, 0.0, 0.0, 0.0, 0.0, 0.3333333333333333333333333333333333333333e-1,
62
+ -0.1631072244872467239162704487554706387141, 0.3396081684127761199487954930015522928244e-1,
63
+ 0.1572319413814626097110769806810024118077, 0.215226747803187955230353477879477037696,
64
+ ]),
65
+ Float64Array.from([
66
+ 0.3689009248708622334786359863227633989718e-1, 0.0, 0.0, 0.0, 0.0, -0.1465181576725542928653609891758501156785,
67
+ 0.2242577768172024345345469822625833796001, 0.2294405717066072637090897902753790803034e-1,
68
+ -0.35850052905728761357394424889330334334e-2, 0.8669223316444385506869203619044453906053e-1,
69
+ 0.4383840651968337846196219974168630120572,
70
+ ]),
71
+ Float64Array.from([
72
+ -0.4866012215113340846662212357570395295088, 0.0, 0.0, 0.0, 0.0, -6.304602650282852990657772792012007122988,
73
+ -0.281245618289472564778284183790118418111, -2.679019236219849057687906597489223155566,
74
+ 0.518815663924157511565311164615012522024, 1.365353187603341710683633635235238678626,
75
+ 5.885091088503946585721274891680604830712, 2.802808786272062889819965117517532194812,
76
+ ]),
77
+ Float64Array.from([
78
+ 0.4185367457753471441471025246471931649633, 0.0, 0.0, 0.0, 0.0, 6.724547581906459363100870806514855026676,
79
+ -0.425444280164611790606983409697113064616, 3.343279153001265577811816947557982637749,
80
+ 0.617081663117537759528421117507709784737, -0.929966123939932833937749523988800852013,
81
+ -6.099948804751010722472962837945508844846, -3.002206187889399044804158084895173690015,
82
+ 0.2553202529443445472336424602988558373637,
83
+ ]),
84
+ Float64Array.from([
85
+ -0.779374086122884664644623040843840506343, 0.0, 0.0, 0.0, 0.0, -13.93734253810777678786523664804936051203,
86
+ 1.252048853379357320949735183924200895136, -14.69150040801686878191527989293072091588,
87
+ -0.494705058533141685655191992136962873577, 2.242974909146236657906984549543692874755,
88
+ 13.36789380382864375813864978592679139881, 14.39665048665068644512236935340272139005,
89
+ -0.7975813331776800379127866056663258667437, 0.4409353709534277758753793068298041158235,
90
+ ]),
91
+ Float64Array.from([
92
+ 2.058051337466886442151242368989994043993, 0.0, 0.0, 0.0, 0.0, 22.35793772796803295519317565842520212899,
93
+ 0.90949810997556332745009198137971890783, 35.89110098240264104710550686568482456493,
94
+ -3.442515027624453437985000403608480262211, -4.865481358036368826566013387928704014496,
95
+ -18.90980381354342625688427480879773032857, -34.26354448030451782929251177395134170515,
96
+ 1.264756521695642578827783499806516664686, 0.0, 0.0,
97
+ ]),
98
+ ];
99
+ this.ch_ = Float64Array.from([
100
+ 0.1996996514886773085518508418098868756464e-1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
101
+ 2.191499304949330054530747099310837524864, 0.8857071848208438030833722031786358862953e-1,
102
+ 0.1140560234865965622484956605091432032674, 0.2533163805345107065564577734569651977347,
103
+ -2.056564386240941011158999594595981300493, 0.340809679901311993516009489422454381283, 0.0, 0.0,
104
+ 0.4834231373823958314376726739772871714902e-1,
105
+ ]);
106
+ this.c_ = Float64Array.from([
107
+ 0.1461197685842315252051541915018784713459e-1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
108
+ -0.391521186233133908941022826728824203081, 0.2310932500289506415909675644868993669908,
109
+ 0.1274766769992852382560589467488989175618, 0.2246434176204157731566981937082069688984,
110
+ 0.5684352689748512932705226972873692126743, 0.5825871557215827200814768021863420902155e-1,
111
+ 0.1364317403482215641609022744494239843327, 0.3057013983082797397721005067920369646664e-1, 0.0,
112
+ ]);
113
+ }
114
+ get a() {
115
+ return this.a_;
116
+ }
117
+ get b() {
118
+ return this.b_;
119
+ }
120
+ get ch() {
121
+ return this.ch_;
122
+ }
123
+ get c() {
124
+ return this.c_;
125
+ }
126
+ get order() {
127
+ return 8;
128
+ }
129
+ }
130
+ //# sourceMappingURL=RungeKutta89Propagator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RungeKutta89Propagator.js","sourceRoot":"","sources":["../../src/propagator/RungeKutta89Propagator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @author @thkruz Theodore Kruczek
3
+ *
4
+ * @license AGPL-3.0-or-later
5
+ * @Copyright (c) 2020-2024 Theodore Kruczek
6
+ *
7
+ * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
8
+ * terms of the GNU Affero General Public License as published by the Free Software
9
+ * Foundation, either version 3 of the License, or (at your option) any later version.
10
+ *
11
+ * Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
12
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ * See the GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License along with
16
+ * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ import { EpochUTC, J2000 } from 'ootk-core';
19
+ import { ForceModel } from '../force/ForceModel';
20
+ import { Thrust } from '../force/Thrust';
21
+ import { VerletBlendInterpolator } from './../interpolator/VerletBlendInterpolator';
22
+ import { Propagator } from './Propagator';
23
+ export declare abstract class RungeKuttaAdaptive extends Propagator {
24
+ private _initState;
25
+ private _forceModel;
26
+ private _tolerance;
27
+ /**
28
+ * Create a new [RungeKuttaAdaptive] object from an initial state vector
29
+ * along with an optional [ForceModel] and [tolerance].
30
+ */
31
+ constructor(_initState: J2000, _forceModel?: ForceModel, _tolerance?: number);
32
+ private _cacheState;
33
+ private readonly _checkpoints;
34
+ private _stepSize;
35
+ private static readonly _minTolerance;
36
+ protected abstract get a(): Float64Array;
37
+ protected abstract get b(): Float64Array[];
38
+ protected abstract get ch(): Float64Array;
39
+ protected abstract get c(): Float64Array;
40
+ protected abstract get order(): number;
41
+ get state(): J2000;
42
+ reset(): void;
43
+ setForceModel(forceModel: ForceModel): void;
44
+ private _kfn;
45
+ private _integrate;
46
+ propagate(epoch: EpochUTC): J2000;
47
+ maneuver(maneuver: Thrust, interval?: number): J2000[];
48
+ ephemerisManeuver(start: EpochUTC, finish: EpochUTC, maneuvers: Thrust[], interval?: number): VerletBlendInterpolator;
49
+ checkpoint(): number;
50
+ clearCheckpoints(): void;
51
+ restore(index: number): void;
52
+ }
@@ -0,0 +1,152 @@
1
+ /**
2
+ * @author @thkruz Theodore Kruczek
3
+ *
4
+ * @license AGPL-3.0-or-later
5
+ * @Copyright (c) 2020-2024 Theodore Kruczek
6
+ *
7
+ * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
8
+ * terms of the GNU Affero General Public License as published by the Free Software
9
+ * Foundation, either version 3 of the License, or (at your option) any later version.
10
+ *
11
+ * Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
12
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ * See the GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License along with
16
+ * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ import { J2000, Vector } from 'ootk-core';
19
+ import { ForceModel } from '../force/ForceModel';
20
+ import { VerletBlendInterpolator } from './../interpolator/VerletBlendInterpolator';
21
+ import { Propagator } from './Propagator';
22
+ import { RkCheckpoint } from './RkCheckpoint';
23
+ import { RkResult } from './RkResult';
24
+ // / Adaptive Runge-Kutta propagator base class.
25
+ export class RungeKuttaAdaptive extends Propagator {
26
+ /**
27
+ * Create a new [RungeKuttaAdaptive] object from an initial state vector
28
+ * along with an optional [ForceModel] and [tolerance].
29
+ */
30
+ constructor(_initState, _forceModel = new ForceModel().setGravity(), _tolerance = 1e-9) {
31
+ super();
32
+ this._initState = _initState;
33
+ this._forceModel = _forceModel;
34
+ this._tolerance = _tolerance;
35
+ this._checkpoints = [];
36
+ // / Integration step size _(seconds)_.
37
+ this._stepSize = 60.0;
38
+ this._cacheState = this._initState;
39
+ this._tolerance = Math.max(RungeKuttaAdaptive._minTolerance, Math.abs(_tolerance));
40
+ }
41
+ get state() {
42
+ return this._cacheState;
43
+ }
44
+ reset() {
45
+ this._cacheState = this._initState;
46
+ this._stepSize = 60.0;
47
+ }
48
+ // / Set numerical integration force model.
49
+ setForceModel(forceModel) {
50
+ this._forceModel = forceModel;
51
+ }
52
+ _kfn(epoch, rv, hArg, kArg, step) {
53
+ const t = epoch.roll(hArg * step);
54
+ const rvNew = rv.add(kArg);
55
+ const sample = new J2000(t, rvNew.toVector3D(0), rvNew.toVector3D(3));
56
+ return this._forceModel.derivative(sample).scale(step);
57
+ }
58
+ _integrate(state, step) {
59
+ const k = new Array(this.a.length).fill(Vector.origin3);
60
+ const y = state.position.join(state.velocity);
61
+ for (let i = 0; i < this.a.length; i++) {
62
+ let kArg = Vector.origin6;
63
+ if (i !== 0) {
64
+ for (let j = 0; j < i; j++) {
65
+ kArg = kArg.add(k[j].scale(this.b[i][j]));
66
+ }
67
+ }
68
+ k[i] = this._kfn(state.epoch, y, this.a[i], kArg, step);
69
+ }
70
+ let y1 = y;
71
+ let y2 = y;
72
+ for (let i = 0; i < k.length; i++) {
73
+ y1 = y1.add(k[i].scale(this.ch[i]));
74
+ y2 = y2.add(k[i].scale(this.c[i]));
75
+ }
76
+ const teVal = y1.distance(y2);
77
+ let hNew = 0.9 * step * (this._tolerance / teVal) ** (1.0 / this.order);
78
+ const hOld = Math.abs(step);
79
+ hNew = Math.max(0.2 * hOld, Math.min(5.0 * hOld, hNew));
80
+ hNew = Math.max(1e-5, Math.min(1000.0, hNew));
81
+ return new RkResult(new J2000(state.epoch.roll(step), y1.toVector3D(0), y1.toVector3D(3)), teVal, hNew);
82
+ }
83
+ propagate(epoch) {
84
+ let delta = epoch.difference(this._cacheState.epoch);
85
+ while (delta !== 0) {
86
+ const direction = delta >= 0 ? 1 : -1;
87
+ const dt = Math.min(Math.abs(delta), this._stepSize) * direction;
88
+ const result = this._integrate(this._cacheState, dt);
89
+ this._stepSize = result.newStep;
90
+ if (result.error > this._tolerance) {
91
+ continue;
92
+ }
93
+ this._cacheState = result.state;
94
+ delta = epoch.difference(this._cacheState.epoch);
95
+ }
96
+ return this._cacheState;
97
+ }
98
+ maneuver(maneuver, interval = 60.0) {
99
+ if (maneuver.isImpulsive) {
100
+ this._cacheState = maneuver.apply(this.propagate(maneuver.center));
101
+ return [this._cacheState];
102
+ }
103
+ let tState = this.propagate(maneuver.start);
104
+ this._forceModel.loadManeuver(maneuver);
105
+ const ephemeris = [tState];
106
+ while (tState.epoch < maneuver.stop) {
107
+ const step = Math.min(maneuver.stop.difference(tState.epoch), interval);
108
+ tState = this.propagate(tState.epoch.roll(step));
109
+ ephemeris.push(tState);
110
+ }
111
+ this._forceModel.clearManeuver();
112
+ return ephemeris;
113
+ }
114
+ ephemerisManeuver(start, finish, maneuvers, interval = 60.0) {
115
+ const tMvr = maneuvers.filter((mvr) => mvr.start >= start || mvr.stop <= finish);
116
+ const ephemeris = [];
117
+ if (tMvr[0].start > start) {
118
+ ephemeris.push(this.propagate(start));
119
+ }
120
+ for (const mvr of tMvr) {
121
+ while (this._cacheState.epoch < mvr.start) {
122
+ const step = Math.min(mvr.start.difference(this._cacheState.epoch), interval);
123
+ this.propagate(this._cacheState.epoch.roll(step));
124
+ if (this._cacheState.epoch.posix !== mvr.start.posix) {
125
+ ephemeris.push(this._cacheState);
126
+ }
127
+ }
128
+ ephemeris.push(...this.maneuver(mvr, interval));
129
+ }
130
+ while (this._cacheState.epoch.posix < finish.posix) {
131
+ const step = Math.min(finish.difference(this._cacheState.epoch), interval);
132
+ this.propagate(this._cacheState.epoch.roll(step));
133
+ ephemeris.push(this._cacheState);
134
+ }
135
+ return new VerletBlendInterpolator(ephemeris);
136
+ }
137
+ checkpoint() {
138
+ this._checkpoints.push(new RkCheckpoint(this._cacheState, this._stepSize));
139
+ return this._checkpoints.length - 1;
140
+ }
141
+ clearCheckpoints() {
142
+ this._checkpoints.length = 0;
143
+ }
144
+ restore(index) {
145
+ const checkpoint = this._checkpoints[index];
146
+ this._cacheState = checkpoint.cacheState;
147
+ this._stepSize = checkpoint.stepSize;
148
+ }
149
+ }
150
+ // / Minimum allowable local error tolerance.
151
+ RungeKuttaAdaptive._minTolerance = 1e-15;
152
+ //# sourceMappingURL=RungeKuttaAdaptive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RungeKuttaAdaptive.js","sourceRoot":"","sources":["../../src/propagator/RungeKuttaAdaptive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @author @thkruz Theodore Kruczek
3
+ *
4
+ * @license AGPL-3.0-or-later
5
+ * @Copyright (c) 2020-2024 Theodore Kruczek
6
+ *
7
+ * Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
8
+ * terms of the GNU Affero General Public License as published by the Free Software
9
+ * Foundation, either version 3 of the License, or (at your option) any later version.
10
+ *
11
+ * Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
12
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ * See the GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License along with
16
+ * Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ import { EpochUTC, J2000, TLE } from 'ootk-core';
19
+ import { Thrust } from '../force/Thrust';
20
+ import { VerletBlendInterpolator } from '../interpolator/VerletBlendInterpolator';
21
+ import { Propagator } from './Propagator';
22
+ export declare class Sgp4Propagator extends Propagator {
23
+ private tle;
24
+ constructor(tle: TLE);
25
+ private _cacheState;
26
+ private _checkpoints;
27
+ get state(): J2000;
28
+ ephemerisManeuver(start: EpochUTC, finish: EpochUTC, maneuvers: Thrust[], interval?: number): VerletBlendInterpolator;
29
+ maneuver(maneuver: Thrust, interval?: number): J2000[];
30
+ propagate(epoch: EpochUTC): J2000;
31
+ reset(): void;
32
+ checkpoint(): number;
33
+ clearCheckpoints(): void;
34
+ restore(index: number): void;
35
+ }