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
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author @thkruz Theodore Kruczek
|
|
3
|
+
* @license AGPL-3.0-or-later
|
|
4
|
+
* @copyright (c) 2020-2024 Theodore Kruczek
|
|
5
|
+
*
|
|
6
|
+
* Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
|
|
7
|
+
* terms of the GNU Affero General Public License as published by the Free Software
|
|
8
|
+
* Foundation, either version 3 of the License, or (at your option) any later version.
|
|
9
|
+
*
|
|
10
|
+
* Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
11
|
+
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
12
|
+
* See the GNU Affero General Public License for more details.
|
|
13
|
+
*
|
|
14
|
+
* You should have received a copy of the GNU Affero General Public License along with
|
|
15
|
+
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
16
|
+
*/
|
|
17
|
+
import { Degrees, Matrix, Radians, Vector3D } from 'ootk-core';
|
|
18
|
+
export declare class EulerAngles {
|
|
19
|
+
roll: number;
|
|
20
|
+
pitch: number;
|
|
21
|
+
yaw: number;
|
|
22
|
+
/**
|
|
23
|
+
* Create a new EulerAngles object from roll, pitch, and yaw angles in radians.
|
|
24
|
+
* @param roll Roll angle in radians.
|
|
25
|
+
* @param pitch Pitch angle in radians.
|
|
26
|
+
* @param yaw Yaw angle in radians.
|
|
27
|
+
*/
|
|
28
|
+
constructor(roll: Radians, pitch: Radians, yaw: Radians);
|
|
29
|
+
/**
|
|
30
|
+
* Create a new EulerAngles object from roll, pitch, and yaw angles.
|
|
31
|
+
* @param rollDeg Roll angle in degrees.
|
|
32
|
+
* @param pitchDeg Pitch angle in degrees.
|
|
33
|
+
* @param yawDeg Yaw angle in degrees.
|
|
34
|
+
* @returns EulerAngles object.
|
|
35
|
+
*/
|
|
36
|
+
static fromDegrees(rollDeg: Degrees, pitchDeg: Degrees, yawDeg: Degrees): EulerAngles;
|
|
37
|
+
/**
|
|
38
|
+
* Create a new EulerAngles object from 3-2-1 ordered direction cosine matrix c.
|
|
39
|
+
* @param c 3-2-1 ordered direction cosine matrix.
|
|
40
|
+
* @returns EulerAngles object.
|
|
41
|
+
*/
|
|
42
|
+
static fromDcm321(c: Matrix): EulerAngles;
|
|
43
|
+
/**
|
|
44
|
+
* Gets the roll angle in degrees.
|
|
45
|
+
* @returns The roll angle in degrees.
|
|
46
|
+
*/
|
|
47
|
+
get rollDegrees(): Degrees;
|
|
48
|
+
/**
|
|
49
|
+
* Gets the pitch angle in degrees.
|
|
50
|
+
* @returns The pitch angle in degrees.
|
|
51
|
+
*/
|
|
52
|
+
get pitchDegrees(): Degrees;
|
|
53
|
+
/**
|
|
54
|
+
* Gets the yaw angle in degrees.
|
|
55
|
+
* @returns The yaw angle in degrees.
|
|
56
|
+
*/
|
|
57
|
+
get yawDegrees(): Degrees;
|
|
58
|
+
/**
|
|
59
|
+
* Gets the roll angle in radians.
|
|
60
|
+
* @returns The roll angle in radians.
|
|
61
|
+
*/
|
|
62
|
+
get phi(): Radians;
|
|
63
|
+
/**
|
|
64
|
+
* Gets the pitch angle in radians.
|
|
65
|
+
* @returns The pitch angle in radians.
|
|
66
|
+
*/
|
|
67
|
+
get theta(): Radians;
|
|
68
|
+
/**
|
|
69
|
+
* Gets the yaw angle in radians.
|
|
70
|
+
* @returns The yaw angle in radians.
|
|
71
|
+
*/
|
|
72
|
+
get psi(): Radians;
|
|
73
|
+
/**
|
|
74
|
+
* Gets the roll component in degrees.
|
|
75
|
+
* @returns The roll component in degrees.
|
|
76
|
+
*/
|
|
77
|
+
get phiDegrees(): Degrees;
|
|
78
|
+
/**
|
|
79
|
+
* Gets the pitch component in degrees.
|
|
80
|
+
* @returns The pitch component in degrees.
|
|
81
|
+
*/
|
|
82
|
+
get thetaDegrees(): Degrees;
|
|
83
|
+
/**
|
|
84
|
+
* Gets the yaw component in degrees.
|
|
85
|
+
* @returns The yaw component in degrees.
|
|
86
|
+
*/
|
|
87
|
+
get psiDegrees(): Degrees;
|
|
88
|
+
/**
|
|
89
|
+
* Returns a string representation of the Euler angles.
|
|
90
|
+
* @param precision The number of decimal places to include in the string representation. Default is 6.
|
|
91
|
+
* @returns A string representation of the Euler angles.
|
|
92
|
+
*/
|
|
93
|
+
toString(precision?: number): string;
|
|
94
|
+
/**
|
|
95
|
+
* Calculates the Direction Cosine Matrix (DCM) using the 3-2-1 Euler angles convention.
|
|
96
|
+
* @returns The calculated DCM as a Matrix object.
|
|
97
|
+
*/
|
|
98
|
+
dcm321(): Matrix;
|
|
99
|
+
/**
|
|
100
|
+
* Rotates a 3D vector using a 3-2-1 Euler angle sequence.
|
|
101
|
+
* @param v The vector to rotate.
|
|
102
|
+
* @returns The rotated vector.
|
|
103
|
+
*/
|
|
104
|
+
rotateVector321(v: Vector3D): Vector3D;
|
|
105
|
+
}
|
|
@@ -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,9 +17,17 @@
|
|
|
18
17
|
import { DEG2RAD, Matrix, RAD2DEG } from 'ootk-core';
|
|
19
18
|
// / Class containing Euler angles.
|
|
20
19
|
export class EulerAngles {
|
|
20
|
+
// / Roll component _(rad)_.
|
|
21
|
+
roll;
|
|
22
|
+
// / Pitch component _(rad)_.
|
|
23
|
+
pitch;
|
|
24
|
+
// / Yaw component _(rad)_.
|
|
25
|
+
yaw;
|
|
21
26
|
/**
|
|
22
|
-
* Create a new
|
|
23
|
-
*
|
|
27
|
+
* Create a new EulerAngles object from roll, pitch, and yaw angles in radians.
|
|
28
|
+
* @param roll Roll angle in radians.
|
|
29
|
+
* @param pitch Pitch angle in radians.
|
|
30
|
+
* @param yaw Yaw angle in radians.
|
|
24
31
|
*/
|
|
25
32
|
constructor(roll, pitch, yaw) {
|
|
26
33
|
this.roll = roll;
|
|
@@ -28,8 +35,11 @@ export class EulerAngles {
|
|
|
28
35
|
this.yaw = yaw;
|
|
29
36
|
}
|
|
30
37
|
/**
|
|
31
|
-
* Create a new
|
|
32
|
-
*
|
|
38
|
+
* Create a new EulerAngles object from roll, pitch, and yaw angles.
|
|
39
|
+
* @param rollDeg Roll angle in degrees.
|
|
40
|
+
* @param pitchDeg Pitch angle in degrees.
|
|
41
|
+
* @param yawDeg Yaw angle in degrees.
|
|
42
|
+
* @returns EulerAngles object.
|
|
33
43
|
*/
|
|
34
44
|
static fromDegrees(rollDeg, pitchDeg, yawDeg) {
|
|
35
45
|
const roll = rollDeg * DEG2RAD;
|
|
@@ -38,58 +48,94 @@ export class EulerAngles {
|
|
|
38
48
|
return new EulerAngles(roll, pitch, yaw);
|
|
39
49
|
}
|
|
40
50
|
/**
|
|
41
|
-
* Create a new
|
|
42
|
-
*
|
|
51
|
+
* Create a new EulerAngles object from 3-2-1 ordered direction cosine matrix c.
|
|
52
|
+
* @param c 3-2-1 ordered direction cosine matrix.
|
|
53
|
+
* @returns EulerAngles object.
|
|
43
54
|
*/
|
|
44
55
|
static fromDcm321(c) {
|
|
45
|
-
const roll = Math.atan(c[1][2] / c[2][2]);
|
|
46
|
-
const pitch = -Math.asin(c[0][2]);
|
|
47
|
-
const yaw = Math.atan(c[0][1] / c[0][0]);
|
|
56
|
+
const roll = Math.atan(c.elements[1][2] / c.elements[2][2]);
|
|
57
|
+
const pitch = -Math.asin(c.elements[0][2]);
|
|
58
|
+
const yaw = Math.atan(c.elements[0][1] / c.elements[0][0]);
|
|
48
59
|
return new EulerAngles(roll, pitch, yaw);
|
|
49
60
|
}
|
|
50
|
-
|
|
61
|
+
/**
|
|
62
|
+
* Gets the roll angle in degrees.
|
|
63
|
+
* @returns The roll angle in degrees.
|
|
64
|
+
*/
|
|
51
65
|
get rollDegrees() {
|
|
52
66
|
return this.roll * RAD2DEG;
|
|
53
67
|
}
|
|
54
|
-
|
|
68
|
+
/**
|
|
69
|
+
* Gets the pitch angle in degrees.
|
|
70
|
+
* @returns The pitch angle in degrees.
|
|
71
|
+
*/
|
|
55
72
|
get pitchDegrees() {
|
|
56
73
|
return this.pitch * RAD2DEG;
|
|
57
74
|
}
|
|
58
|
-
|
|
75
|
+
/**
|
|
76
|
+
* Gets the yaw angle in degrees.
|
|
77
|
+
* @returns The yaw angle in degrees.
|
|
78
|
+
*/
|
|
59
79
|
get yawDegrees() {
|
|
60
80
|
return this.yaw * RAD2DEG;
|
|
61
81
|
}
|
|
62
|
-
|
|
82
|
+
/**
|
|
83
|
+
* Gets the roll angle in radians.
|
|
84
|
+
* @returns The roll angle in radians.
|
|
85
|
+
*/
|
|
63
86
|
get phi() {
|
|
64
87
|
return this.roll;
|
|
65
88
|
}
|
|
66
|
-
|
|
89
|
+
/**
|
|
90
|
+
* Gets the pitch angle in radians.
|
|
91
|
+
* @returns The pitch angle in radians.
|
|
92
|
+
*/
|
|
67
93
|
get theta() {
|
|
68
94
|
return this.pitch;
|
|
69
95
|
}
|
|
70
|
-
|
|
96
|
+
/**
|
|
97
|
+
* Gets the yaw angle in radians.
|
|
98
|
+
* @returns The yaw angle in radians.
|
|
99
|
+
*/
|
|
71
100
|
get psi() {
|
|
72
101
|
return this.yaw;
|
|
73
102
|
}
|
|
74
|
-
|
|
103
|
+
/**
|
|
104
|
+
* Gets the roll component in degrees.
|
|
105
|
+
* @returns The roll component in degrees.
|
|
106
|
+
*/
|
|
75
107
|
get phiDegrees() {
|
|
76
108
|
return this.phi * RAD2DEG;
|
|
77
109
|
}
|
|
78
|
-
|
|
110
|
+
/**
|
|
111
|
+
* Gets the pitch component in degrees.
|
|
112
|
+
* @returns The pitch component in degrees.
|
|
113
|
+
*/
|
|
79
114
|
get thetaDegrees() {
|
|
80
115
|
return this.theta * RAD2DEG;
|
|
81
116
|
}
|
|
82
|
-
|
|
117
|
+
/**
|
|
118
|
+
* Gets the yaw component in degrees.
|
|
119
|
+
* @returns The yaw component in degrees.
|
|
120
|
+
*/
|
|
83
121
|
get psiDegrees() {
|
|
84
122
|
return this.psi * RAD2DEG;
|
|
85
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Returns a string representation of the Euler angles.
|
|
126
|
+
* @param precision The number of decimal places to include in the string representation. Default is 6.
|
|
127
|
+
* @returns A string representation of the Euler angles.
|
|
128
|
+
*/
|
|
86
129
|
toString(precision = 6) {
|
|
87
130
|
const rollStr = this.rollDegrees.toFixed(precision);
|
|
88
131
|
const pitchStr = this.pitchDegrees.toFixed(precision);
|
|
89
132
|
const yawStr = this.yawDegrees.toFixed(precision);
|
|
90
133
|
return `Euler(roll: ${rollStr}°, pitch: ${pitchStr}°, yaw: ${yawStr}°)`;
|
|
91
134
|
}
|
|
92
|
-
|
|
135
|
+
/**
|
|
136
|
+
* Calculates the Direction Cosine Matrix (DCM) using the 3-2-1 Euler angles convention.
|
|
137
|
+
* @returns The calculated DCM as a Matrix object.
|
|
138
|
+
*/
|
|
93
139
|
dcm321() {
|
|
94
140
|
const sPhi = Math.sin(this.phi);
|
|
95
141
|
const cPhi = Math.cos(this.phi);
|
|
@@ -103,7 +149,11 @@ export class EulerAngles {
|
|
|
103
149
|
[cPhi * sTheta * cPsi + sPhi * sPsi, cPhi * sTheta * sPsi - sPhi * cPsi, cPhi * cTheta],
|
|
104
150
|
]);
|
|
105
151
|
}
|
|
106
|
-
|
|
152
|
+
/**
|
|
153
|
+
* Rotates a 3D vector using a 3-2-1 Euler angle sequence.
|
|
154
|
+
* @param v The vector to rotate.
|
|
155
|
+
* @returns The rotated vector.
|
|
156
|
+
*/
|
|
107
157
|
rotateVector321(v) {
|
|
108
158
|
return this.dcm321().multiplyVector3D(v);
|
|
109
159
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EulerAngles.js","sourceRoot":"","sources":["../../src/operations/EulerAngles.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @author @thkruz Theodore Kruczek
|
|
3
|
-
*
|
|
4
3
|
* @license AGPL-3.0-or-later
|
|
5
|
-
* @
|
|
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 { Matrix, Vector, Vector3D } from 'ootk-core';
|
|
17
|
+
import { Matrix, Radians, RadiansPerSecond, Vector, Vector3D } from 'ootk-core';
|
|
19
18
|
export declare class Quaternion {
|
|
20
19
|
x: number;
|
|
21
20
|
y: number;
|
|
@@ -46,12 +45,12 @@ export declare class Quaternion {
|
|
|
46
45
|
lerp(q: Quaternion, t: number): Quaternion;
|
|
47
46
|
slerp(q: Quaternion, t: number): Quaternion;
|
|
48
47
|
toVector3D(): Vector3D;
|
|
49
|
-
angle(q: Quaternion):
|
|
50
|
-
geodesicAngle(q: Quaternion):
|
|
48
|
+
angle(q: Quaternion): Radians;
|
|
49
|
+
geodesicAngle(q: Quaternion): Radians;
|
|
51
50
|
distance(q: Quaternion): number;
|
|
52
51
|
delta(qTo: Quaternion): Quaternion;
|
|
53
52
|
toDirectionCosineMatrix(): Matrix;
|
|
54
53
|
toRotationMatrix(): Matrix;
|
|
55
54
|
vectorAngle(observer: Vector3D, target: Vector3D, forward: Vector3D): number;
|
|
56
|
-
kinematics(angularVelocity: Vector3D): Quaternion;
|
|
55
|
+
kinematics(angularVelocity: Vector3D<RadiansPerSecond>): Quaternion;
|
|
57
56
|
}
|
|
@@ -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
|
|
@@ -17,12 +16,21 @@
|
|
|
17
16
|
*/
|
|
18
17
|
import { Matrix, Vector, Vector3D, wrapAngle } from 'ootk-core';
|
|
19
18
|
export class Quaternion {
|
|
19
|
+
x;
|
|
20
|
+
y;
|
|
21
|
+
z;
|
|
22
|
+
w;
|
|
20
23
|
constructor(x, y, z, w) {
|
|
21
24
|
this.x = x;
|
|
22
25
|
this.y = y;
|
|
23
26
|
this.z = z;
|
|
24
27
|
this.w = w;
|
|
25
28
|
}
|
|
29
|
+
static zero = new Quaternion(0, 0, 0, 0);
|
|
30
|
+
static one = new Quaternion(0, 0, 0, 1);
|
|
31
|
+
static xAxis = new Quaternion(1, 0, 0, 0);
|
|
32
|
+
static yAxis = new Quaternion(0, 1, 0, 0);
|
|
33
|
+
static zAxis = new Quaternion(0, 0, 1, 0);
|
|
26
34
|
toString(precision = 8) {
|
|
27
35
|
const xStr = this.x.toFixed(precision);
|
|
28
36
|
const yStr = this.y.toFixed(precision);
|
|
@@ -145,20 +153,15 @@ export class Quaternion {
|
|
|
145
153
|
return forward.angle(transform);
|
|
146
154
|
}
|
|
147
155
|
kinematics(angularVelocity) {
|
|
148
|
-
const wPrime = new Vector([0, angularVelocity
|
|
156
|
+
const wPrime = new Vector([0, angularVelocity.x, angularVelocity.y, angularVelocity.z]);
|
|
149
157
|
const qMat = new Matrix([
|
|
150
158
|
[this.x, this.w, -this.z, this.y],
|
|
151
159
|
[this.y, this.z, this.w, -this.x],
|
|
152
160
|
[this.z, -this.y, this.x, this.w],
|
|
153
161
|
[this.w, -this.x, -this.y, -this.z],
|
|
154
162
|
]);
|
|
155
|
-
const result = qMat.multiplyVector(wPrime).scale(0.5);
|
|
163
|
+
const result = qMat.multiplyVector(wPrime).scale(0.5).elements;
|
|
156
164
|
return new Quaternion(result[0], result[1], result[2], result[3]);
|
|
157
165
|
}
|
|
158
166
|
}
|
|
159
|
-
Quaternion.zero = new Quaternion(0, 0, 0, 0);
|
|
160
|
-
Quaternion.one = new Quaternion(0, 0, 0, 1);
|
|
161
|
-
Quaternion.xAxis = new Quaternion(1, 0, 0, 0);
|
|
162
|
-
Quaternion.yAxis = new Quaternion(0, 1, 0, 0);
|
|
163
|
-
Quaternion.zAxis = new Quaternion(0, 0, 1, 0);
|
|
164
167
|
//# sourceMappingURL=Quaternion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Quaternion.js","sourceRoot":"","sources":["../../src/operations/Quaternion.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @author @thkruz Theodore Kruczek
|
|
3
|
-
*
|
|
4
3
|
* @license AGPL-3.0-or-later
|
|
5
|
-
* @
|
|
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
|
|
@@ -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,6 +17,7 @@
|
|
|
18
17
|
import { Vector } from 'ootk-core';
|
|
19
18
|
import { BoxMuller } from './BoxMuller';
|
|
20
19
|
export class RandomGaussianSource {
|
|
20
|
+
_boxMuller;
|
|
21
21
|
constructor(seed = 0) {
|
|
22
22
|
this._boxMuller = new BoxMuller(0, 1, seed);
|
|
23
23
|
}
|
|
@@ -31,7 +31,7 @@ export class RandomGaussianSource {
|
|
|
31
31
|
const result = new Vector([this.nextGauss()]);
|
|
32
32
|
for (let i = 0; i < n; i++) {
|
|
33
33
|
if (i > 0) {
|
|
34
|
-
result.add(new Vector[this.nextGauss()]
|
|
34
|
+
result.add(new Vector([this.nextGauss()]));
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
return result;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RandomGaussianSource.js","sourceRoot":"","sources":["../../src/operations/RandomGaussianSource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,EAAY,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,OAAO,oBAAoB;IACvB,UAAU,CAAY;IAE9B,YAAY,IAAI,GAAG,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;IACrC,CAAC;IAED,WAAW,CAAC,CAAS;QACnB,IAAI,CAAC,GAAG,CAAC,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;SAC7C;QAED,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAE9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1B,IAAI,CAAC,GAAG,CAAC,EAAE;gBACT,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;aAC5C;SACF;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,MAAM,GAAG,GAAG;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrE,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
|
|
@@ -26,6 +25,8 @@ export declare class ChebyshevCompressor {
|
|
|
26
25
|
/**
|
|
27
26
|
* Compress this object's interpolater, using the provided coefficients
|
|
28
27
|
* per revolution [cpr].
|
|
28
|
+
* @param cpr Coefficients per revolution.
|
|
29
|
+
* @returns A new [ChebyshevInterpolator] object.
|
|
29
30
|
*/
|
|
30
31
|
compress(cpr?: number): ChebyshevInterpolator;
|
|
31
32
|
}
|
|
@@ -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,6 +19,7 @@ import { ChebyshevCoefficients } from './../interpolator/ChebyshevCoefficients';
|
|
|
20
19
|
import { ChebyshevInterpolator } from './../interpolator/ChebyshevInterpolator';
|
|
21
20
|
// / Ephemeris compressor.
|
|
22
21
|
export class ChebyshevCompressor {
|
|
22
|
+
_interpolator;
|
|
23
23
|
// / Create a new [ChebyshevCompressor] object from an [Interpolator].
|
|
24
24
|
constructor(_interpolator) {
|
|
25
25
|
this._interpolator = _interpolator;
|
|
@@ -36,7 +36,8 @@ export class ChebyshevCompressor {
|
|
|
36
36
|
const h = 0.5;
|
|
37
37
|
for (let i = 0; i < n; i++) {
|
|
38
38
|
const x = ChebyshevCompressor._cosPi((i + h) / n);
|
|
39
|
-
const
|
|
39
|
+
const seconds = x * (h * (b - a)) + h * (b + a);
|
|
40
|
+
const state = this._interpolator.interpolate(new EpochUTC(seconds));
|
|
40
41
|
const fx = state.position.x;
|
|
41
42
|
const fy = state.position.y;
|
|
42
43
|
const fz = state.position.z;
|
|
@@ -62,10 +63,12 @@ export class ChebyshevCompressor {
|
|
|
62
63
|
/**
|
|
63
64
|
* Compress this object's interpolater, using the provided coefficients
|
|
64
65
|
* per revolution [cpr].
|
|
66
|
+
* @param cpr Coefficients per revolution.
|
|
67
|
+
* @returns A new [ChebyshevInterpolator] object.
|
|
65
68
|
*/
|
|
66
69
|
compress(cpr = 21) {
|
|
67
70
|
const { start, end } = this._interpolator.window();
|
|
68
|
-
const period = this._interpolator.interpolate(start).period
|
|
71
|
+
const period = this._interpolator.interpolate(start).period;
|
|
69
72
|
const coefficients = [];
|
|
70
73
|
let current = start;
|
|
71
74
|
while (current < end) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChebyshevCompressor.js","sourceRoot":"","sources":["../../src/optimize/ChebyshevCompressor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @author @thkruz Theodore Kruczek
|
|
3
|
-
*
|
|
4
3
|
* @license AGPL-3.0-or-later
|
|
5
|
-
* @
|
|
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
|
|
@@ -21,12 +20,18 @@ export declare class DownhillSimplex {
|
|
|
21
20
|
/**
|
|
22
21
|
* Compute the centroid from a list of [SimplexEntry] objects, using cost
|
|
23
22
|
* function [f].
|
|
23
|
+
* @param f Cost function
|
|
24
|
+
* @param xss Simplex entries
|
|
25
|
+
* @returns The centroid.
|
|
24
26
|
*/
|
|
25
27
|
private static _centroid;
|
|
26
28
|
private static _shrink;
|
|
27
29
|
/**
|
|
28
30
|
* Generate a new simplex from initial guess [x0], and an optional
|
|
29
31
|
* simplex [step] value.
|
|
32
|
+
* @param x0 Initial guess
|
|
33
|
+
* @param step Simplex step
|
|
34
|
+
* @returns The simplex.
|
|
30
35
|
*/
|
|
31
36
|
static generateSimplex(x0: Float64Array, step?: number): Float64Array[];
|
|
32
37
|
/**
|
|
@@ -39,6 +44,15 @@ export declare class DownhillSimplex {
|
|
|
39
44
|
* - `maxIter`: maximum number of optimization iterations
|
|
40
45
|
* - `adaptive`: use adaptive coefficients if possible
|
|
41
46
|
* - `printIter`: print a debug statement after each iteration
|
|
47
|
+
* @param f Cost function
|
|
48
|
+
* @param xs Initial simplex
|
|
49
|
+
* @param root0 Root0
|
|
50
|
+
* @param root0.xTolerance Root0.xTolerance
|
|
51
|
+
* @param root0.fTolerance Root0.fTolerance
|
|
52
|
+
* @param root0.maxIter Root0.maxIter
|
|
53
|
+
* @param root0.adaptive Root0.adaptive
|
|
54
|
+
* @param root0.printIter Root0.printIter
|
|
55
|
+
* @returns The optimal input value.
|
|
42
56
|
*/
|
|
43
57
|
static solveSimplex(f: CostFunction, xs: Float64Array[], { xTolerance, fTolerance, maxIter, adaptive, printIter, }: {
|
|
44
58
|
xTolerance?: 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
|
|
@@ -24,6 +23,9 @@ export class DownhillSimplex {
|
|
|
24
23
|
/**
|
|
25
24
|
* Compute the centroid from a list of [SimplexEntry] objects, using cost
|
|
26
25
|
* function [f].
|
|
26
|
+
* @param f Cost function
|
|
27
|
+
* @param xss Simplex entries
|
|
28
|
+
* @returns The centroid.
|
|
27
29
|
*/
|
|
28
30
|
static _centroid(f, xss) {
|
|
29
31
|
const n = xss[0].points.length;
|
|
@@ -49,6 +51,9 @@ export class DownhillSimplex {
|
|
|
49
51
|
/**
|
|
50
52
|
* Generate a new simplex from initial guess [x0], and an optional
|
|
51
53
|
* simplex [step] value.
|
|
54
|
+
* @param x0 Initial guess
|
|
55
|
+
* @param step Simplex step
|
|
56
|
+
* @returns The simplex.
|
|
52
57
|
*/
|
|
53
58
|
static generateSimplex(x0, step = 0.01) {
|
|
54
59
|
const output = [x0.slice(0)];
|
|
@@ -69,6 +74,15 @@ export class DownhillSimplex {
|
|
|
69
74
|
* - `maxIter`: maximum number of optimization iterations
|
|
70
75
|
* - `adaptive`: use adaptive coefficients if possible
|
|
71
76
|
* - `printIter`: print a debug statement after each iteration
|
|
77
|
+
* @param f Cost function
|
|
78
|
+
* @param xs Initial simplex
|
|
79
|
+
* @param root0 Root0
|
|
80
|
+
* @param root0.xTolerance Root0.xTolerance
|
|
81
|
+
* @param root0.fTolerance Root0.fTolerance
|
|
82
|
+
* @param root0.maxIter Root0.maxIter
|
|
83
|
+
* @param root0.adaptive Root0.adaptive
|
|
84
|
+
* @param root0.printIter Root0.printIter
|
|
85
|
+
* @returns The optimal input value.
|
|
72
86
|
*/
|
|
73
87
|
static solveSimplex(f, xs, { xTolerance = 1e-12, fTolerance = 1e-12, maxIter = 10000, adaptive = false, printIter = false, }) {
|
|
74
88
|
let a;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DownhillSimplex.js","sourceRoot":"","sources":["../../src/optimize/DownhillSimplex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAgB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE5D,mDAAmD;AACnD,MAAM,OAAO,eAAe;IAC1B;QACE,sBAAsB;IACxB,CAAC;IAED;;;;;;OAMG;IACK,MAAM,CAAC,SAAS,CAAC,CAAe,EAAE,GAAmB;QAC3D,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;QAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;QAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aAC/B;SACF;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAChB;QAED,OAAO,IAAI,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAEO,MAAM,CAAC,OAAO,CAAC,CAAS,EAAE,GAAmB;QACnD,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAElB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAElB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;SAC/B;IACH,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,eAAe,CAAC,EAAgB,EAAE,IAAI,GAAG,IAAI;QAClD,MAAM,MAAM,GAAmB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAExB,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAClB;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,YAAY,CACjB,CAAe,EACf,EAAkB,EAClB,EACE,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,KAAK,EAClB,OAAO,GAAG,KAAK,EACf,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,KAAK,GAOlB;QAED,IAAI,CAAS,CAAC;QACd,IAAI,CAAS,CAAC;QACd,IAAI,CAAS,CAAC;QACd,IAAI,CAAS,CAAC;QACd,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QAExB,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE;YACtB,CAAC,GAAG,GAAG,CAAC;YACR,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;YAClB,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAC3B,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;SACnB;aAAM;YACL,CAAC,GAAG,GAAG,CAAC;YACR,CAAC,GAAG,GAAG,CAAC;YACR,CAAC,GAAG,GAAG,CAAC;YACR,CAAC,GAAG,GAAG,CAAC;SACT;QACD,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,MAAM,GAAG,MAAM,CAAC;QACpB,MAAM,OAAO,GAAmB,EAAE,CAAC;QAEnC,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE;YAClB,OAAO,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SACtC;QACD,iDAAiD;QACjD,OAAO,IAAI,EAAE;YACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,EAAE,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACjD,uBAAuB;YACvB,IAAI,EAAE,GAAG,GAAG,CAAC;YACb,IAAI,EAAE,GAAG,GAAG,CAAC;YAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACvC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3C,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;aAC1D;YACD,IAAI,SAAS,EAAE;gBACb,sCAAsC;gBACtC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,WAAW,EAAE,CAAC,KAAK,OAAO,EAAE,OAAO,EAAE,KAAK,MAAM,GAAG,CAAC,CAAC;aACzE;YACD,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,UAAU,IAAI,EAAE,GAAG,UAAU,CAAC,EAAE;gBACtD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;aAC1B;YACD,IAAI,IAAI,IAAI,OAAO,EAAE;gBACnB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;aAC1B;YACD,IAAI,EAAE,CAAC;YACP,aAAa;YACb,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YAEzD,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;gBAChF,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;gBACjC,MAAM,GAAG,SAAS,CAAC;gBACnB,SAAS;aACV;YACD,YAAY;YACZ,IAAI,EAAE,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;gBAC/B,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBAEhC,IAAI,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,EAAE;oBACvB,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;iBAClC;qBAAM;oBACL,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;iBAClC;gBACD,MAAM,GAAG,QAAQ,CAAC;gBAClB,SAAS;aACV;YACD,cAAc;YACd,IAAI,EAAE,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;gBAChD,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;gBAEhC,IAAI,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,EAAE;oBACvB,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACjC,MAAM,GAAG,UAAU,CAAC;oBACpB,SAAS;iBACV;qBAAM;oBACL,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;oBACpC,MAAM,GAAG,QAAQ,CAAC;oBAClB,SAAS;iBACV;aACF;iBAAM,IAAI,EAAE,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;gBACxD,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAEzD,IAAI,EAAE,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;oBAChD,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACjC,MAAM,GAAG,UAAU,CAAC;oBACpB,SAAS;iBACV;qBAAM;oBACL,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;oBACpC,MAAM,GAAG,QAAQ,CAAC;oBAClB,SAAS;iBACV;aACF;SACF;IACH,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,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 { DifferentiableFunction } from '
|
|
17
|
+
import { DifferentiableFunction } from '../main';
|
|
19
18
|
export declare class GoldenSection {
|
|
20
19
|
private static readonly _grInv;
|
|
21
20
|
private static _check;
|
|
@@ -25,6 +24,13 @@ export declare class GoldenSection {
|
|
|
25
24
|
*
|
|
26
25
|
* Takes [lower] and [upper] input search bounds, and an optional
|
|
27
26
|
* search [tolerance].
|
|
27
|
+
* @param f Function to optimize
|
|
28
|
+
* @param lower Lower bound
|
|
29
|
+
* @param upper Upper bound
|
|
30
|
+
* @param root0 Root0
|
|
31
|
+
* @param root0.tolerance Root0.tolerance
|
|
32
|
+
* @param root0.solveMax Root0.solveMax
|
|
33
|
+
* @returns The optimal input value.
|
|
28
34
|
*/
|
|
29
35
|
static search(f: DifferentiableFunction, lower: number, upper: number, { tolerance, solveMax, }: {
|
|
30
36
|
tolerance?: number;
|