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.
- package/CHANGELOG.md +142 -31
- package/{lib → dist}/coordinate/Hill.d.ts +17 -18
- package/{lib → dist}/coordinate/Hill.js +44 -36
- package/dist/coordinate/Hill.js.map +1 -0
- package/{lib → dist}/covariance/CovarianceSample.d.ts +6 -7
- package/{lib → dist}/covariance/CovarianceSample.js +29 -28
- package/dist/covariance/CovarianceSample.js.map +1 -0
- package/{lib → dist}/covariance/StateCovariance.d.ts +4 -3
- package/{lib → dist}/covariance/StateCovariance.js +8 -5
- package/dist/covariance/StateCovariance.js.map +1 -0
- package/{lib → dist}/force/AtmosphericDrag.d.ts +1 -2
- package/{lib → dist}/force/AtmosphericDrag.js +13 -6
- package/dist/force/AtmosphericDrag.js.map +1 -0
- package/{lib → dist}/force/EarthGravity.d.ts +1 -2
- package/{lib → dist}/force/EarthGravity.js +4 -2
- package/dist/force/EarthGravity.js.map +1 -0
- package/{lib → dist}/force/Force.d.ts +3 -2
- package/{lib → dist}/force/Force.js +3 -2
- package/dist/force/Force.js.map +1 -0
- package/{lib → dist}/force/ForceModel.d.ts +4 -5
- package/{lib → dist}/force/ForceModel.js +6 -2
- package/dist/force/ForceModel.js.map +1 -0
- package/{lib → dist}/force/Gravity.d.ts +1 -4
- package/{lib → dist}/force/Gravity.js +3 -4
- package/dist/force/Gravity.js.map +1 -0
- package/{lib → dist}/force/SolarRadiationPressure.d.ts +1 -2
- package/{lib → dist}/force/SolarRadiationPressure.js +6 -4
- package/dist/force/SolarRadiationPressure.js.map +1 -0
- package/{lib → dist}/force/ThirdBodyGravity.d.ts +1 -2
- package/{lib → dist}/force/ThirdBodyGravity.js +4 -3
- package/dist/force/ThirdBodyGravity.js.map +1 -0
- package/{lib → dist}/force/Thrust.d.ts +10 -11
- package/{lib → dist}/force/Thrust.js +8 -3
- package/dist/force/Thrust.js.map +1 -0
- package/dist/interfaces/RfSensorParams.d.ts +28 -0
- package/dist/interfaces/RfSensorParams.js +24 -0
- package/dist/interfaces/RfSensorParams.js.map +1 -0
- package/dist/interfaces/index.d.ts +1 -0
- package/dist/interfaces/index.js +2 -0
- package/dist/interfaces/index.js.map +1 -0
- package/{lib → dist}/interpolator/ChebyshevCoefficients.d.ts +11 -15
- package/{lib → dist}/interpolator/ChebyshevCoefficients.js +19 -15
- package/dist/interpolator/ChebyshevCoefficients.js.map +1 -0
- package/{lib → dist}/interpolator/ChebyshevInterpolator.d.ts +1 -2
- package/{lib → dist}/interpolator/ChebyshevInterpolator.js +2 -2
- package/dist/interpolator/ChebyshevInterpolator.js.map +1 -0
- package/{lib → dist}/interpolator/CubicSpline.d.ts +8 -9
- package/{lib → dist}/interpolator/CubicSpline.js +10 -5
- package/dist/interpolator/CubicSpline.js.map +1 -0
- package/{lib → dist}/interpolator/CubicSplineInterpolator.d.ts +2 -3
- package/{lib → dist}/interpolator/CubicSplineInterpolator.js +6 -4
- package/dist/interpolator/CubicSplineInterpolator.js.map +1 -0
- package/{lib → dist}/interpolator/FieldInterpolator.d.ts +7 -5
- package/{lib → dist}/interpolator/FieldInterpolator.js +6 -3
- package/dist/interpolator/FieldInterpolator.js.map +1 -0
- package/{lib → dist}/interpolator/Interpolator.d.ts +1 -2
- package/{lib → dist}/interpolator/Interpolator.js +1 -2
- package/dist/interpolator/Interpolator.js.map +1 -0
- package/{lib → dist}/interpolator/LagrangeInterpolator.d.ts +8 -10
- package/{lib → dist}/interpolator/LagrangeInterpolator.js +32 -29
- package/dist/interpolator/LagrangeInterpolator.js.map +1 -0
- package/{lib → dist}/interpolator/StateInterpolator.d.ts +2 -4
- package/{lib → dist}/interpolator/StateInterpolator.js +2 -4
- package/dist/interpolator/StateInterpolator.js.map +1 -0
- package/{lib → dist}/interpolator/VerletBlendInterpolator.d.ts +4 -5
- package/{lib → dist}/interpolator/VerletBlendInterpolator.js +16 -13
- package/dist/interpolator/VerletBlendInterpolator.js.map +1 -0
- package/{lib/ootk.d.ts → dist/main.d.ts} +4 -2
- package/dist/main.js +32 -0
- package/dist/main.js.map +1 -0
- package/{lib → dist}/maneuver/TwoBurnOrbitTransfer.d.ts +5 -7
- package/{lib → dist}/maneuver/TwoBurnOrbitTransfer.js +6 -3
- package/dist/maneuver/TwoBurnOrbitTransfer.js.map +1 -0
- package/{lib → dist}/maneuver/Waypoint.d.ts +30 -5
- package/{lib → dist}/maneuver/Waypoint.js +31 -4
- package/dist/maneuver/Waypoint.js.map +1 -0
- package/{lib → dist}/objects/DetailedSatellite.d.ts +7 -31
- package/{lib → dist}/objects/DetailedSatellite.js +68 -72
- package/dist/objects/DetailedSatellite.js.map +1 -0
- package/{lib → dist}/objects/DetailedSensor.d.ts +1 -2
- package/{lib → dist}/objects/DetailedSensor.js +22 -2
- package/dist/objects/DetailedSensor.js.map +1 -0
- package/{lib → dist}/objects/LandObject.d.ts +3 -6
- package/{lib → dist}/objects/LandObject.js +9 -3
- package/dist/objects/LandObject.js.map +1 -0
- package/{lib → dist}/objects/Marker.d.ts +1 -2
- package/{lib → dist}/objects/Marker.js +1 -2
- package/dist/objects/Marker.js.map +1 -0
- package/dist/objects/RfSensor.d.ts +41 -0
- package/dist/objects/RfSensor.js +67 -0
- package/dist/objects/RfSensor.js.map +1 -0
- package/{lib → dist}/objects/index.d.ts +1 -1
- package/{lib → dist}/objects/index.js +1 -1
- package/dist/objects/index.js.map +1 -0
- package/{lib → dist}/observation/Observation.d.ts +42 -4
- package/{lib → dist}/observation/Observation.js +41 -10
- package/dist/observation/Observation.js.map +1 -0
- package/{lib → dist}/observation/ObservationOptical.d.ts +7 -6
- package/{lib → dist}/observation/ObservationOptical.js +19 -15
- package/dist/observation/ObservationOptical.js.map +1 -0
- package/{lib → dist}/observation/ObservationRadar.d.ts +7 -4
- package/{lib → dist}/observation/ObservationRadar.js +25 -19
- package/dist/observation/ObservationRadar.js.map +1 -0
- package/{lib → dist}/observation/ObservationUtils.d.ts +1 -2
- package/{lib → dist}/observation/ObservationUtils.js +1 -2
- package/dist/observation/ObservationUtils.js.map +1 -0
- package/{lib → dist}/observation/PropagatorPairs.d.ts +3 -2
- package/{lib → dist}/observation/PropagatorPairs.js +7 -4
- package/dist/observation/PropagatorPairs.js.map +1 -0
- package/{lib → dist}/operations/BoxMuller.d.ts +7 -2
- package/{lib → dist}/operations/BoxMuller.js +15 -4
- package/dist/operations/BoxMuller.js.map +1 -0
- package/dist/operations/EulerAngles.d.ts +105 -0
- package/{lib → dist}/operations/EulerAngles.js +72 -22
- package/dist/operations/EulerAngles.js.map +1 -0
- package/{lib → dist}/operations/Quaternion.d.ts +5 -6
- package/{lib → dist}/operations/Quaternion.js +12 -9
- package/dist/operations/Quaternion.js.map +1 -0
- package/{lib → dist}/operations/RandomGaussianSource.d.ts +1 -2
- package/{lib → dist}/operations/RandomGaussianSource.js +3 -3
- package/dist/operations/RandomGaussianSource.js.map +1 -0
- package/{lib → dist}/optimize/ChebyshevCompressor.d.ts +3 -2
- package/{lib → dist}/optimize/ChebyshevCompressor.js +7 -4
- package/dist/optimize/ChebyshevCompressor.js.map +1 -0
- package/{lib → dist}/optimize/DownhillSimplex.d.ts +16 -2
- package/{lib → dist}/optimize/DownhillSimplex.js +16 -2
- package/dist/optimize/DownhillSimplex.js.map +1 -0
- package/{lib → dist}/optimize/GoldenSection.d.ts +9 -3
- package/{lib → dist}/optimize/GoldenSection.js +9 -3
- package/dist/optimize/GoldenSection.js.map +1 -0
- package/{lib → dist}/optimize/PolynomialRegression.d.ts +14 -2
- package/{lib → dist}/optimize/PolynomialRegression.js +19 -2
- package/dist/optimize/PolynomialRegression.js.map +1 -0
- package/{lib → dist}/optimize/PolynomicalRegressionResult.d.ts +5 -2
- package/{lib → dist}/optimize/PolynomicalRegressionResult.js +8 -2
- package/dist/optimize/PolynomicalRegressionResult.js.map +1 -0
- package/{lib → dist}/optimize/SimpleLinearRegression.d.ts +5 -2
- package/{lib → dist}/optimize/SimpleLinearRegression.js +12 -7
- package/dist/optimize/SimpleLinearRegression.js.map +1 -0
- package/{lib → dist}/optimize/SimplexEntry.d.ts +1 -2
- package/{lib → dist}/optimize/SimplexEntry.js +5 -2
- package/dist/optimize/SimplexEntry.js.map +1 -0
- package/{lib → dist}/orbit_determination/BatchLeastSquaresOD.d.ts +14 -3
- package/{lib → dist}/orbit_determination/BatchLeastSquaresOD.js +29 -4
- package/dist/orbit_determination/BatchLeastSquaresOD.js.map +1 -0
- package/{lib → dist}/orbit_determination/BatchLeastSquaresResult.d.ts +4 -2
- package/{lib → dist}/orbit_determination/BatchLeastSquaresResult.js +7 -2
- package/dist/orbit_determination/BatchLeastSquaresResult.js.map +1 -0
- package/{lib → dist}/orbit_determination/GibbsIOD.d.ts +9 -4
- package/{lib → dist}/orbit_determination/GibbsIOD.js +11 -5
- package/dist/orbit_determination/GibbsIOD.js.map +1 -0
- package/{lib → dist}/orbit_determination/GoodingIOD.d.ts +21 -22
- package/{lib → dist}/orbit_determination/GoodingIOD.js +74 -71
- package/dist/orbit_determination/GoodingIOD.js.map +1 -0
- package/{lib → dist}/orbit_determination/HerrickGibbsIOD.d.ts +4 -4
- package/{lib → dist}/orbit_determination/HerrickGibbsIOD.js +3 -2
- package/dist/orbit_determination/HerrickGibbsIOD.js.map +1 -0
- package/{lib → dist}/orbit_determination/LambertIOD.d.ts +21 -8
- package/{lib → dist}/orbit_determination/LambertIOD.js +20 -6
- package/dist/orbit_determination/LambertIOD.js.map +1 -0
- package/{lib → dist}/orbit_determination/ModifiedGoodingIOD.d.ts +6 -7
- package/{lib → dist}/orbit_determination/ModifiedGoodingIOD.js +12 -11
- package/dist/orbit_determination/ModifiedGoodingIOD.js.map +1 -0
- package/{lib → dist}/propagator/DormandPrince54Propagator.d.ts +1 -2
- package/dist/propagator/DormandPrince54Propagator.js +64 -0
- package/dist/propagator/DormandPrince54Propagator.js.map +1 -0
- package/{lib → dist}/propagator/KeplerPropagator.d.ts +1 -2
- package/{lib → dist}/propagator/KeplerPropagator.js +5 -2
- package/{lib → dist}/propagator/KeplerPropagator.js.map +1 -1
- package/{lib → dist}/propagator/Propagator.d.ts +5 -6
- package/{lib → dist}/propagator/Propagator.js +5 -6
- package/dist/propagator/Propagator.js.map +1 -0
- package/{lib → dist}/propagator/RkCheckpoint.d.ts +1 -2
- package/{lib → dist}/propagator/RkCheckpoint.js +3 -2
- package/dist/propagator/RkCheckpoint.js.map +1 -0
- package/{lib → dist}/propagator/RkResult.d.ts +1 -2
- package/{lib → dist}/propagator/RkResult.js +4 -2
- package/dist/propagator/RkResult.js.map +1 -0
- package/{lib → dist}/propagator/RungeKutta4Propagator.d.ts +14 -10
- package/{lib → dist}/propagator/RungeKutta4Propagator.js +45 -36
- package/dist/propagator/RungeKutta4Propagator.js.map +1 -0
- package/{lib → dist}/propagator/RungeKutta89Propagator.d.ts +1 -2
- package/dist/propagator/RungeKutta89Propagator.js +126 -0
- package/dist/propagator/RungeKutta89Propagator.js.map +1 -0
- package/{lib → dist}/propagator/RungeKuttaAdaptive.d.ts +13 -11
- package/{lib → dist}/propagator/RungeKuttaAdaptive.js +31 -24
- package/dist/propagator/RungeKuttaAdaptive.js.map +1 -0
- package/{lib → dist}/propagator/Sgp4Propagator.d.ts +3 -4
- package/{lib → dist}/propagator/Sgp4Propagator.js +4 -3
- package/dist/propagator/Sgp4Propagator.js.map +1 -0
- package/{lib → dist}/smoothing/ExponentialSmoothing.d.ts +1 -2
- package/{lib → dist}/smoothing/ExponentialSmoothing.js +1 -2
- package/dist/smoothing/ExponentialSmoothing.js.map +1 -0
- package/dist/transforms/index.d.ts +1 -0
- package/dist/transforms/index.js +2 -0
- package/dist/transforms/index.js.map +1 -0
- package/dist/transforms/transforms.d.ts +58 -0
- package/dist/transforms/transforms.js +94 -0
- package/dist/transforms/transforms.js.map +1 -0
- package/{lib → dist}/types/types.d.ts +44 -4
- package/{lib → dist}/types/types.js +1 -2
- package/dist/types/types.js.map +1 -0
- package/dist/utils/functions.d.ts +8 -0
- package/dist/utils/functions.js +18 -0
- package/dist/utils/functions.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/jacobian.d.ts +11 -0
- package/dist/utils/jacobian.js +29 -0
- package/dist/utils/jacobian.js.map +1 -0
- package/package.json +32 -42
- package/src/coordinate/Hill.ts +326 -0
- package/src/coordinate/index.ts +1 -0
- package/src/covariance/CovarianceSample.ts +194 -0
- package/src/covariance/StateCovariance.ts +69 -0
- package/src/force/AtmosphericDrag.ts +101 -0
- package/src/force/EarthGravity.ts +157 -0
- package/src/force/Force.ts +33 -0
- package/src/force/ForceModel.ts +91 -0
- package/src/force/Gravity.ts +53 -0
- package/src/force/SolarRadiationPressure.ts +42 -0
- package/src/force/ThirdBodyGravity.ts +62 -0
- package/src/force/Thrust.ts +83 -0
- package/src/interfaces/RfSensorParams.ts +30 -0
- package/src/interfaces/index.ts +1 -0
- package/src/interpolator/ChebyshevCoefficients.ts +109 -0
- package/src/interpolator/ChebyshevInterpolator.ts +87 -0
- package/src/interpolator/CubicSpline.ts +72 -0
- package/src/interpolator/CubicSplineInterpolator.ts +90 -0
- package/src/interpolator/FieldInterpolator.ts +37 -0
- package/src/interpolator/Interpolator.ts +56 -0
- package/src/interpolator/LagrangeInterpolator.ts +192 -0
- package/src/interpolator/StateInterpolator.ts +39 -0
- package/src/interpolator/VerletBlendInterpolator.ts +146 -0
- package/{lib/ootk.js → src/main.ts} +7 -3
- package/src/maneuver/TwoBurnOrbitTransfer.ts +79 -0
- package/src/maneuver/Waypoint.ts +267 -0
- package/src/objects/DetailedSatellite.ts +159 -0
- package/src/objects/DetailedSensor.ts +68 -0
- package/src/objects/LandObject.ts +46 -0
- package/src/objects/Marker.ts +25 -0
- package/src/objects/RfSensor.ts +78 -0
- package/src/objects/index.ts +5 -0
- package/src/observation/Observation.ts +125 -0
- package/src/observation/ObservationOptical.ts +146 -0
- package/src/observation/ObservationRadar.ts +131 -0
- package/src/observation/ObservationUtils.ts +40 -0
- package/src/observation/PropagatorPairs.ts +45 -0
- package/src/operations/BoxMuller.ts +87 -0
- package/src/operations/EulerAngles.ts +183 -0
- package/src/operations/Quaternion.ts +222 -0
- package/src/operations/RandomGaussianSource.ts +51 -0
- package/src/operations/index.ts +4 -0
- package/src/optimize/ChebyshevCompressor.ts +96 -0
- package/src/optimize/DownhillSimplex.ts +212 -0
- package/src/optimize/GoldenSection.ts +71 -0
- package/src/optimize/PolynomialRegression.ts +109 -0
- package/src/optimize/PolynomicalRegressionResult.ts +32 -0
- package/src/optimize/SimpleLinearRegression.ts +127 -0
- package/src/optimize/SimplexEntry.ts +50 -0
- package/src/orbit_determination/BatchLeastSquaresOD.ts +174 -0
- package/src/orbit_determination/BatchLeastSquaresResult.ts +33 -0
- package/src/orbit_determination/GibbsIOD.ts +95 -0
- package/src/orbit_determination/GoodingIOD.ts +380 -0
- package/src/orbit_determination/HerrickGibbsIOD.ts +51 -0
- package/src/orbit_determination/LambertIOD.ts +260 -0
- package/src/orbit_determination/ModifiedGoodingIOD.ts +133 -0
- package/src/propagator/DormandPrince54Propagator.ts +73 -0
- package/src/propagator/KeplerPropagator.ts +102 -0
- package/src/propagator/Propagator.ts +253 -0
- package/src/propagator/RkCheckpoint.ts +25 -0
- package/src/propagator/RkResult.ts +26 -0
- package/src/propagator/RungeKutta4Propagator.ts +179 -0
- package/src/propagator/RungeKutta89Propagator.ts +132 -0
- package/src/propagator/RungeKuttaAdaptive.ts +232 -0
- package/src/propagator/Sgp4Propagator.ts +71 -0
- package/src/smoothing/ExponentialSmoothing.ts +90 -0
- package/src/transforms/index.ts +1 -0
- package/src/transforms/transforms.ts +117 -0
- package/src/types/types.ts +135 -0
- package/src/utils/functions.ts +21 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/jacobian.ts +38 -0
- package/.eslintrc.json +0 -244
- package/jest.config.ts +0 -30
- package/lib/coordinate/Hill.js.map +0 -1
- package/lib/covariance/CovarianceSample.js.map +0 -1
- package/lib/covariance/StateCovariance.js.map +0 -1
- package/lib/force/AtmosphericDrag.js.map +0 -1
- package/lib/force/EarthGravity.js.map +0 -1
- package/lib/force/Force.js.map +0 -1
- package/lib/force/ForceModel.js.map +0 -1
- package/lib/force/Gravity.js.map +0 -1
- package/lib/force/SolarRadiationPressure.js.map +0 -1
- package/lib/force/ThirdBodyGravity.js.map +0 -1
- package/lib/force/Thrust.js.map +0 -1
- package/lib/interpolator/ChebyshevCoefficients.js.map +0 -1
- package/lib/interpolator/ChebyshevInterpolator.js.map +0 -1
- package/lib/interpolator/CubicSpline.js.map +0 -1
- package/lib/interpolator/CubicSplineInterpolator.js.map +0 -1
- package/lib/interpolator/FieldInterpolator.js.map +0 -1
- package/lib/interpolator/Interpolator.js.map +0 -1
- package/lib/interpolator/LagrangeInterpolator.js.map +0 -1
- package/lib/interpolator/StateInterpolator.js.map +0 -1
- package/lib/interpolator/VerletBlendInterpolator.js.map +0 -1
- package/lib/maneuver/TwoBurnOrbitTransfer.js.map +0 -1
- package/lib/maneuver/Waypoint.js.map +0 -1
- package/lib/objects/DetailedSatellite.js.map +0 -1
- package/lib/objects/DetailedSensor.js.map +0 -1
- package/lib/objects/LandObject.js.map +0 -1
- package/lib/objects/Marker.js.map +0 -1
- package/lib/objects/index.js.map +0 -1
- package/lib/observation/Observation.js.map +0 -1
- package/lib/observation/ObservationOptical.js.map +0 -1
- package/lib/observation/ObservationRadar.js.map +0 -1
- package/lib/observation/ObservationUtils.js.map +0 -1
- package/lib/observation/PropagatorPairs.js.map +0 -1
- package/lib/ootk.js.map +0 -1
- package/lib/operations/BoxMuller.js.map +0 -1
- package/lib/operations/EulerAngles.d.ts +0 -50
- package/lib/operations/EulerAngles.js.map +0 -1
- package/lib/operations/Quaternion.js.map +0 -1
- package/lib/operations/RandomGaussianSource.js.map +0 -1
- package/lib/optimize/ChebyshevCompressor.js.map +0 -1
- package/lib/optimize/DownhillSimplex.js.map +0 -1
- package/lib/optimize/GoldenSection.js.map +0 -1
- package/lib/optimize/PolynomialRegression.js.map +0 -1
- package/lib/optimize/PolynomicalRegressionResult.js.map +0 -1
- package/lib/optimize/SimpleLinearRegression.js.map +0 -1
- package/lib/optimize/SimplexEntry.js.map +0 -1
- package/lib/orbit_determination/BatchLeastSquaresOD.js.map +0 -1
- package/lib/orbit_determination/BatchLeastSquaresResult.js.map +0 -1
- package/lib/orbit_determination/GibbsIOD.js.map +0 -1
- package/lib/orbit_determination/GoodingIOD.js.map +0 -1
- package/lib/orbit_determination/HerrickGibbsIOD.js.map +0 -1
- package/lib/orbit_determination/LambertIOD.js.map +0 -1
- package/lib/orbit_determination/ModifiedGoodingIOD.js.map +0 -1
- package/lib/propagator/DormandPrince54Propagator.js +0 -68
- package/lib/propagator/DormandPrince54Propagator.js.map +0 -1
- package/lib/propagator/Propagator.js.map +0 -1
- package/lib/propagator/RkCheckpoint.js.map +0 -1
- package/lib/propagator/RkResult.js.map +0 -1
- package/lib/propagator/RungeKutta4Propagator.js.map +0 -1
- package/lib/propagator/RungeKutta89Propagator.js +0 -130
- package/lib/propagator/RungeKutta89Propagator.js.map +0 -1
- package/lib/propagator/RungeKuttaAdaptive.js.map +0 -1
- package/lib/propagator/Sgp4Propagator.js.map +0 -1
- package/lib/smoothing/ExponentialSmoothing.js.map +0 -1
- package/lib/types/types.js.map +0 -1
- /package/{lib → dist}/coordinate/index.d.ts +0 -0
- /package/{lib → dist}/coordinate/index.js +0 -0
- /package/{lib → dist}/coordinate/index.js.map +0 -0
- /package/{lib → dist}/operations/index.d.ts +0 -0
- /package/{lib → dist}/operations/index.js +0 -0
- /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
|
-
* @
|
|
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.
|
|
24
|
-
this.
|
|
25
|
-
this.
|
|
26
|
-
this.
|
|
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.
|
|
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.
|
|
62
|
+
const subDex = this.slice_(posix);
|
|
60
63
|
const start = subDex.left;
|
|
61
64
|
const stop = subDex.right;
|
|
62
|
-
const ts = this.
|
|
63
|
-
const xs = this.
|
|
64
|
-
const ys = this.
|
|
65
|
-
const zs = this.
|
|
66
|
-
const position = new Vector3D(LagrangeInterpolator.
|
|
67
|
-
const velocity = new Vector3D(LagrangeInterpolator.
|
|
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
|
|
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
|
|
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
|
-
|
|
111
|
-
const n = this.
|
|
112
|
-
if (posix <= this.
|
|
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.
|
|
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.
|
|
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.
|
|
126
|
+
if (this.t_[mid] === posix) {
|
|
124
127
|
break;
|
|
125
128
|
}
|
|
126
|
-
if (posix < this.
|
|
127
|
-
if (mid > 0 && posix > this.
|
|
128
|
-
mid = LagrangeInterpolator._getClosest(posix, this.
|
|
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.
|
|
135
|
-
mid = LagrangeInterpolator._getClosest(posix, this.
|
|
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.
|
|
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":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAA4C,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC7G,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,OAAO,oBAAqB,SAAQ,iBAAiB;IACjD,EAAE,CAAe;IACjB,EAAE,CAAe;IACjB,EAAE,CAAe;IACjB,EAAE,CAAe;IACjB,KAAK,CAAS;IAEtB,YAAY,CAAe,EAAE,CAAe,EAAE,CAAe,EAAE,CAAe,EAAE,KAAK,GAAG,EAAE;QACxF,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,SAAkB,EAAE,KAAK,GAAG,EAAE;QACjD,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;QAC3B,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1B,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAE3B,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YACzB,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;SACzB;QAED,OAAO,IAAI,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,SAAS;QACX,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,WAAW,CAAC,KAAe;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACzB,OAAO,IAAI,CAAC;SACb;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAC3B,oBAAoB,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAe,EAC3D,oBAAoB,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAe,EAC3D,oBAAoB,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAe,CAC5D,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAC3B,oBAAoB,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAwB,EACpE,oBAAoB,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAwB,EACpE,oBAAoB,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAwB,CACrE,CAAC;QAEF,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAEO,MAAM,CAAC,SAAS,CAAC,EAAgB,EAAE,EAAgB,EAAE,CAAS;QACpE,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,IAAI,MAAM,GAAG,GAAG,CAAC;QAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1B,IAAI,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAEpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,IAAI,CAAC,KAAK,CAAC,EAAE;oBACX,SAAS;iBACV;gBACD,OAAO,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1C;YACD,MAAM,IAAI,OAAO,CAAC;SACnB;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,MAAM,CAAC,SAAS,CAAC,EAAgB,EAAE,EAAgB,EAAE,CAAS;QACpE,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;QACpB,IAAI,MAAM,GAAG,GAAG,CAAC;QAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1B,IAAI,KAAK,GAAG,GAAG,CAAC;YAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,IAAI,CAAC,KAAK,CAAC,EAAE;oBACX,SAAS;iBACV;gBACD,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;wBACtB,SAAS;qBACV;oBACD,OAAO,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC1C;gBACD,KAAK,IAAI,OAAO,CAAC;aAClB;YACD,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;SACzB;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,MAAc,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU;QACvF,OAAO,MAAM,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,CAAC;IAEO,MAAM,CAAC,KAAa;QAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;QAEzB,IAAI,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YACvB,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;SACvC;QACD,IAAI,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;YAC3B,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;SAC3C;QAED,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;QACvB,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,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE;gBAC1B,MAAM;aACP;YACD,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;gBACxB,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE;oBACvC,GAAG,GAAG,oBAAoB,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC5F,MAAM;iBACP;gBACD,CAAC,GAAG,GAAG,CAAC;aACT;iBAAM;gBACL,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE;oBACxD,GAAG,GAAG,oBAAoB,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;oBAC5F,MAAM;iBACP;gBACD,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;aACb;SACF;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC;QAC1B,MAAM,KAAK,GAAG,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5D,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;SACvC;QACD,IAAI,KAAK,GAAG,CAAC,EAAE;YACb,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;SAC3C;QAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,WAAW,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAY,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAY,CAAC,CAAC,CAAC;IACpH,CAAC;CACF"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @author @thkruz Theodore Kruczek
|
|
3
|
-
*
|
|
4
3
|
* @license AGPL-3.0-or-later
|
|
5
|
-
* @
|
|
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
|
-
* @
|
|
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
|
-
* @
|
|
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
|
-
* @
|
|
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
|
-
* @
|
|
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
|
|
37
|
-
private
|
|
35
|
+
private static getClosest_;
|
|
36
|
+
private matchState_;
|
|
38
37
|
private static _gravity;
|
|
39
|
-
private static
|
|
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
|
-
* @
|
|
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
|
|
42
|
+
static getClosest_(target, s1, s2) {
|
|
43
43
|
return target - s1.epoch.posix >= s2.epoch.posix - target ? s2 : s1;
|
|
44
44
|
}
|
|
45
|
-
|
|
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.
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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.
|
|
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.
|
|
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":"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"}
|
|
@@ -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
|
-
* @
|
|
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
|
package/dist/main.js.map
ADDED
|
@@ -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
|
-
* @
|
|
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:
|
|
26
|
-
constructor(vInit: number, vFinal: number, vTransA: number, vTransB: number, tTrans:
|
|
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?:
|
|
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
|
-
* @
|
|
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
|
-
* @
|
|
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
|
-
* @
|
|
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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"}
|