ootk 5.0.0 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/body/Celestial.d.ts +19 -19
- package/dist/body/Celestial.js +19 -19
- package/dist/body/Earth.d.ts +18 -18
- package/dist/body/Earth.js +18 -18
- package/dist/body/NutationAngles.d.ts +18 -18
- package/dist/body/NutationAngles.js +18 -18
- package/dist/body/PrecessionAngles.d.ts +18 -18
- package/dist/body/PrecessionAngles.js +18 -18
- package/dist/body/Sun.d.ts +14 -18
- package/dist/body/Sun.js +14 -18
- package/dist/body/Sun.js.map +1 -1
- package/dist/body/index.d.ts +18 -18
- package/dist/body/index.js +18 -18
- package/dist/coordinate/ClassicalElements.d.ts +18 -18
- package/dist/coordinate/ClassicalElements.js +19 -19
- package/dist/coordinate/ClassicalElements.js.map +1 -1
- package/dist/coordinate/EquinoctialElements.d.ts +18 -18
- package/dist/coordinate/EquinoctialElements.js +18 -18
- package/dist/coordinate/FormatTle.d.ts +18 -18
- package/dist/coordinate/FormatTle.js +18 -18
- package/dist/coordinate/Geodetic.d.ts +18 -18
- package/dist/coordinate/Geodetic.js +18 -18
- package/dist/coordinate/Hill.d.ts +1 -1
- package/dist/coordinate/Hill.js +1 -1
- package/dist/coordinate/ITRF.d.ts +18 -18
- package/dist/coordinate/ITRF.js +18 -19
- package/dist/coordinate/ITRF.js.map +1 -1
- package/dist/coordinate/J2000.d.ts +18 -18
- package/dist/coordinate/J2000.js +18 -18
- package/dist/coordinate/RIC.d.ts +18 -18
- package/dist/coordinate/RIC.js +18 -18
- package/dist/coordinate/RelativeState.d.ts +18 -18
- package/dist/coordinate/RelativeState.js +18 -18
- package/dist/coordinate/StateVector.d.ts +18 -18
- package/dist/coordinate/StateVector.js +19 -19
- package/dist/coordinate/StateVector.js.map +1 -1
- package/dist/coordinate/TEME.d.ts +18 -18
- package/dist/coordinate/TEME.js +18 -18
- package/dist/coordinate/Tle.d.ts +21 -22
- package/dist/coordinate/Tle.js +21 -21
- package/dist/coordinate/Tle.js.map +1 -1
- package/dist/coordinate/index.js +0 -1
- package/dist/coordinate/index.js.map +1 -1
- package/dist/coordinate/tle-format-data.d.ts +18 -18
- package/dist/coordinate/tle-format-data.js +18 -18
- package/dist/covariance/CovarianceSample.d.ts +9 -6
- package/dist/covariance/CovarianceSample.js +92 -18
- package/dist/covariance/CovarianceSample.js.map +1 -1
- package/dist/covariance/StateCovariance.d.ts +1 -1
- package/dist/covariance/StateCovariance.js +1 -1
- package/dist/covariance/index.d.ts +2 -0
- package/dist/covariance/index.js +3 -0
- package/dist/covariance/index.js.map +1 -0
- package/dist/data/DataHandler.d.ts +18 -18
- package/dist/data/DataHandler.js +18 -18
- package/dist/data/values/Egm96Data.d.ts +18 -18
- package/dist/data/values/Egm96Data.js +18 -18
- package/dist/data/values/Egm96Data.js.map +1 -1
- package/dist/data/values/HpAtmosphereData.d.ts +18 -18
- package/dist/data/values/HpAtmosphereData.js +20 -20
- package/dist/data/values/HpAtmosphereData.js.map +1 -1
- package/dist/data/values/HpAtmosphereResult.d.ts +18 -18
- package/dist/data/values/HpAtmosphereResult.js +18 -18
- package/dist/data/values/Iau1980Data.d.ts +18 -18
- package/dist/data/values/Iau1980Data.js +18 -18
- package/dist/data/values/Iau1980Data.js.map +1 -1
- package/dist/data/values/LeapSecond.d.ts +18 -18
- package/dist/data/values/LeapSecond.js +18 -18
- package/dist/data/values/LeapSecondData.d.ts +18 -18
- package/dist/data/values/LeapSecondData.js +22 -22
- package/dist/data/values/LeapSecondData.js.map +1 -1
- package/dist/data/values/egm96.d.ts +18 -18
- package/dist/data/values/egm96.js +18 -18
- package/dist/data/values/hpAtmosphere.d.ts +18 -18
- package/dist/data/values/hpAtmosphere.js +18 -18
- package/dist/data/values/iau1980.d.ts +18 -18
- package/dist/data/values/iau1980.js +18 -18
- package/dist/enums/AngularDiameterMethod.d.ts +18 -18
- package/dist/enums/AngularDiameterMethod.js +18 -18
- package/dist/enums/AngularDistanceMethod.d.ts +18 -18
- package/dist/enums/AngularDistanceMethod.js +18 -18
- package/dist/enums/OrbitRegime.d.ts +18 -18
- package/dist/enums/OrbitRegime.js +18 -18
- package/dist/enums/PassType.d.ts +18 -18
- package/dist/enums/PassType.js +18 -18
- package/dist/enums/Sgp4OpsMode.d.ts +18 -18
- package/dist/enums/Sgp4OpsMode.js +18 -18
- package/dist/force/AtmosphericDrag.d.ts +1 -1
- package/dist/force/AtmosphericDrag.js +2 -5
- package/dist/force/AtmosphericDrag.js.map +1 -1
- package/dist/force/EarthGravity.d.ts +1 -1
- package/dist/force/EarthGravity.js +1 -1
- package/dist/force/Force.d.ts +1 -1
- package/dist/force/Force.js +1 -1
- package/dist/force/ForceModel.d.ts +1 -1
- package/dist/force/ForceModel.js +1 -1
- package/dist/force/Gravity.d.ts +1 -1
- package/dist/force/Gravity.js +1 -1
- package/dist/force/SolarRadiationPressure.d.ts +1 -1
- package/dist/force/SolarRadiationPressure.js +1 -1
- package/dist/force/ThirdBodyGravity.d.ts +1 -1
- package/dist/force/ThirdBodyGravity.js +1 -1
- package/dist/force/Thrust.d.ts +1 -1
- package/dist/force/Thrust.js +1 -1
- package/dist/interfaces/BaseObjectParams.d.ts +18 -18
- package/dist/interfaces/BaseObjectParams.js +18 -18
- package/dist/interfaces/ClassicalElementsParams.d.ts +18 -18
- package/dist/interfaces/ClassicalElementsParams.js +18 -18
- package/dist/interfaces/EquinoctialElementsParams.d.ts +18 -18
- package/dist/interfaces/EquinoctialElementsParams.js +18 -18
- package/dist/interfaces/GroundPositionParams.d.ts +18 -18
- package/dist/interfaces/GroundPositionParams.js +18 -18
- package/dist/interpolator/ChebyshevCoefficients.d.ts +4 -4
- package/dist/interpolator/ChebyshevCoefficients.js +1 -1
- package/dist/interpolator/ChebyshevCoefficients.js.map +1 -1
- package/dist/interpolator/ChebyshevInterpolator.d.ts +2 -2
- package/dist/interpolator/ChebyshevInterpolator.js +8 -8
- package/dist/interpolator/ChebyshevInterpolator.js.map +1 -1
- package/dist/interpolator/CubicSpline.d.ts +1 -1
- package/dist/interpolator/CubicSpline.js +1 -1
- package/dist/interpolator/CubicSplineInterpolator.d.ts +3 -3
- package/dist/interpolator/CubicSplineInterpolator.js +9 -9
- package/dist/interpolator/CubicSplineInterpolator.js.map +1 -1
- package/dist/interpolator/FieldInterpolator.d.ts +1 -1
- package/dist/interpolator/FieldInterpolator.js +1 -1
- package/dist/interpolator/Interpolator.d.ts +1 -1
- package/dist/interpolator/Interpolator.js +1 -1
- package/dist/interpolator/LagrangeInterpolator.d.ts +6 -6
- package/dist/interpolator/LagrangeInterpolator.js +1 -1
- package/dist/interpolator/LagrangeInterpolator.js.map +1 -1
- package/dist/interpolator/StateInterpolator.d.ts +1 -1
- package/dist/interpolator/StateInterpolator.js +1 -1
- package/dist/interpolator/VerletBlendInterpolator.d.ts +1 -1
- package/dist/interpolator/VerletBlendInterpolator.js +1 -1
- package/dist/main.d.ts +4 -2
- package/dist/main.js +4 -2
- package/dist/main.js.map +1 -1
- package/dist/maneuver/TwoBurnOrbitTransfer.d.ts +1 -1
- package/dist/maneuver/TwoBurnOrbitTransfer.js +1 -1
- package/dist/maneuver/Waypoint.d.ts +1 -1
- package/dist/maneuver/Waypoint.js +1 -1
- package/dist/objects/BaseObject.d.ts +18 -18
- package/dist/objects/BaseObject.js +18 -18
- package/dist/objects/DetailedSatellite.d.ts +1 -1
- package/dist/objects/DetailedSatellite.js +4 -2
- package/dist/objects/DetailedSatellite.js.map +1 -1
- package/dist/objects/DetailedSensor.d.ts +1 -1
- package/dist/objects/DetailedSensor.js +1 -1
- package/dist/objects/GroundObject.d.ts +18 -18
- package/dist/objects/GroundObject.js +18 -18
- package/dist/objects/LandObject.d.ts +1 -1
- package/dist/objects/LandObject.js +1 -1
- package/dist/objects/Marker.d.ts +1 -1
- package/dist/objects/Marker.js +1 -1
- package/dist/objects/Satellite.d.ts +18 -18
- package/dist/objects/Satellite.js +19 -19
- package/dist/objects/Satellite.js.map +1 -1
- package/dist/objects/Sensor.d.ts +18 -19
- package/dist/objects/Sensor.js +18 -19
- package/dist/objects/Sensor.js.map +1 -1
- package/dist/objects/Star.d.ts +18 -18
- package/dist/objects/Star.js +18 -18
- package/dist/observation/Observation.d.ts +1 -1
- package/dist/observation/Observation.js +1 -1
- package/dist/observation/ObservationOptical.d.ts +5 -5
- package/dist/observation/ObservationOptical.js +8 -8
- package/dist/observation/ObservationOptical.js.map +1 -1
- package/dist/observation/ObservationRadar.d.ts +5 -5
- package/dist/observation/ObservationRadar.js +8 -8
- package/dist/observation/ObservationRadar.js.map +1 -1
- package/dist/observation/ObservationUtils.d.ts +1 -1
- package/dist/observation/ObservationUtils.js +1 -1
- package/dist/observation/PropagatorPairs.d.ts +4 -4
- package/dist/observation/PropagatorPairs.js +7 -7
- package/dist/observation/PropagatorPairs.js.map +1 -1
- package/dist/observation/RAE.d.ts +18 -18
- package/dist/observation/RAE.js +18 -19
- package/dist/observation/RAE.js.map +1 -1
- package/dist/observation/RadecGeocentric.d.ts +18 -18
- package/dist/observation/RadecGeocentric.js +18 -18
- package/dist/observation/RadecTopocentric.d.ts +18 -18
- package/dist/observation/RadecTopocentric.js +18 -18
- package/dist/observation/index.d.ts +18 -18
- package/dist/observation/index.js +18 -18
- package/dist/operations/BoxMuller.d.ts +1 -1
- package/dist/operations/BoxMuller.js +1 -1
- package/dist/operations/EulerAngles.d.ts +1 -1
- package/dist/operations/EulerAngles.js +1 -1
- package/dist/operations/Matrix.d.ts +18 -18
- package/dist/operations/Matrix.js +63 -63
- package/dist/operations/Matrix.js.map +1 -1
- package/dist/operations/Quaternion.d.ts +6 -6
- package/dist/operations/Quaternion.js +1 -1
- package/dist/operations/Quaternion.js.map +1 -1
- package/dist/operations/Random.d.ts +18 -18
- package/dist/operations/Random.js +18 -18
- package/dist/operations/RandomGaussianSource.d.ts +2 -2
- package/dist/operations/RandomGaussianSource.js +4 -4
- package/dist/operations/RandomGaussianSource.js.map +1 -1
- package/dist/operations/Vector.d.ts +18 -18
- package/dist/operations/Vector.js +24 -24
- package/dist/operations/Vector.js.map +1 -1
- package/dist/operations/Vector3D.d.ts +18 -18
- package/dist/operations/Vector3D.js +18 -18
- package/dist/operations/operations.d.ts +18 -18
- package/dist/operations/operations.js +18 -18
- package/dist/optimize/ChebyshevCompressor.d.ts +3 -3
- package/dist/optimize/ChebyshevCompressor.js +7 -7
- package/dist/optimize/ChebyshevCompressor.js.map +1 -1
- package/dist/optimize/DownhillSimplex.d.ts +1 -1
- package/dist/optimize/DownhillSimplex.js +1 -1
- package/dist/optimize/GoldenSection.d.ts +2 -2
- package/dist/optimize/GoldenSection.js +3 -3
- package/dist/optimize/PolynomialRegression.d.ts +1 -1
- package/dist/optimize/PolynomialRegression.js +1 -1
- package/dist/optimize/PolynomicalRegressionResult.d.ts +1 -1
- package/dist/optimize/PolynomicalRegressionResult.js +1 -1
- package/dist/optimize/SimpleLinearRegression.d.ts +1 -1
- package/dist/optimize/SimpleLinearRegression.js +1 -1
- package/dist/optimize/SimplexEntry.d.ts +4 -4
- package/dist/optimize/SimplexEntry.js +10 -10
- package/dist/optimize/SimplexEntry.js.map +1 -1
- package/dist/orbit_determination/BatchLeastSquaresOD.d.ts +10 -10
- package/dist/orbit_determination/BatchLeastSquaresOD.js +1 -1
- package/dist/orbit_determination/BatchLeastSquaresOD.js.map +1 -1
- package/dist/orbit_determination/BatchLeastSquaresResult.d.ts +1 -1
- package/dist/orbit_determination/BatchLeastSquaresResult.js +1 -1
- package/dist/orbit_determination/GibbsIOD.d.ts +1 -1
- package/dist/orbit_determination/GibbsIOD.js +1 -1
- package/dist/orbit_determination/GoodingIOD.d.ts +1 -1
- package/dist/orbit_determination/GoodingIOD.js +1 -1
- package/dist/orbit_determination/HerrickGibbsIOD.d.ts +1 -1
- package/dist/orbit_determination/HerrickGibbsIOD.js +1 -1
- package/dist/orbit_determination/LambertIOD.d.ts +1 -1
- package/dist/orbit_determination/LambertIOD.js +1 -1
- package/dist/orbit_determination/ModifiedGoodingIOD.d.ts +3 -3
- package/dist/orbit_determination/ModifiedGoodingIOD.js +1 -1
- package/dist/orbit_determination/ModifiedGoodingIOD.js.map +1 -1
- package/dist/propagator/DormandPrince54Propagator.d.ts +5 -5
- package/dist/propagator/DormandPrince54Propagator.js +9 -9
- package/dist/propagator/DormandPrince54Propagator.js.map +1 -1
- package/dist/propagator/KeplerPropagator.d.ts +5 -5
- package/dist/propagator/KeplerPropagator.js +30 -30
- package/dist/propagator/KeplerPropagator.js.map +1 -1
- package/dist/propagator/Propagator.d.ts +1 -1
- package/dist/propagator/Propagator.js +1 -1
- package/dist/propagator/RkCheckpoint.d.ts +1 -1
- package/dist/propagator/RkCheckpoint.js +1 -1
- package/dist/propagator/RkResult.d.ts +1 -1
- package/dist/propagator/RkResult.js +1 -1
- package/dist/propagator/RungeKutta4Propagator.d.ts +2 -2
- package/dist/propagator/RungeKutta4Propagator.js +1 -1
- package/dist/propagator/RungeKutta4Propagator.js.map +1 -1
- package/dist/propagator/RungeKutta89Propagator.d.ts +5 -5
- package/dist/propagator/RungeKutta89Propagator.js +1 -1
- package/dist/propagator/RungeKutta89Propagator.js.map +1 -1
- package/dist/propagator/RungeKuttaAdaptive.d.ts +3 -3
- package/dist/propagator/RungeKuttaAdaptive.js +1 -1
- package/dist/propagator/RungeKuttaAdaptive.js.map +1 -1
- package/dist/propagator/Sgp4Propagator.d.ts +5 -5
- package/dist/propagator/Sgp4Propagator.js +15 -15
- package/dist/propagator/Sgp4Propagator.js.map +1 -1
- package/dist/sgp4/index.d.ts +18 -18
- package/dist/sgp4/index.js +18 -18
- package/dist/sgp4/sgp4.d.ts +17 -20
- package/dist/sgp4/sgp4.js +20 -23
- package/dist/sgp4/sgp4.js.map +1 -1
- package/dist/smoothing/ExponentialSmoothing.d.ts +1 -1
- package/dist/smoothing/ExponentialSmoothing.js +1 -1
- package/dist/time/Epoch.d.ts +18 -18
- package/dist/time/Epoch.js +18 -18
- package/dist/time/EpochGPS.d.ts +19 -19
- package/dist/time/EpochGPS.js +19 -19
- package/dist/time/EpochGPS.js.map +1 -1
- package/dist/time/EpochTAI.d.ts +18 -18
- package/dist/time/EpochTAI.js +18 -18
- package/dist/time/EpochTDB.d.ts +18 -18
- package/dist/time/EpochTDB.js +18 -18
- package/dist/time/EpochTT.d.ts +18 -18
- package/dist/time/EpochTT.js +18 -18
- package/dist/time/EpochUTC.d.ts +18 -18
- package/dist/time/EpochUTC.js +18 -18
- package/dist/time/EpochUTC.js.map +1 -1
- package/dist/time/EpochWindow.d.ts +18 -18
- package/dist/time/EpochWindow.js +18 -18
- package/dist/time/TimeStamped.d.ts +18 -22
- package/dist/time/TimeStamped.js +18 -22
- package/dist/time/TimeStamped.js.map +1 -1
- package/dist/time/index.d.ts +0 -22
- package/dist/time/index.js +0 -22
- package/dist/time/index.js.map +1 -1
- package/dist/transforms/TransformCache.d.ts +18 -18
- package/dist/transforms/TransformCache.js +18 -18
- package/dist/transforms/conversions.d.ts +18 -18
- package/dist/transforms/conversions.js +18 -18
- package/dist/types/types.d.ts +2 -2
- package/dist/types/types.js +1 -1
- package/dist/utils/create-covariance-from-tle.d.ts +18 -0
- package/dist/utils/create-covariance-from-tle.js +57 -0
- package/dist/utils/create-covariance-from-tle.js.map +1 -0
- package/dist/utils/functions.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/jacobian.d.ts +6 -0
- package/dist/utils/jacobian.js +6 -1
- package/dist/utils/jacobian.js.map +1 -1
- package/package.json +2 -2
- package/src/body/Celestial.ts +19 -19
- package/src/body/Earth.ts +18 -18
- package/src/body/NutationAngles.ts +18 -18
- package/src/body/PrecessionAngles.ts +18 -18
- package/src/body/Sun.ts +14 -18
- package/src/body/index.ts +18 -18
- package/src/coordinate/ClassicalElements.ts +21 -20
- package/src/coordinate/EquinoctialElements.ts +18 -18
- package/src/coordinate/FormatTle.ts +18 -18
- package/src/coordinate/Geodetic.ts +18 -18
- package/src/coordinate/Hill.ts +1 -1
- package/src/coordinate/ITRF.ts +18 -18
- package/src/coordinate/J2000.ts +18 -18
- package/src/coordinate/RIC.ts +18 -18
- package/src/coordinate/RelativeState.ts +18 -18
- package/src/coordinate/StateVector.ts +21 -20
- package/src/coordinate/TEME.ts +18 -18
- package/src/coordinate/Tle.ts +26 -26
- package/src/coordinate/index.ts +0 -1
- package/src/coordinate/tle-format-data.ts +18 -18
- package/src/covariance/CovarianceSample.ts +116 -18
- package/src/covariance/StateCovariance.ts +1 -1
- package/src/covariance/index.ts +2 -0
- package/src/data/DataHandler.ts +18 -18
- package/src/data/values/Egm96Data.ts +19 -19
- package/src/data/values/HpAtmosphereData.ts +21 -21
- package/src/data/values/HpAtmosphereResult.ts +18 -18
- package/src/data/values/Iau1980Data.ts +19 -19
- package/src/data/values/LeapSecond.ts +18 -18
- package/src/data/values/LeapSecondData.ts +24 -24
- package/src/data/values/egm96.ts +18 -18
- package/src/data/values/hpAtmosphere.ts +18 -18
- package/src/data/values/iau1980.ts +18 -18
- package/src/enums/AngularDiameterMethod.ts +18 -18
- package/src/enums/AngularDistanceMethod.ts +18 -18
- package/src/enums/OrbitRegime.ts +18 -18
- package/src/enums/PassType.ts +18 -18
- package/src/enums/Sgp4OpsMode.ts +18 -18
- package/src/force/AtmosphericDrag.ts +1 -3
- package/src/force/EarthGravity.ts +1 -1
- package/src/force/Force.ts +1 -1
- package/src/force/ForceModel.ts +1 -1
- package/src/force/Gravity.ts +1 -1
- package/src/force/SolarRadiationPressure.ts +1 -1
- package/src/force/ThirdBodyGravity.ts +1 -1
- package/src/force/Thrust.ts +1 -1
- package/src/interfaces/BaseObjectParams.ts +18 -18
- package/src/interfaces/ClassicalElementsParams.ts +18 -18
- package/src/interfaces/EquinoctialElementsParams.ts +18 -18
- package/src/interfaces/GroundPositionParams.ts +18 -18
- package/src/interpolator/ChebyshevCoefficients.ts +4 -4
- package/src/interpolator/ChebyshevInterpolator.ts +9 -9
- package/src/interpolator/CubicSpline.ts +1 -1
- package/src/interpolator/CubicSplineInterpolator.ts +7 -7
- package/src/interpolator/FieldInterpolator.ts +1 -1
- package/src/interpolator/Interpolator.ts +1 -1
- package/src/interpolator/LagrangeInterpolator.ts +6 -6
- package/src/interpolator/StateInterpolator.ts +1 -1
- package/src/interpolator/VerletBlendInterpolator.ts +1 -1
- package/src/main.ts +4 -2
- package/src/maneuver/TwoBurnOrbitTransfer.ts +1 -1
- package/src/maneuver/Waypoint.ts +1 -1
- package/src/objects/BaseObject.ts +18 -18
- package/src/objects/DetailedSatellite.ts +2 -1
- package/src/objects/DetailedSensor.ts +1 -1
- package/src/objects/GroundObject.ts +18 -18
- package/src/objects/LandObject.ts +1 -1
- package/src/objects/Marker.ts +1 -1
- package/src/objects/Satellite.ts +19 -19
- package/src/objects/Sensor.ts +18 -19
- package/src/objects/Star.ts +18 -18
- package/src/observation/Observation.ts +1 -1
- package/src/observation/ObservationOptical.ts +6 -6
- package/src/observation/ObservationRadar.ts +9 -5
- package/src/observation/ObservationUtils.ts +1 -1
- package/src/observation/PropagatorPairs.ts +3 -3
- package/src/observation/RAE.ts +18 -19
- package/src/observation/RadecGeocentric.ts +18 -18
- package/src/observation/RadecTopocentric.ts +18 -18
- package/src/observation/index.ts +18 -18
- package/src/operations/BoxMuller.ts +1 -1
- package/src/operations/EulerAngles.ts +1 -1
- package/src/operations/Matrix.ts +66 -66
- package/src/operations/Quaternion.ts +6 -6
- package/src/operations/Random.ts +18 -18
- package/src/operations/RandomGaussianSource.ts +4 -4
- package/src/operations/Vector.ts +24 -24
- package/src/operations/Vector3D.ts +18 -18
- package/src/operations/operations.ts +18 -18
- package/src/optimize/ChebyshevCompressor.ts +5 -5
- package/src/optimize/DownhillSimplex.ts +1 -1
- package/src/optimize/GoldenSection.ts +3 -3
- package/src/optimize/PolynomialRegression.ts +1 -1
- package/src/optimize/PolynomicalRegressionResult.ts +1 -1
- package/src/optimize/SimpleLinearRegression.ts +1 -1
- package/src/optimize/SimplexEntry.ts +8 -8
- package/src/orbit_determination/BatchLeastSquaresOD.ts +10 -10
- package/src/orbit_determination/BatchLeastSquaresResult.ts +1 -1
- package/src/orbit_determination/GibbsIOD.ts +1 -1
- package/src/orbit_determination/GoodingIOD.ts +1 -1
- package/src/orbit_determination/HerrickGibbsIOD.ts +1 -1
- package/src/orbit_determination/LambertIOD.ts +1 -1
- package/src/orbit_determination/ModifiedGoodingIOD.ts +3 -3
- package/src/propagator/DormandPrince54Propagator.ts +9 -9
- package/src/propagator/KeplerPropagator.ts +30 -30
- package/src/propagator/Propagator.ts +1 -1
- package/src/propagator/RkCheckpoint.ts +1 -1
- package/src/propagator/RkResult.ts +1 -1
- package/src/propagator/RungeKutta4Propagator.ts +2 -2
- package/src/propagator/RungeKutta89Propagator.ts +5 -5
- package/src/propagator/RungeKuttaAdaptive.ts +3 -3
- package/src/propagator/Sgp4Propagator.ts +13 -13
- package/src/sgp4/index.ts +18 -18
- package/src/sgp4/sgp4.LICENSE.md +2 -2
- package/src/sgp4/sgp4.ts +20 -23
- package/src/smoothing/ExponentialSmoothing.ts +1 -1
- package/src/time/Epoch.ts +18 -18
- package/src/time/EpochGPS.ts +20 -20
- package/src/time/EpochTAI.ts +18 -18
- package/src/time/EpochTDB.ts +18 -18
- package/src/time/EpochTT.ts +18 -18
- package/src/time/EpochUTC.ts +20 -20
- package/src/time/EpochWindow.ts +18 -18
- package/src/time/TimeStamped.ts +18 -22
- package/src/time/index.ts +0 -23
- package/src/transforms/TransformCache.ts +18 -18
- package/src/transforms/conversions.ts +18 -18
- package/src/types/types.ts +2 -2
- package/src/utils/create-covariance-from-tle.ts +75 -0
- package/src/utils/functions.ts +3 -3
- package/src/utils/index.ts +1 -0
- package/src/utils/jacobian.ts +6 -2
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @author Theodore Kruczek
|
|
3
|
-
* @
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* Software without restriction, including without limitation the rights to use,
|
|
8
|
-
* copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
9
|
-
* the Software, and to permit persons to whom the Software is furnished to do
|
|
10
|
-
* so, subject to the following conditions:
|
|
2
|
+
* @author @thkruz Theodore Kruczek
|
|
3
|
+
* @description Orbital Object ToolKit (ootk) is a collection of tools for working
|
|
4
|
+
* with satellites and other orbital objects.
|
|
5
|
+
* @license AGPL-3.0-or-later
|
|
6
|
+
* @copyright (c) 2025 Kruczek Labs LLC
|
|
11
7
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
8
|
+
* Many of the classes are based off of the work of @david-rc-dayton and his
|
|
9
|
+
* Pious Squid library (https://github.com/david-rc-dayton/pious_squid) which
|
|
10
|
+
* is licensed under the MIT license.
|
|
14
11
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
12
|
+
* Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
|
|
13
|
+
* terms of the GNU Affero General Public License as published by the Free Software
|
|
14
|
+
* Foundation, either version 3 of the License, or (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
17
|
+
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
18
|
+
* See the GNU Affero General Public License for more details.
|
|
19
|
+
*
|
|
20
|
+
* You should have received a copy of the GNU Affero General Public License along with
|
|
21
|
+
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
24
|
import { Kilometers, KilometersPerSecond } from '../main.js';
|
|
@@ -1,28 +1,29 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @author Theodore Kruczek
|
|
3
|
-
* @
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* Software without restriction, including without limitation the rights to use,
|
|
8
|
-
* copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
9
|
-
* the Software, and to permit persons to whom the Software is furnished to do
|
|
10
|
-
* so, subject to the following conditions:
|
|
2
|
+
* @author @thkruz Theodore Kruczek
|
|
3
|
+
* @description Orbital Object ToolKit (ootk) is a collection of tools for working
|
|
4
|
+
* with satellites and other orbital objects.
|
|
5
|
+
* @license AGPL-3.0-or-later
|
|
6
|
+
* @copyright (c) 2025 Kruczek Labs LLC
|
|
11
7
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
8
|
+
* Many of the classes are based off of the work of @david-rc-dayton and his
|
|
9
|
+
* Pious Squid library (https://github.com/david-rc-dayton/pious_squid) which
|
|
10
|
+
* is licensed under the MIT license.
|
|
14
11
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
12
|
+
* Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
|
|
13
|
+
* terms of the GNU Affero General Public License as published by the Free Software
|
|
14
|
+
* Foundation, either version 3 of the License, or (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
17
|
+
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
18
|
+
* See the GNU Affero General Public License for more details.
|
|
19
|
+
*
|
|
20
|
+
* You should have received a copy of the GNU Affero General Public License along with
|
|
21
|
+
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
|
-
import {
|
|
25
|
-
|
|
24
|
+
import {
|
|
25
|
+
ClassicalElements, TAU, Earth, Kilometers, KilometersPerSecond, Minutes, EpochUTC, Vector3D,
|
|
26
|
+
} from '../main.js';
|
|
26
27
|
|
|
27
28
|
/**
|
|
28
29
|
* A state vector is a set of coordinates used to specify the position and
|
package/src/coordinate/TEME.ts
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @author Theodore Kruczek
|
|
3
|
-
* @
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* Software without restriction, including without limitation the rights to use,
|
|
8
|
-
* copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
9
|
-
* the Software, and to permit persons to whom the Software is furnished to do
|
|
10
|
-
* so, subject to the following conditions:
|
|
2
|
+
* @author @thkruz Theodore Kruczek
|
|
3
|
+
* @description Orbital Object ToolKit (ootk) is a collection of tools for working
|
|
4
|
+
* with satellites and other orbital objects.
|
|
5
|
+
* @license AGPL-3.0-or-later
|
|
6
|
+
* @copyright (c) 2025 Kruczek Labs LLC
|
|
11
7
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
8
|
+
* Many of the classes are based off of the work of @david-rc-dayton and his
|
|
9
|
+
* Pious Squid library (https://github.com/david-rc-dayton/pious_squid) which
|
|
10
|
+
* is licensed under the MIT license.
|
|
14
11
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
12
|
+
* Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
|
|
13
|
+
* terms of the GNU Affero General Public License as published by the Free Software
|
|
14
|
+
* Foundation, either version 3 of the License, or (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
17
|
+
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
18
|
+
* See the GNU Affero General Public License for more details.
|
|
19
|
+
*
|
|
20
|
+
* You should have received a copy of the GNU Affero General Public License along with
|
|
21
|
+
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
24
|
import { Kilometers, KilometersPerSecond, Radians, Vector3D } from '../main.js';
|
package/src/coordinate/Tle.ts
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
/* eslint-disable max-lines */
|
|
2
2
|
/**
|
|
3
|
-
* @author Theodore Kruczek
|
|
4
|
-
* @
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* Software without restriction, including without limitation the rights to use,
|
|
9
|
-
* copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
10
|
-
* the Software, and to permit persons to whom the Software is furnished to do
|
|
11
|
-
* so, subject to the following conditions:
|
|
3
|
+
* @author @thkruz Theodore Kruczek
|
|
4
|
+
* @description Orbital Object ToolKit (ootk) is a collection of tools for working
|
|
5
|
+
* with satellites and other orbital objects.
|
|
6
|
+
* @license AGPL-3.0-or-later
|
|
7
|
+
* @copyright (c) 2025 Kruczek Labs LLC
|
|
12
8
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
9
|
+
* Many of the classes are based off of the work of @david-rc-dayton and his
|
|
10
|
+
* Pious Squid library (https://github.com/david-rc-dayton/pious_squid) which
|
|
11
|
+
* is licensed under the MIT license.
|
|
15
12
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
13
|
+
* Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
|
|
14
|
+
* terms of the GNU Affero General Public License as published by the Free Software
|
|
15
|
+
* Foundation, either version 3 of the License, or (at your option) any later version.
|
|
16
|
+
*
|
|
17
|
+
* Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
18
|
+
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
19
|
+
* See the GNU Affero General Public License for more details.
|
|
20
|
+
*
|
|
21
|
+
* You should have received a copy of the GNU Affero General Public License along with
|
|
22
|
+
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
23
23
|
*/
|
|
24
24
|
|
|
25
25
|
import { ClassicalElements, FormatTle, TEME } from './index.js';
|
|
26
26
|
import { Sgp4OpsMode } from '../enums/Sgp4OpsMode.js';
|
|
27
|
-
import {
|
|
27
|
+
import { Sgp4, Vector3D } from '../main.js';
|
|
28
28
|
import { Sgp4GravConstants } from '../sgp4/sgp4.js';
|
|
29
29
|
import { EpochUTC } from '../time/EpochUTC.js';
|
|
30
30
|
import {
|
|
@@ -51,8 +51,8 @@ import { TleFormatData } from './tle-format-data.js';
|
|
|
51
51
|
* Tle is a static class with a collection of methods for working with TLEs.
|
|
52
52
|
*/
|
|
53
53
|
export class Tle {
|
|
54
|
-
line1:
|
|
55
|
-
line2:
|
|
54
|
+
line1: TleLine1;
|
|
55
|
+
line2: TleLine2;
|
|
56
56
|
epoch: EpochUTC;
|
|
57
57
|
satnum: number;
|
|
58
58
|
private readonly satrec_: SatelliteRecord;
|
|
@@ -136,8 +136,8 @@ export class Tle {
|
|
|
136
136
|
opsMode: Sgp4OpsMode = Sgp4OpsMode.AFSPC,
|
|
137
137
|
gravConst: Sgp4GravConstants = Sgp4GravConstants.wgs72,
|
|
138
138
|
) {
|
|
139
|
-
this.line1 = line1;
|
|
140
|
-
this.line2 = line2;
|
|
139
|
+
this.line1 = line1 as TleLine1;
|
|
140
|
+
this.line2 = line2 as TleLine2;
|
|
141
141
|
this.epoch = Tle.parseEpoch_(line1.substring(18, 32));
|
|
142
142
|
this.satnum = parseInt(Tle.convertA5to6Digit(line1.substring(2, 7)));
|
|
143
143
|
this.satrec_ = Sgp4.createSatrec(line1, line2, gravConst, opsMode);
|
|
@@ -228,7 +228,7 @@ export class Tle {
|
|
|
228
228
|
}
|
|
229
229
|
|
|
230
230
|
static calcElsetAge(
|
|
231
|
-
|
|
231
|
+
tle1: TleLine1,
|
|
232
232
|
nowInput?: Date,
|
|
233
233
|
outputUnits: 'days' | 'hours' | 'minutes' | 'seconds' = 'days',
|
|
234
234
|
): number {
|
|
@@ -236,8 +236,8 @@ export class Tle {
|
|
|
236
236
|
const currentYearFull = nowInput.getUTCFullYear();
|
|
237
237
|
const currentYearShort = currentYearFull % 100;
|
|
238
238
|
|
|
239
|
-
const epochYearShort = parseInt(
|
|
240
|
-
const epochDayOfYear = parseFloat(
|
|
239
|
+
const epochYearShort = parseInt(tle1.substring(18, 20), 10);
|
|
240
|
+
const epochDayOfYear = parseFloat(tle1.substring(20, 32));
|
|
241
241
|
|
|
242
242
|
let epochYearFull: number;
|
|
243
243
|
|
package/src/coordinate/index.ts
CHANGED
|
@@ -4,7 +4,6 @@ export * from './FormatTle.js';
|
|
|
4
4
|
export * from './Geodetic.js';
|
|
5
5
|
export * from './ITRF.js';
|
|
6
6
|
export * from './J2000.js';
|
|
7
|
-
// export * from '../enums/OrbitRegime.js';
|
|
8
7
|
export * from './RelativeState.js';
|
|
9
8
|
export * from './RIC.js';
|
|
10
9
|
export * from './StateVector.js';
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @author Theodore Kruczek
|
|
3
|
-
* @
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* Software without restriction, including without limitation the rights to use,
|
|
8
|
-
* copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
9
|
-
* the Software, and to permit persons to whom the Software is furnished to do
|
|
10
|
-
* so, subject to the following conditions:
|
|
2
|
+
* @author @thkruz Theodore Kruczek
|
|
3
|
+
* @description Orbital Object ToolKit (ootk) is a collection of tools for working
|
|
4
|
+
* with satellites and other orbital objects.
|
|
5
|
+
* @license AGPL-3.0-or-later
|
|
6
|
+
* @copyright (c) 2025 Kruczek Labs LLC
|
|
11
7
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
8
|
+
* Many of the classes are based off of the work of @david-rc-dayton and his
|
|
9
|
+
* Pious Squid library (https://github.com/david-rc-dayton/pious_squid) which
|
|
10
|
+
* is licensed under the MIT license.
|
|
14
11
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
12
|
+
* Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
|
|
13
|
+
* terms of the GNU Affero General Public License as published by the Free Software
|
|
14
|
+
* Foundation, either version 3 of the License, or (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
17
|
+
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
18
|
+
* See the GNU Affero General Public License for more details.
|
|
19
|
+
*
|
|
20
|
+
* You should have received a copy of the GNU Affero General Public License along with
|
|
21
|
+
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
24
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @author @thkruz Theodore Kruczek
|
|
3
3
|
* @license AGPL-3.0-or-later
|
|
4
|
-
* @copyright (c)
|
|
4
|
+
* @copyright (c) 2025 Kruczek Labs LLC
|
|
5
5
|
*
|
|
6
6
|
* Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
|
|
7
7
|
* terms of the GNU Affero General Public License as published by the Free Software
|
|
@@ -23,8 +23,10 @@ import {
|
|
|
23
23
|
Kilometers,
|
|
24
24
|
KilometersPerSecond,
|
|
25
25
|
Matrix,
|
|
26
|
+
OrbitRegime,
|
|
26
27
|
RelativeState,
|
|
27
28
|
RIC,
|
|
29
|
+
Tle, Vec3Flat,
|
|
28
30
|
Vector,
|
|
29
31
|
Vector3D,
|
|
30
32
|
} from '../main.js';
|
|
@@ -35,9 +37,9 @@ import { CovarianceFrame, StateCovariance } from './StateCovariance.js';
|
|
|
35
37
|
|
|
36
38
|
// / Sigma point covariance sample.
|
|
37
39
|
export class CovarianceSample {
|
|
38
|
-
private
|
|
39
|
-
private
|
|
40
|
-
private matrix_ = Matrix.zero(6, 12);
|
|
40
|
+
private readonly origin_: RungeKutta89Propagator;
|
|
41
|
+
private readonly samples_: RungeKutta89Propagator[] = [];
|
|
42
|
+
private readonly matrix_ = Matrix.zero(6, 12);
|
|
41
43
|
|
|
42
44
|
/**
|
|
43
45
|
* Create a new [CovarianceSample] object from an inertial state, covariance
|
|
@@ -46,19 +48,45 @@ export class CovarianceSample {
|
|
|
46
48
|
* Two-body physics will be used if a force model is not provided.
|
|
47
49
|
* @param state The origin state.
|
|
48
50
|
* @param covariance The covariance.
|
|
51
|
+
* @param tle The TLE object.
|
|
49
52
|
* @param originForceModel The force model for the origin state.
|
|
50
53
|
* @param sampleForceModel The force model for the samples.
|
|
51
54
|
*/
|
|
52
|
-
constructor(
|
|
55
|
+
constructor(
|
|
56
|
+
state: J2000, covariance: StateCovariance, tle?: Tle, originForceModel?: ForceModel, sampleForceModel?: ForceModel,
|
|
57
|
+
) {
|
|
53
58
|
originForceModel ??= new ForceModel().setGravity();
|
|
54
59
|
sampleForceModel ??= new ForceModel().setGravity();
|
|
55
|
-
|
|
60
|
+
|
|
61
|
+
// Scale covariance using TLE quality and regime aging factor if TLE info is provided
|
|
62
|
+
let scale = [1, 1, 1];
|
|
63
|
+
|
|
64
|
+
if (tle) {
|
|
65
|
+
const tleAgeDays = Tle.calcElsetAge(tle.line1, new Date(), 'days');
|
|
66
|
+
|
|
67
|
+
const quality = this.evaluateTleQuality(tle);
|
|
68
|
+
const aging = this.getRegimeAgingFactor(tle, tleAgeDays);
|
|
69
|
+
|
|
70
|
+
scale = [
|
|
71
|
+
quality[0] * aging[0],
|
|
72
|
+
quality[1] * aging[1],
|
|
73
|
+
quality[2] * aging[2],
|
|
74
|
+
];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
this.origin_ = new RungeKutta89Propagator(state, originForceModel);
|
|
56
78
|
const s = covariance.matrix.cholesky().elements;
|
|
57
79
|
const sqrt6 = Math.sqrt(6.0);
|
|
58
80
|
|
|
59
81
|
for (let i = 0; i < 6; i++) {
|
|
60
82
|
for (let j = 0; j < 6; j++) {
|
|
61
|
-
|
|
83
|
+
/*
|
|
84
|
+
* Apply scale[0] to R, scale[1] to I, scale[2] to C (x, y, z)
|
|
85
|
+
* Position: i = 0,1,2; Velocity: i = 3,4,5
|
|
86
|
+
*/
|
|
87
|
+
const scaleIdx = i % 3;
|
|
88
|
+
|
|
89
|
+
s[i][j] *= sqrt6 * scale[scaleIdx];
|
|
62
90
|
}
|
|
63
91
|
}
|
|
64
92
|
|
|
@@ -92,23 +120,23 @@ export class CovarianceSample {
|
|
|
92
120
|
if (covariance.frame === CovarianceFrame.ECI) {
|
|
93
121
|
const sample = new J2000(state.epoch, state.position.add(sampleR), state.velocity.add(sampleV));
|
|
94
122
|
|
|
95
|
-
this.
|
|
123
|
+
this.samples_.push(new RungeKutta89Propagator(sample, sampleForceModel));
|
|
96
124
|
} else if (covariance.frame === CovarianceFrame.RIC) {
|
|
97
125
|
const sample = new RIC(sampleR, sampleV).toJ2000(state);
|
|
98
126
|
|
|
99
|
-
this.
|
|
127
|
+
this.samples_.push(new RungeKutta89Propagator(sample, sampleForceModel));
|
|
100
128
|
}
|
|
101
129
|
}
|
|
102
130
|
}
|
|
103
131
|
|
|
104
132
|
// / Current covariance sample epoch.
|
|
105
133
|
get epoch(): Epoch {
|
|
106
|
-
return this.
|
|
134
|
+
return this.origin_.state.epoch;
|
|
107
135
|
}
|
|
108
136
|
|
|
109
137
|
// / Current covariance sample origin state.
|
|
110
138
|
get state(): J2000 {
|
|
111
|
-
return this.
|
|
139
|
+
return this.origin_.state;
|
|
112
140
|
}
|
|
113
141
|
|
|
114
142
|
// / Rebuild covariance from sigma points.
|
|
@@ -142,16 +170,16 @@ export class CovarianceSample {
|
|
|
142
170
|
|
|
143
171
|
// / Propagate covariance to a new epoch.
|
|
144
172
|
propagate(epoch: EpochUTC): void {
|
|
145
|
-
this.
|
|
146
|
-
for (const sample of this.
|
|
173
|
+
this.origin_.propagate(epoch);
|
|
174
|
+
for (const sample of this.samples_) {
|
|
147
175
|
sample.propagate(epoch);
|
|
148
176
|
}
|
|
149
177
|
}
|
|
150
178
|
|
|
151
179
|
// / Apply a maneuver to this covariance.
|
|
152
180
|
maneuver(maneuver: Thrust): void {
|
|
153
|
-
this.
|
|
154
|
-
for (const sample of this.
|
|
181
|
+
this.origin_.maneuver(maneuver);
|
|
182
|
+
for (const sample of this.samples_) {
|
|
155
183
|
sample.maneuver(maneuver);
|
|
156
184
|
}
|
|
157
185
|
}
|
|
@@ -159,7 +187,7 @@ export class CovarianceSample {
|
|
|
159
187
|
// / Desample covariance in J2000 frame.
|
|
160
188
|
desampleJ2000(): StateCovariance {
|
|
161
189
|
for (let i = 0; i < 12; i++) {
|
|
162
|
-
const state = this.
|
|
190
|
+
const state = this.samples_[i].state;
|
|
163
191
|
|
|
164
192
|
this.matrix_.elements[0][i] = state.position.x;
|
|
165
193
|
this.matrix_.elements[1][i] = state.position.y;
|
|
@@ -175,10 +203,10 @@ export class CovarianceSample {
|
|
|
175
203
|
|
|
176
204
|
// / Desample covariance in RIC frame.
|
|
177
205
|
desampleRIC(): StateCovariance {
|
|
178
|
-
const rot = RelativeState.createMatrix(this.
|
|
206
|
+
const rot = RelativeState.createMatrix(this.origin_.state.position, this.origin_.state.velocity);
|
|
179
207
|
|
|
180
208
|
for (let i = 0; i < 12; i++) {
|
|
181
|
-
const state = RIC.fromJ2000Matrix(this.
|
|
209
|
+
const state = RIC.fromJ2000Matrix(this.samples_[i].state, this.origin_.state, rot);
|
|
182
210
|
|
|
183
211
|
this.matrix_.elements[0][i] = state.position.x;
|
|
184
212
|
this.matrix_.elements[1][i] = state.position.y;
|
|
@@ -191,4 +219,74 @@ export class CovarianceSample {
|
|
|
191
219
|
|
|
192
220
|
return new StateCovariance(matrix, CovarianceFrame.RIC);
|
|
193
221
|
}
|
|
222
|
+
|
|
223
|
+
evaluateTleQuality(tle: Tle): Vec3Flat {
|
|
224
|
+
let c = 1,
|
|
225
|
+
i = 1,
|
|
226
|
+
r = 1; // start with nominal 120 / 1000 / 100 m
|
|
227
|
+
|
|
228
|
+
/* ---- Mean–motion first derivative (rev/day²) ---- */
|
|
229
|
+
const mm1 = Math.abs(Tle.meanMoDev1(tle.line1));
|
|
230
|
+
|
|
231
|
+
if (mm1 > 1e-3) { // clear manoeuvre or very low-drag orbit
|
|
232
|
+
i *= 3.0;
|
|
233
|
+
r *= 2.0;
|
|
234
|
+
c *= 1.2;
|
|
235
|
+
} else if (mm1 > 1e-5) { // high drag but likely passive
|
|
236
|
+
i *= 1.6;
|
|
237
|
+
r *= 1.3;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/* ---- BSTAR drag term ---- */
|
|
241
|
+
const bstar = Math.abs(Tle.bstar(tle.line1));
|
|
242
|
+
|
|
243
|
+
if (bstar > 5e-4) { // <≈400 km LEO
|
|
244
|
+
i *= 1.5;
|
|
245
|
+
r *= 1.5;
|
|
246
|
+
c *= 1.1;
|
|
247
|
+
} else if (bstar > 1e-4) { // 400–600 km
|
|
248
|
+
i *= 1.2;
|
|
249
|
+
r *= 1.2;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/* ---- Eccentricity ---- */
|
|
253
|
+
const e = tle.eccentricity;
|
|
254
|
+
|
|
255
|
+
if (e > 0.05) { // HEO, GTO, cubesat transfer, etc.
|
|
256
|
+
r *= 1 + 6 * e;
|
|
257
|
+
i *= 1 + 4 * e;
|
|
258
|
+
c *= 1 + 1 * e;
|
|
259
|
+
} else if (e > 0.02) { // mildly elliptical LEO/MEO
|
|
260
|
+
r *= 1 + 3 * e;
|
|
261
|
+
i *= 1 + 2 * e;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
return [r, i, c];
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
getRegimeAgingFactor(tle: Tle, ageDays: number): Vec3Flat {
|
|
268
|
+
const regime = tle.state.toClassicalElements().getOrbitRegime();
|
|
269
|
+
const t = Math.max(ageDays, 0) ** 1.5; // non-linear growth
|
|
270
|
+
|
|
271
|
+
switch (regime) {
|
|
272
|
+
|
|
273
|
+
case OrbitRegime.LEO:
|
|
274
|
+
// Target ~×2 (R), ×3 (I), ×2.2 (C) after 1 day
|
|
275
|
+
return [1 + 1.0 * t, 1 + 2.0 * t, 1 + 1.2 * t];
|
|
276
|
+
|
|
277
|
+
case OrbitRegime.MEO:
|
|
278
|
+
// GNSS shells – slower growth
|
|
279
|
+
return [1 + 0.4 * t, 1 + 0.9 * t, 1 + 0.6 * t];
|
|
280
|
+
|
|
281
|
+
case OrbitRegime.GEO:
|
|
282
|
+
return [1 + 0.2 * t, 1 + 0.5 * t, 1 + 0.3 * t];
|
|
283
|
+
|
|
284
|
+
case OrbitRegime.HEO:
|
|
285
|
+
// Highly elliptical transfer or Molniya
|
|
286
|
+
return [1 + 1.2 * t, 1 + 2.4 * t, 1 + 1.4 * t];
|
|
287
|
+
|
|
288
|
+
default:
|
|
289
|
+
return [1 + 0.6 * t, 1 + 1.2 * t, 1 + 0.8 * t];
|
|
290
|
+
}
|
|
291
|
+
}
|
|
194
292
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @author @thkruz Theodore Kruczek
|
|
3
3
|
* @license AGPL-3.0-or-later
|
|
4
|
-
* @copyright (c)
|
|
4
|
+
* @copyright (c) 2025 Kruczek Labs LLC
|
|
5
5
|
*
|
|
6
6
|
* Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
|
|
7
7
|
* terms of the GNU Affero General Public License as published by the Free Software
|
package/src/data/DataHandler.ts
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @author Theodore Kruczek
|
|
3
|
-
* @
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* Software without restriction, including without limitation the rights to use,
|
|
8
|
-
* copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
9
|
-
* the Software, and to permit persons to whom the Software is furnished to do
|
|
10
|
-
* so, subject to the following conditions:
|
|
2
|
+
* @author @thkruz Theodore Kruczek
|
|
3
|
+
* @description Orbital Object ToolKit (ootk) is a collection of tools for working
|
|
4
|
+
* with satellites and other orbital objects.
|
|
5
|
+
* @license AGPL-3.0-or-later
|
|
6
|
+
* @copyright (c) 2025 Kruczek Labs LLC
|
|
11
7
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
8
|
+
* Many of the classes are based off of the work of @david-rc-dayton and his
|
|
9
|
+
* Pious Squid library (https://github.com/david-rc-dayton/pious_squid) which
|
|
10
|
+
* is licensed under the MIT license.
|
|
14
11
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
12
|
+
* Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
|
|
13
|
+
* terms of the GNU Affero General Public License as published by the Free Software
|
|
14
|
+
* Foundation, either version 3 of the License, or (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
17
|
+
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
18
|
+
* See the GNU Affero General Public License for more details.
|
|
19
|
+
*
|
|
20
|
+
* You should have received a copy of the GNU Affero General Public License along with
|
|
21
|
+
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
24
|
import { egm96Data, Egm96Entry } from './values/Egm96Data.js';
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @author Theodore Kruczek
|
|
3
|
-
* @
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* Software without restriction, including without limitation the rights to use,
|
|
8
|
-
* copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
9
|
-
* the Software, and to permit persons to whom the Software is furnished to do
|
|
10
|
-
* so, subject to the following conditions:
|
|
2
|
+
* @author @thkruz Theodore Kruczek
|
|
3
|
+
* @description Orbital Object ToolKit (ootk) is a collection of tools for working
|
|
4
|
+
* with satellites and other orbital objects.
|
|
5
|
+
* @license AGPL-3.0-or-later
|
|
6
|
+
* @copyright (c) 2025 Kruczek Labs LLC
|
|
11
7
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
8
|
+
* Many of the classes are based off of the work of @david-rc-dayton and his
|
|
9
|
+
* Pious Squid library (https://github.com/david-rc-dayton/pious_squid) which
|
|
10
|
+
* is licensed under the MIT license.
|
|
14
11
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
12
|
+
* Orbital Object ToolKit is free software: you can redistribute it and/or modify it under the
|
|
13
|
+
* terms of the GNU Affero General Public License as published by the Free Software
|
|
14
|
+
* Foundation, either version 3 of the License, or (at your option) any later version.
|
|
15
|
+
*
|
|
16
|
+
* Orbital Object ToolKit is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
17
|
+
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
18
|
+
* See the GNU Affero General Public License for more details.
|
|
19
|
+
*
|
|
20
|
+
* You should have received a copy of the GNU Affero General Public License along with
|
|
21
|
+
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
24
|
import { factorial } from '../../utils/functions.js';
|
|
@@ -62,7 +62,7 @@ export class Egm96Data {
|
|
|
62
62
|
|
|
63
63
|
// / Return de-normalized EGM-96 coefficients for a given [l] and [m] index.
|
|
64
64
|
getCoeffs(l: number, m: number): Egm96Entry {
|
|
65
|
-
return this.coeffs_[Egm96Data.index_(l, m)]
|
|
65
|
+
return this.coeffs_[Egm96Data.index_(l, m)];
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
// / Return the EGM-96 index for a given [l] and [m] lookup.
|