ootk 4.0.9 → 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/README.md +0 -15
- package/dist/body/Celestial.d.ts +96 -0
- package/dist/body/Celestial.js +124 -0
- package/dist/body/Celestial.js.map +1 -0
- package/dist/body/Earth.d.ts +68 -0
- package/dist/body/Earth.js +198 -0
- package/dist/body/Earth.js.map +1 -0
- package/dist/body/Moon.d.ts +137 -0
- package/dist/body/Moon.js +464 -0
- package/dist/body/Moon.js.map +1 -0
- package/dist/body/NutationAngles.d.ts +38 -0
- package/dist/body/NutationAngles.js +24 -0
- package/dist/body/NutationAngles.js.map +1 -0
- package/dist/body/PrecessionAngles.d.ts +29 -0
- package/dist/body/PrecessionAngles.js +24 -0
- package/dist/body/PrecessionAngles.js.map +1 -0
- package/dist/body/Sun.d.ts +301 -0
- package/dist/body/Sun.js +544 -0
- package/dist/body/Sun.js.map +1 -0
- package/dist/body/index.d.ts +26 -0
- package/dist/body/index.js +27 -0
- package/dist/body/index.js.map +1 -0
- package/dist/coordinate/ClassicalElements.d.ts +132 -0
- package/dist/coordinate/ClassicalElements.js +279 -0
- package/dist/coordinate/ClassicalElements.js.map +1 -0
- package/dist/coordinate/EquinoctialElements.d.ts +114 -0
- package/dist/coordinate/EquinoctialElements.js +172 -0
- package/dist/coordinate/EquinoctialElements.js.map +1 -0
- package/dist/coordinate/FormatTle.d.ts +95 -0
- package/dist/coordinate/FormatTle.js +184 -0
- package/dist/coordinate/FormatTle.js.map +1 -0
- package/dist/coordinate/Geodetic.d.ts +110 -0
- package/dist/coordinate/Geodetic.js +163 -0
- package/dist/coordinate/Geodetic.js.map +1 -0
- package/dist/coordinate/Hill.d.ts +2 -2
- package/dist/coordinate/Hill.js +2 -2
- package/dist/coordinate/Hill.js.map +1 -1
- package/dist/coordinate/ITRF.d.ts +75 -0
- package/dist/coordinate/ITRF.js +134 -0
- package/dist/coordinate/ITRF.js.map +1 -0
- package/dist/coordinate/J2000.d.ts +65 -0
- package/dist/coordinate/J2000.js +120 -0
- package/dist/coordinate/J2000.js.map +1 -0
- package/dist/coordinate/RIC.d.ts +64 -0
- package/dist/coordinate/RIC.js +79 -0
- package/dist/coordinate/RIC.js.map +1 -0
- package/dist/coordinate/RelativeState.d.ts +70 -0
- package/dist/coordinate/RelativeState.js +79 -0
- package/dist/coordinate/RelativeState.js.map +1 -0
- package/dist/coordinate/StateVector.d.ts +76 -0
- package/dist/coordinate/StateVector.js +97 -0
- package/dist/coordinate/StateVector.js.map +1 -0
- package/dist/coordinate/TEME.d.ts +57 -0
- package/dist/coordinate/TEME.js +89 -0
- package/dist/coordinate/TEME.js.map +1 -0
- package/dist/coordinate/Tle.d.ts +429 -0
- package/dist/coordinate/Tle.js +865 -0
- package/dist/coordinate/Tle.js.map +1 -0
- package/dist/coordinate/index.d.ts +11 -0
- package/dist/coordinate/index.js +11 -0
- package/dist/coordinate/index.js.map +1 -1
- package/dist/coordinate/tle-format-data.d.ts +41 -0
- package/dist/coordinate/tle-format-data.js +46 -0
- package/dist/coordinate/tle-format-data.js.map +1 -0
- 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 +2 -2
- package/dist/covariance/StateCovariance.js +2 -2
- package/dist/covariance/StateCovariance.js.map +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 +66 -0
- package/dist/data/DataHandler.js +80 -0
- package/dist/data/DataHandler.js.map +1 -0
- package/dist/data/values/Egm96Data.d.ts +37 -0
- package/dist/data/values/Egm96Data.js +63 -0
- package/dist/data/values/Egm96Data.js.map +1 -0
- package/dist/data/values/HpAtmosphereData.d.ts +33 -0
- package/dist/data/values/HpAtmosphereData.js +58 -0
- package/dist/data/values/HpAtmosphereData.js.map +1 -0
- package/dist/data/values/HpAtmosphereResult.d.ts +29 -0
- package/dist/data/values/HpAtmosphereResult.js +38 -0
- package/dist/data/values/HpAtmosphereResult.js.map +1 -0
- package/dist/data/values/Iau1980Data.d.ts +36 -0
- package/dist/data/values/Iau1980Data.js +52 -0
- package/dist/data/values/Iau1980Data.js.map +1 -0
- package/dist/data/values/LeapSecond.d.ts +27 -0
- package/dist/data/values/LeapSecond.js +35 -0
- package/dist/data/values/LeapSecond.js.map +1 -0
- package/dist/data/values/LeapSecondData.d.ts +41 -0
- package/dist/data/values/LeapSecondData.js +103 -0
- package/dist/data/values/LeapSecondData.js.map +1 -0
- package/dist/data/values/egm96.d.ts +24 -0
- package/dist/data/values/egm96.js +726 -0
- package/dist/data/values/egm96.js.map +1 -0
- package/dist/data/values/hpAtmosphere.d.ts +24 -0
- package/dist/data/values/hpAtmosphere.js +76 -0
- package/dist/data/values/hpAtmosphere.js.map +1 -0
- package/dist/data/values/iau1980.d.ts +24 -0
- package/dist/data/values/iau1980.js +30 -0
- package/dist/data/values/iau1980.js.map +1 -0
- package/dist/enums/AngularDiameterMethod.d.ts +27 -0
- package/dist/enums/AngularDiameterMethod.js +29 -0
- package/dist/enums/AngularDiameterMethod.js.map +1 -0
- package/dist/enums/AngularDistanceMethod.d.ts +27 -0
- package/dist/enums/AngularDistanceMethod.js +29 -0
- package/dist/enums/AngularDistanceMethod.js.map +1 -0
- package/dist/enums/OrbitRegime.d.ts +30 -0
- package/dist/enums/OrbitRegime.js +32 -0
- package/dist/enums/OrbitRegime.js.map +1 -0
- package/dist/enums/PassType.d.ts +28 -0
- package/dist/enums/PassType.js +30 -0
- package/dist/enums/PassType.js.map +1 -0
- package/dist/enums/Sgp4OpsMode.d.ts +26 -0
- package/dist/enums/Sgp4OpsMode.js +28 -0
- package/dist/enums/Sgp4OpsMode.js.map +1 -0
- package/dist/enums/index.d.ts +5 -0
- package/dist/enums/index.js +5 -0
- package/dist/enums/index.js.map +1 -1
- package/dist/force/AtmosphericDrag.d.ts +2 -2
- package/dist/force/AtmosphericDrag.js +3 -6
- package/dist/force/AtmosphericDrag.js.map +1 -1
- package/dist/force/EarthGravity.d.ts +2 -2
- package/dist/force/EarthGravity.js +2 -2
- package/dist/force/EarthGravity.js.map +1 -1
- package/dist/force/Force.d.ts +2 -2
- package/dist/force/Force.js +1 -1
- package/dist/force/ForceModel.d.ts +2 -2
- package/dist/force/ForceModel.js +2 -2
- package/dist/force/ForceModel.js.map +1 -1
- package/dist/force/Gravity.d.ts +2 -2
- package/dist/force/Gravity.js +2 -2
- package/dist/force/Gravity.js.map +1 -1
- package/dist/force/SolarRadiationPressure.d.ts +2 -2
- package/dist/force/SolarRadiationPressure.js +2 -2
- package/dist/force/SolarRadiationPressure.js.map +1 -1
- package/dist/force/ThirdBodyGravity.d.ts +2 -2
- package/dist/force/ThirdBodyGravity.js +2 -2
- package/dist/force/ThirdBodyGravity.js.map +1 -1
- package/dist/force/Thrust.d.ts +2 -2
- package/dist/force/Thrust.js +2 -2
- package/dist/force/Thrust.js.map +1 -1
- package/dist/interfaces/BaseObjectParams.d.ts +31 -0
- package/dist/interfaces/BaseObjectParams.js +24 -0
- package/dist/interfaces/BaseObjectParams.js.map +1 -0
- package/dist/interfaces/ClassicalElementsParams.d.ts +33 -0
- package/dist/interfaces/ClassicalElementsParams.js +24 -0
- package/dist/interfaces/ClassicalElementsParams.js.map +1 -0
- package/dist/interfaces/EquinoctialElementsParams.d.ts +35 -0
- package/dist/interfaces/EquinoctialElementsParams.js +24 -0
- package/dist/interfaces/EquinoctialElementsParams.js.map +1 -0
- package/dist/interfaces/GroundPositionParams.d.ts +28 -0
- package/dist/interfaces/GroundPositionParams.js +24 -0
- package/dist/interfaces/GroundPositionParams.js.map +1 -0
- package/dist/interfaces/OmmFormat.d.ts +62 -0
- package/dist/interfaces/OmmFormat.js +2 -0
- package/dist/interfaces/OmmFormat.js.map +1 -0
- package/dist/interfaces/OptionsParams.d.ts +3 -0
- package/dist/interfaces/OptionsParams.js +2 -0
- package/dist/interfaces/OptionsParams.js.map +1 -0
- package/dist/interfaces/RfSensorParams.d.ts +1 -1
- package/dist/interfaces/SatelliteParams.d.ts +18 -0
- package/dist/interfaces/SatelliteParams.js +2 -0
- package/dist/interfaces/SatelliteParams.js.map +1 -0
- package/dist/interfaces/SensorParams.d.ts +38 -0
- package/dist/interfaces/SensorParams.js +2 -0
- package/dist/interfaces/SensorParams.js.map +1 -0
- package/dist/interfaces/StarObjectParams.d.ts +10 -0
- package/dist/interfaces/StarObjectParams.js +2 -0
- package/dist/interfaces/StarObjectParams.js.map +1 -0
- package/dist/interfaces/TimeVariables.d.ts +6 -0
- package/dist/interfaces/TimeVariables.js +2 -0
- package/dist/interfaces/TimeVariables.js.map +1 -0
- package/dist/interfaces/index.d.ts +8 -0
- package/dist/interpolator/ChebyshevCoefficients.d.ts +5 -5
- package/dist/interpolator/ChebyshevCoefficients.js +2 -2
- package/dist/interpolator/ChebyshevCoefficients.js.map +1 -1
- package/dist/interpolator/ChebyshevInterpolator.d.ts +3 -3
- package/dist/interpolator/ChebyshevInterpolator.js +9 -9
- package/dist/interpolator/ChebyshevInterpolator.js.map +1 -1
- package/dist/interpolator/CubicSpline.d.ts +2 -2
- package/dist/interpolator/CubicSpline.js +1 -1
- package/dist/interpolator/CubicSplineInterpolator.d.ts +4 -4
- package/dist/interpolator/CubicSplineInterpolator.js +10 -10
- 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 +2 -2
- package/dist/interpolator/Interpolator.js +2 -2
- package/dist/interpolator/Interpolator.js.map +1 -1
- package/dist/interpolator/LagrangeInterpolator.d.ts +7 -7
- package/dist/interpolator/LagrangeInterpolator.js +2 -2
- package/dist/interpolator/LagrangeInterpolator.js.map +1 -1
- package/dist/interpolator/StateInterpolator.d.ts +2 -2
- package/dist/interpolator/StateInterpolator.js +1 -1
- package/dist/interpolator/VerletBlendInterpolator.d.ts +2 -2
- package/dist/interpolator/VerletBlendInterpolator.js +2 -2
- package/dist/interpolator/VerletBlendInterpolator.js.map +1 -1
- package/dist/main.d.ts +15 -5
- package/dist/main.js +15 -5
- package/dist/main.js.map +1 -1
- package/dist/maneuver/TwoBurnOrbitTransfer.d.ts +2 -2
- package/dist/maneuver/TwoBurnOrbitTransfer.js +2 -2
- package/dist/maneuver/TwoBurnOrbitTransfer.js.map +1 -1
- package/dist/maneuver/Waypoint.d.ts +2 -2
- package/dist/maneuver/Waypoint.js +2 -2
- package/dist/maneuver/Waypoint.js.map +1 -1
- package/dist/objects/BaseObject.d.ts +74 -0
- package/dist/objects/BaseObject.js +151 -0
- package/dist/objects/BaseObject.js.map +1 -0
- package/dist/objects/DetailedSatellite.d.ts +3 -2
- package/dist/objects/DetailedSatellite.js +6 -4
- package/dist/objects/DetailedSatellite.js.map +1 -1
- package/dist/objects/DetailedSensor.d.ts +3 -2
- package/dist/objects/DetailedSensor.js +2 -2
- package/dist/objects/DetailedSensor.js.map +1 -1
- package/dist/objects/GroundObject.d.ts +85 -0
- package/dist/objects/GroundObject.js +143 -0
- package/dist/objects/GroundObject.js.map +1 -0
- package/dist/objects/LandObject.d.ts +3 -2
- package/dist/objects/LandObject.js +2 -2
- package/dist/objects/LandObject.js.map +1 -1
- package/dist/objects/Marker.d.ts +2 -2
- package/dist/objects/Marker.js +2 -2
- package/dist/objects/Marker.js.map +1 -1
- package/dist/objects/RfSensor.d.ts +1 -2
- package/dist/objects/RfSensor.js +1 -2
- package/dist/objects/RfSensor.js.map +1 -1
- package/dist/objects/Satellite.d.ts +226 -0
- package/dist/objects/Satellite.js +443 -0
- package/dist/objects/Satellite.js.map +1 -0
- package/dist/objects/Sensor.d.ts +99 -0
- package/dist/objects/Sensor.js +238 -0
- package/dist/objects/Sensor.js.map +1 -0
- package/dist/objects/Star.d.ts +36 -0
- package/dist/objects/Star.js +59 -0
- package/dist/objects/Star.js.map +1 -0
- package/dist/objects/index.d.ts +5 -0
- package/dist/objects/index.js +5 -0
- package/dist/objects/index.js.map +1 -1
- package/dist/observation/Observation.d.ts +2 -2
- package/dist/observation/Observation.js +1 -1
- package/dist/observation/ObservationOptical.d.ts +6 -6
- package/dist/observation/ObservationOptical.js +9 -9
- package/dist/observation/ObservationOptical.js.map +1 -1
- package/dist/observation/ObservationRadar.d.ts +6 -6
- package/dist/observation/ObservationRadar.js +9 -9
- package/dist/observation/ObservationRadar.js.map +1 -1
- package/dist/observation/ObservationUtils.d.ts +4 -2
- package/dist/observation/ObservationUtils.js +16 -2
- package/dist/observation/ObservationUtils.js.map +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 +111 -0
- package/dist/observation/RAE.js +214 -0
- package/dist/observation/RAE.js.map +1 -0
- package/dist/observation/RadecGeocentric.d.ts +111 -0
- package/dist/observation/RadecGeocentric.js +169 -0
- package/dist/observation/RadecGeocentric.js.map +1 -0
- package/dist/observation/RadecTopocentric.d.ts +123 -0
- package/dist/observation/RadecTopocentric.js +196 -0
- package/dist/observation/RadecTopocentric.js.map +1 -0
- package/dist/observation/index.d.ts +26 -0
- package/dist/observation/index.js +27 -0
- package/dist/observation/index.js.map +1 -0
- package/dist/operations/BoxMuller.d.ts +2 -2
- package/dist/operations/BoxMuller.js +2 -2
- package/dist/operations/BoxMuller.js.map +1 -1
- package/dist/operations/EulerAngles.d.ts +2 -2
- package/dist/operations/EulerAngles.js +2 -2
- package/dist/operations/EulerAngles.js.map +1 -1
- package/dist/operations/Matrix.d.ts +170 -0
- package/dist/operations/Matrix.js +405 -0
- package/dist/operations/Matrix.js.map +1 -0
- package/dist/operations/Quaternion.d.ts +7 -7
- package/dist/operations/Quaternion.js +2 -2
- package/dist/operations/Quaternion.js.map +1 -1
- package/dist/operations/Random.d.ts +40 -0
- package/dist/operations/Random.js +50 -0
- package/dist/operations/Random.js.map +1 -0
- package/dist/operations/RandomGaussianSource.d.ts +3 -3
- package/dist/operations/RandomGaussianSource.js +5 -5
- package/dist/operations/RandomGaussianSource.js.map +1 -1
- package/dist/operations/Vector.d.ts +262 -0
- package/dist/operations/Vector.js +415 -0
- package/dist/operations/Vector.js.map +1 -0
- package/dist/operations/Vector3D.d.ts +86 -0
- package/dist/operations/Vector3D.js +241 -0
- package/dist/operations/Vector3D.js.map +1 -0
- package/dist/operations/operations.d.ts +26 -0
- package/dist/operations/operations.js +27 -0
- package/dist/operations/operations.js.map +1 -0
- package/dist/optimize/ChebyshevCompressor.d.ts +3 -3
- package/dist/optimize/ChebyshevCompressor.js +8 -8
- 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 +2 -2
- package/dist/optimize/PolynomialRegression.js.map +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 +11 -11
- package/dist/optimize/SimplexEntry.js.map +1 -1
- package/dist/orbit_determination/BatchLeastSquaresOD.d.ts +11 -11
- package/dist/orbit_determination/BatchLeastSquaresOD.js +2 -2
- package/dist/orbit_determination/BatchLeastSquaresOD.js.map +1 -1
- package/dist/orbit_determination/BatchLeastSquaresResult.d.ts +2 -2
- package/dist/orbit_determination/BatchLeastSquaresResult.js +1 -1
- package/dist/orbit_determination/GibbsIOD.d.ts +2 -2
- package/dist/orbit_determination/GibbsIOD.js +2 -2
- package/dist/orbit_determination/GibbsIOD.js.map +1 -1
- package/dist/orbit_determination/GoodingIOD.d.ts +2 -2
- package/dist/orbit_determination/GoodingIOD.js +2 -2
- package/dist/orbit_determination/GoodingIOD.js.map +1 -1
- package/dist/orbit_determination/HerrickGibbsIOD.d.ts +2 -2
- package/dist/orbit_determination/HerrickGibbsIOD.js +2 -2
- package/dist/orbit_determination/HerrickGibbsIOD.js.map +1 -1
- package/dist/orbit_determination/LambertIOD.d.ts +2 -2
- package/dist/orbit_determination/LambertIOD.js +2 -2
- package/dist/orbit_determination/LambertIOD.js.map +1 -1
- package/dist/orbit_determination/ModifiedGoodingIOD.d.ts +4 -4
- package/dist/orbit_determination/ModifiedGoodingIOD.js +2 -2
- package/dist/orbit_determination/ModifiedGoodingIOD.js.map +1 -1
- package/dist/orbit_determination/index.d.ts +7 -0
- package/dist/orbit_determination/index.js +8 -0
- package/dist/orbit_determination/index.js.map +1 -0
- 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 +6 -6
- package/dist/propagator/KeplerPropagator.js +31 -31
- package/dist/propagator/KeplerPropagator.js.map +1 -1
- package/dist/propagator/Propagator.d.ts +2 -2
- package/dist/propagator/Propagator.js +2 -2
- package/dist/propagator/Propagator.js.map +1 -1
- package/dist/propagator/RkCheckpoint.d.ts +2 -2
- package/dist/propagator/RkCheckpoint.js +1 -1
- package/dist/propagator/RkResult.d.ts +2 -2
- package/dist/propagator/RkResult.js +1 -1
- package/dist/propagator/RungeKutta4Propagator.d.ts +3 -3
- package/dist/propagator/RungeKutta4Propagator.js +2 -2
- 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 +4 -4
- package/dist/propagator/RungeKuttaAdaptive.js +2 -2
- package/dist/propagator/RungeKuttaAdaptive.js.map +1 -1
- package/dist/propagator/Sgp4Propagator.d.ts +6 -6
- package/dist/propagator/Sgp4Propagator.js +15 -15
- package/dist/propagator/Sgp4Propagator.js.map +1 -1
- package/dist/sgp4/index.d.ts +23 -0
- package/dist/sgp4/index.js +24 -0
- package/dist/sgp4/index.js.map +1 -0
- package/dist/sgp4/sgp4-error.d.ts +22 -0
- package/dist/sgp4/sgp4-error.js +44 -0
- package/dist/sgp4/sgp4-error.js.map +1 -0
- package/dist/sgp4/sgp4.d.ts +99 -0
- package/dist/sgp4/sgp4.js +3164 -0
- package/dist/sgp4/sgp4.js.map +1 -0
- package/dist/smoothing/ExponentialSmoothing.d.ts +2 -2
- package/dist/smoothing/ExponentialSmoothing.js +1 -1
- package/dist/time/Epoch.d.ts +44 -0
- package/dist/time/Epoch.js +109 -0
- package/dist/time/Epoch.js.map +1 -0
- package/dist/time/EpochGPS.d.ts +42 -0
- package/dist/time/EpochGPS.js +70 -0
- package/dist/time/EpochGPS.js.map +1 -0
- package/dist/time/EpochTAI.d.ts +26 -0
- package/dist/time/EpochTAI.js +27 -0
- package/dist/time/EpochTAI.js.map +1 -0
- package/dist/time/EpochTDB.d.ts +26 -0
- package/dist/time/EpochTDB.js +27 -0
- package/dist/time/EpochTDB.js.map +1 -0
- package/dist/time/EpochTT.d.ts +26 -0
- package/dist/time/EpochTT.js +27 -0
- package/dist/time/EpochTT.js.map +1 -0
- package/dist/time/EpochUTC.d.ts +59 -0
- package/dist/time/EpochUTC.js +137 -0
- package/dist/time/EpochUTC.js.map +1 -0
- package/dist/time/EpochWindow.d.ts +28 -0
- package/dist/time/EpochWindow.js +31 -0
- package/dist/time/EpochWindow.js.map +1 -0
- package/dist/time/TimeStamped.d.ts +39 -0
- package/dist/time/TimeStamped.js +42 -0
- package/dist/time/TimeStamped.js.map +1 -0
- package/dist/time/index.d.ts +8 -0
- package/dist/time/index.js +9 -0
- package/dist/time/index.js.map +1 -0
- package/dist/transforms/TransformCache.d.ts +27 -0
- package/dist/transforms/TransformCache.js +41 -0
- package/dist/transforms/TransformCache.js.map +1 -0
- package/dist/transforms/conversions.d.ts +63 -0
- package/dist/transforms/conversions.js +88 -0
- package/dist/transforms/conversions.js.map +1 -0
- package/dist/transforms/index.d.ts +1 -0
- package/dist/transforms/index.js +1 -0
- package/dist/transforms/index.js.map +1 -1
- package/dist/transforms/transforms.d.ts +166 -2
- package/dist/transforms/transforms.js +372 -1
- package/dist/transforms/transforms.js.map +1 -1
- package/dist/types/types.d.ts +675 -3
- package/dist/types/types.js +37 -1
- package/dist/types/types.js.map +1 -1
- package/dist/utils/constants.d.ts +80 -0
- package/dist/utils/constants.js +87 -0
- package/dist/utils/constants.js.map +1 -0
- 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.d.ts +228 -0
- package/dist/utils/functions.js +476 -0
- package/dist/utils/functions.js.map +1 -1
- package/dist/utils/index.d.ts +4 -1
- package/dist/utils/index.js +4 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/jacobian.d.ts +7 -1
- package/dist/utils/jacobian.js +7 -2
- package/dist/utils/jacobian.js.map +1 -1
- package/dist/utils/linearDistance.d.ts +8 -0
- package/dist/utils/linearDistance.js +10 -0
- package/dist/utils/linearDistance.js.map +1 -0
- package/package.json +5 -8
- package/src/body/Celestial.ts +134 -0
- package/src/body/Earth.ts +260 -0
- package/src/body/Moon.ts +556 -0
- package/src/body/NutationAngles.ts +40 -0
- package/src/body/PrecessionAngles.ts +31 -0
- package/src/body/Sun.ts +665 -0
- package/src/body/index.ts +27 -0
- package/src/body/suncalc.LICENSE.md +18 -0
- package/src/coordinate/ClassicalElements.ts +327 -0
- package/src/coordinate/EquinoctialElements.ts +189 -0
- package/src/coordinate/FormatTle.ts +214 -0
- package/src/coordinate/Geodetic.ts +186 -0
- package/src/coordinate/Hill.ts +2 -2
- package/src/coordinate/ITRF.ts +146 -0
- package/src/coordinate/J2000.ts +130 -0
- package/src/coordinate/RIC.ts +87 -0
- package/src/coordinate/RelativeState.ts +101 -0
- package/src/coordinate/StateVector.ts +123 -0
- package/src/coordinate/TEME.ts +97 -0
- package/src/coordinate/Tle.ts +1024 -0
- package/src/coordinate/index.ts +11 -0
- package/src/coordinate/tle-format-data.ts +47 -0
- package/src/covariance/CovarianceSample.ts +117 -19
- package/src/covariance/StateCovariance.ts +2 -2
- package/src/covariance/index.ts +2 -0
- package/src/data/DataHandler.ts +88 -0
- package/src/data/values/Egm96Data.ts +75 -0
- package/src/data/values/HpAtmosphereData.ts +76 -0
- package/src/data/values/HpAtmosphereResult.ts +41 -0
- package/src/data/values/Iau1980Data.ts +63 -0
- package/src/data/values/LeapSecond.ts +37 -0
- package/src/data/values/LeapSecondData.ts +113 -0
- package/src/data/values/egm96.ts +728 -0
- package/src/data/values/hpAtmosphere.ts +79 -0
- package/src/data/values/iau1980.ts +32 -0
- package/src/enums/AngularDiameterMethod.ts +28 -0
- package/src/enums/AngularDistanceMethod.ts +28 -0
- package/src/enums/OrbitRegime.ts +31 -0
- package/src/enums/PassType.ts +29 -0
- package/src/enums/Sgp4OpsMode.ts +27 -0
- package/src/enums/index.ts +5 -0
- package/src/force/AtmosphericDrag.ts +2 -4
- package/src/force/EarthGravity.ts +2 -2
- package/src/force/Force.ts +2 -2
- package/src/force/ForceModel.ts +2 -2
- package/src/force/Gravity.ts +2 -2
- package/src/force/SolarRadiationPressure.ts +2 -2
- package/src/force/ThirdBodyGravity.ts +2 -2
- package/src/force/Thrust.ts +2 -2
- package/src/interfaces/BaseObjectParams.ts +33 -0
- package/src/interfaces/ClassicalElementsParams.ts +35 -0
- package/src/interfaces/EquinoctialElementsParams.ts +37 -0
- package/src/interfaces/GroundPositionParams.ts +30 -0
- package/src/interfaces/OmmFormat.ts +63 -0
- package/src/interfaces/OptionsParams.ts +3 -0
- package/src/interfaces/RfSensorParams.ts +1 -1
- package/src/interfaces/SatelliteParams.ts +20 -0
- package/src/interfaces/SensorParams.ts +39 -0
- package/src/interfaces/StarObjectParams.ts +11 -0
- package/src/interfaces/TimeVariables.ts +7 -0
- package/src/interfaces/index.ts +8 -0
- package/src/interpolator/ChebyshevCoefficients.ts +5 -5
- package/src/interpolator/ChebyshevInterpolator.ts +10 -10
- package/src/interpolator/CubicSpline.ts +2 -2
- package/src/interpolator/CubicSplineInterpolator.ts +8 -8
- package/src/interpolator/FieldInterpolator.ts +1 -1
- package/src/interpolator/Interpolator.ts +2 -2
- package/src/interpolator/LagrangeInterpolator.ts +7 -7
- package/src/interpolator/StateInterpolator.ts +2 -2
- package/src/interpolator/VerletBlendInterpolator.ts +2 -2
- package/src/main.ts +15 -5
- package/src/maneuver/TwoBurnOrbitTransfer.ts +2 -2
- package/src/maneuver/Waypoint.ts +2 -2
- package/src/objects/BaseObject.ts +171 -0
- package/src/objects/DetailedSatellite.ts +5 -4
- package/src/objects/DetailedSensor.ts +3 -2
- package/src/objects/GroundObject.ts +176 -0
- package/src/objects/LandObject.ts +3 -2
- package/src/objects/Marker.ts +2 -2
- package/src/objects/RfSensor.ts +1 -2
- package/src/objects/Satellite.ts +552 -0
- package/src/objects/Sensor.ts +279 -0
- package/src/objects/Star.ts +96 -0
- package/src/objects/index.ts +5 -0
- package/src/observation/Observation.ts +2 -2
- package/src/observation/ObservationOptical.ts +7 -7
- package/src/observation/ObservationRadar.ts +10 -6
- package/src/observation/ObservationUtils.ts +31 -2
- package/src/observation/PropagatorPairs.ts +3 -3
- package/src/observation/RAE.ts +261 -0
- package/src/observation/RadecGeocentric.ts +206 -0
- package/src/observation/RadecTopocentric.ts +241 -0
- package/src/observation/index.ts +27 -0
- package/src/operations/BoxMuller.ts +2 -2
- package/src/operations/EulerAngles.ts +2 -2
- package/src/operations/Matrix.ts +473 -0
- package/src/operations/Quaternion.ts +7 -7
- package/src/operations/Random.ts +54 -0
- package/src/operations/RandomGaussianSource.ts +5 -5
- package/src/operations/Vector.ts +484 -0
- package/src/operations/Vector3D.ts +289 -0
- package/src/operations/operations.ts +27 -0
- package/src/optimize/ChebyshevCompressor.ts +6 -6
- package/src/optimize/DownhillSimplex.ts +1 -1
- package/src/optimize/GoldenSection.ts +3 -3
- package/src/optimize/PolynomialRegression.ts +2 -2
- package/src/optimize/PolynomicalRegressionResult.ts +1 -1
- package/src/optimize/SimpleLinearRegression.ts +1 -1
- package/src/optimize/SimplexEntry.ts +9 -9
- package/src/orbit_determination/BatchLeastSquaresOD.ts +11 -11
- package/src/orbit_determination/BatchLeastSquaresResult.ts +2 -2
- package/src/orbit_determination/GibbsIOD.ts +4 -2
- package/src/orbit_determination/GoodingIOD.ts +2 -2
- package/src/orbit_determination/HerrickGibbsIOD.ts +2 -2
- package/src/orbit_determination/LambertIOD.ts +2 -2
- package/src/orbit_determination/ModifiedGoodingIOD.ts +4 -4
- package/src/orbit_determination/index.ts +7 -0
- package/src/propagator/DormandPrince54Propagator.ts +9 -9
- package/src/propagator/KeplerPropagator.ts +31 -31
- package/src/propagator/Propagator.ts +2 -2
- package/src/propagator/RkCheckpoint.ts +2 -2
- package/src/propagator/RkResult.ts +2 -2
- package/src/propagator/RungeKutta4Propagator.ts +3 -3
- package/src/propagator/RungeKutta89Propagator.ts +5 -5
- package/src/propagator/RungeKuttaAdaptive.ts +4 -4
- package/src/propagator/Sgp4Propagator.ts +14 -14
- package/src/sgp4/index.ts +24 -0
- package/src/sgp4/sgp4-error.ts +53 -0
- package/src/sgp4/sgp4.LICENSE.md +28 -0
- package/src/sgp4/sgp4.ts +3983 -0
- package/src/smoothing/ExponentialSmoothing.ts +2 -2
- package/src/time/Epoch.ts +128 -0
- package/src/time/EpochGPS.ts +76 -0
- package/src/time/EpochTAI.ts +27 -0
- package/src/time/EpochTDB.ts +27 -0
- package/src/time/EpochTT.ts +27 -0
- package/src/time/EpochUTC.ts +188 -0
- package/src/time/EpochWindow.ts +33 -0
- package/src/time/TimeStamped.ts +46 -0
- package/src/time/index.ts +8 -0
- package/src/transforms/TransformCache.ts +46 -0
- package/src/transforms/conversions.ts +98 -0
- package/src/transforms/index.ts +1 -0
- package/src/transforms/transforms.ts +478 -2
- package/src/types/types.ts +722 -3
- package/src/utils/constants.ts +113 -0
- package/src/utils/create-covariance-from-tle.ts +75 -0
- package/src/utils/functions.ts +562 -0
- package/src/utils/index.ts +4 -1
- package/src/utils/jacobian.ts +7 -3
- package/src/utils/linearDistance.ts +11 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author @thkruz Theodore Kruczek
|
|
3
|
+
* @description Orbital Object ToolKit (ootk) is a collection of tools for working
|
|
4
|
+
* with satellites and other orbital objects.
|
|
5
|
+
* @license AGPL-3.0-or-later
|
|
6
|
+
* @copyright (c) 2025 Kruczek Labs LLC
|
|
7
|
+
*
|
|
8
|
+
* Many of the classes are based off of the work of @david-rc-dayton and his
|
|
9
|
+
* Pious Squid library (https://github.com/david-rc-dayton/pious_squid) which
|
|
10
|
+
* is licensed under the MIT license.
|
|
11
|
+
*
|
|
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
|
+
*/
|
|
23
|
+
import { Minutes, PositionVelocity, Degrees, Kilometers, Radians } from '../main.js';
|
|
24
|
+
import { EpochUTC } from '../time/EpochUTC.js';
|
|
25
|
+
import { EquinoctialElements } from './EquinoctialElements.js';
|
|
26
|
+
import { OrbitRegime } from '../enums/OrbitRegime.js';
|
|
27
|
+
import { StateVector } from './StateVector.js';
|
|
28
|
+
import { ClassicalElementsParams } from '../interfaces/ClassicalElementsParams.js';
|
|
29
|
+
/**
|
|
30
|
+
* The ClassicalElements class represents the classical orbital elements of an object.
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* const epoch = EpochUTC.fromDateTime(new Date('2024-01-14T14:39:39.914Z'));
|
|
34
|
+
* const elements = new ClassicalElements({
|
|
35
|
+
* epoch,
|
|
36
|
+
* semimajorAxis: 6943.547853722985 as Kilometers,
|
|
37
|
+
* eccentricity: 0.0011235968124658146,
|
|
38
|
+
* inclination: 0.7509087232045765 as Radians,
|
|
39
|
+
* rightAscension: 0.028239555738616327 as Radians,
|
|
40
|
+
* argPerigee: 2.5386411901807353 as Radians,
|
|
41
|
+
* trueAnomaly: 0.5931399364974058 as Radians,
|
|
42
|
+
* });
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export declare class ClassicalElements {
|
|
46
|
+
epoch: EpochUTC;
|
|
47
|
+
semimajorAxis: Kilometers;
|
|
48
|
+
eccentricity: number;
|
|
49
|
+
inclination: Radians;
|
|
50
|
+
rightAscension: Radians;
|
|
51
|
+
argPerigee: Radians;
|
|
52
|
+
trueAnomaly: Radians;
|
|
53
|
+
/** Gravitational parameter in km³/s². */
|
|
54
|
+
mu: number;
|
|
55
|
+
constructor({ epoch, semimajorAxis, eccentricity, inclination, rightAscension, argPerigee, trueAnomaly, mu, }: ClassicalElementsParams);
|
|
56
|
+
/**
|
|
57
|
+
* Creates a new instance of ClassicalElements from a StateVector.
|
|
58
|
+
* @param state The StateVector to convert.
|
|
59
|
+
* @param mu The gravitational parameter of the central body. Default value is Earth's gravitational parameter.
|
|
60
|
+
* @returns A new instance of ClassicalElements.
|
|
61
|
+
* @throws Error if the StateVector is not in an inertial frame.
|
|
62
|
+
*/
|
|
63
|
+
static fromStateVector(state: StateVector, mu?: number): ClassicalElements;
|
|
64
|
+
/**
|
|
65
|
+
* Gets the inclination in degrees.
|
|
66
|
+
* @returns The inclination in degrees.
|
|
67
|
+
*/
|
|
68
|
+
get inclinationDegrees(): Degrees;
|
|
69
|
+
/**
|
|
70
|
+
* Gets the right ascension in degrees.
|
|
71
|
+
* @returns The right ascension in degrees.
|
|
72
|
+
*/
|
|
73
|
+
get rightAscensionDegrees(): Degrees;
|
|
74
|
+
/**
|
|
75
|
+
* Gets the argument of perigee in degrees.
|
|
76
|
+
* @returns The argument of perigee in degrees.
|
|
77
|
+
*/
|
|
78
|
+
get argPerigeeDegrees(): Degrees;
|
|
79
|
+
/**
|
|
80
|
+
* Gets the true anomaly in degrees.
|
|
81
|
+
* @returns The true anomaly in degrees.
|
|
82
|
+
*/
|
|
83
|
+
get trueAnomalyDegrees(): Degrees;
|
|
84
|
+
/**
|
|
85
|
+
* Gets the apogee of the classical elements. It is measured from the surface of the earth.
|
|
86
|
+
* @returns The apogee in kilometers.
|
|
87
|
+
*/
|
|
88
|
+
get apogee(): Kilometers;
|
|
89
|
+
/**
|
|
90
|
+
* Gets the perigee of the classical elements. The perigee is the point in an
|
|
91
|
+
* orbit that is closest to the surface of the earth.
|
|
92
|
+
* @returns The perigee distance in kilometers.
|
|
93
|
+
*/
|
|
94
|
+
get perigee(): number;
|
|
95
|
+
toString(): string;
|
|
96
|
+
/**
|
|
97
|
+
* Calculates the mean motion of the celestial object.
|
|
98
|
+
* @returns The mean motion in radians.
|
|
99
|
+
*/
|
|
100
|
+
get meanMotion(): Radians;
|
|
101
|
+
/**
|
|
102
|
+
* Calculates the period of the orbit.
|
|
103
|
+
* @returns The period in seconds.
|
|
104
|
+
*/
|
|
105
|
+
get period(): Minutes;
|
|
106
|
+
/**
|
|
107
|
+
* Compute the number of revolutions completed per day for this orbit.
|
|
108
|
+
* @returns The number of revolutions per day.
|
|
109
|
+
*/
|
|
110
|
+
get revsPerDay(): number;
|
|
111
|
+
/**
|
|
112
|
+
* Returns the orbit regime based on the classical elements.
|
|
113
|
+
* @returns The orbit regime.
|
|
114
|
+
*/
|
|
115
|
+
getOrbitRegime(): OrbitRegime;
|
|
116
|
+
/**
|
|
117
|
+
* Converts the classical orbital elements to position and velocity vectors.
|
|
118
|
+
* @returns An object containing the position and velocity vectors.
|
|
119
|
+
*/
|
|
120
|
+
toPositionVelocity(): PositionVelocity;
|
|
121
|
+
/**
|
|
122
|
+
* Converts the classical elements to equinoctial elements.
|
|
123
|
+
* @returns The equinoctial elements.
|
|
124
|
+
*/
|
|
125
|
+
toEquinoctialElements(): EquinoctialElements;
|
|
126
|
+
/**
|
|
127
|
+
* Propagates the classical elements to a given epoch.
|
|
128
|
+
* @param propEpoch - The epoch to propagate the classical elements to.
|
|
129
|
+
* @returns The classical elements at the propagated epoch.
|
|
130
|
+
*/
|
|
131
|
+
propagate(propEpoch: EpochUTC): ClassicalElements;
|
|
132
|
+
}
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author @thkruz Theodore Kruczek
|
|
3
|
+
* @description Orbital Object ToolKit (ootk) is a collection of tools for working
|
|
4
|
+
* with satellites and other orbital objects.
|
|
5
|
+
* @license AGPL-3.0-or-later
|
|
6
|
+
* @copyright (c) 2025 Kruczek Labs LLC
|
|
7
|
+
*
|
|
8
|
+
* Many of the classes are based off of the work of @david-rc-dayton and his
|
|
9
|
+
* Pious Squid library (https://github.com/david-rc-dayton/pious_squid) which
|
|
10
|
+
* is licensed under the MIT license.
|
|
11
|
+
*
|
|
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
|
+
*/
|
|
23
|
+
import { Earth, } from '../main.js';
|
|
24
|
+
import { Vector3D } from '../operations/Vector3D.js';
|
|
25
|
+
import { earthGravityParam, MINUTES_PER_DAY, RAD2DEG, sec2min, TAU } from '../utils/constants.js';
|
|
26
|
+
import { clamp, matchHalfPlane, newtonNu } from '../utils/functions.js';
|
|
27
|
+
import { EquinoctialElements } from './EquinoctialElements.js';
|
|
28
|
+
import { OrbitRegime } from '../enums/OrbitRegime.js';
|
|
29
|
+
/**
|
|
30
|
+
* The ClassicalElements class represents the classical orbital elements of an object.
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* const epoch = EpochUTC.fromDateTime(new Date('2024-01-14T14:39:39.914Z'));
|
|
34
|
+
* const elements = new ClassicalElements({
|
|
35
|
+
* epoch,
|
|
36
|
+
* semimajorAxis: 6943.547853722985 as Kilometers,
|
|
37
|
+
* eccentricity: 0.0011235968124658146,
|
|
38
|
+
* inclination: 0.7509087232045765 as Radians,
|
|
39
|
+
* rightAscension: 0.028239555738616327 as Radians,
|
|
40
|
+
* argPerigee: 2.5386411901807353 as Radians,
|
|
41
|
+
* trueAnomaly: 0.5931399364974058 as Radians,
|
|
42
|
+
* });
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export class ClassicalElements {
|
|
46
|
+
epoch;
|
|
47
|
+
semimajorAxis;
|
|
48
|
+
eccentricity;
|
|
49
|
+
inclination;
|
|
50
|
+
rightAscension;
|
|
51
|
+
argPerigee;
|
|
52
|
+
trueAnomaly;
|
|
53
|
+
/** Gravitational parameter in km³/s². */
|
|
54
|
+
mu;
|
|
55
|
+
constructor({ epoch, semimajorAxis, eccentricity, inclination, rightAscension, argPerigee, trueAnomaly, mu = earthGravityParam, }) {
|
|
56
|
+
this.epoch = epoch;
|
|
57
|
+
this.semimajorAxis = semimajorAxis;
|
|
58
|
+
this.eccentricity = eccentricity;
|
|
59
|
+
this.inclination = inclination;
|
|
60
|
+
this.rightAscension = rightAscension;
|
|
61
|
+
this.argPerigee = argPerigee;
|
|
62
|
+
this.trueAnomaly = trueAnomaly;
|
|
63
|
+
this.mu = mu;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Creates a new instance of ClassicalElements from a StateVector.
|
|
67
|
+
* @param state The StateVector to convert.
|
|
68
|
+
* @param mu The gravitational parameter of the central body. Default value is Earth's gravitational parameter.
|
|
69
|
+
* @returns A new instance of ClassicalElements.
|
|
70
|
+
* @throws Error if the StateVector is not in an inertial frame.
|
|
71
|
+
*/
|
|
72
|
+
static fromStateVector(state, mu = earthGravityParam) {
|
|
73
|
+
if (!state.inertial) {
|
|
74
|
+
throw new Error('State vector must be in inertial frame (like J2000).');
|
|
75
|
+
}
|
|
76
|
+
const pos = state.position;
|
|
77
|
+
const vel = state.velocity;
|
|
78
|
+
const a = state.semimajorAxis;
|
|
79
|
+
const eVecA = pos.scale(vel.magnitude() ** 2 - mu / pos.magnitude());
|
|
80
|
+
const eVecB = vel.scale(pos.dot(vel));
|
|
81
|
+
const eVec = eVecA.subtract(eVecB).scale(1 / mu);
|
|
82
|
+
const e = eVec.magnitude();
|
|
83
|
+
const h = pos.cross(vel);
|
|
84
|
+
const i = Math.acos(clamp(h.z / h.magnitude(), -1.0, 1.0));
|
|
85
|
+
const n = Vector3D.zAxis.cross(h);
|
|
86
|
+
let o = Math.acos(clamp(n.x / n.magnitude(), -1.0, 1.0));
|
|
87
|
+
if (n.y < 0) {
|
|
88
|
+
o = TAU - o;
|
|
89
|
+
}
|
|
90
|
+
let w = n.angle(eVec);
|
|
91
|
+
if (eVec.z < 0) {
|
|
92
|
+
w = TAU - w;
|
|
93
|
+
}
|
|
94
|
+
let v = eVec.angle(pos);
|
|
95
|
+
if (pos.dot(vel) < 0) {
|
|
96
|
+
v = TAU - v;
|
|
97
|
+
}
|
|
98
|
+
return new ClassicalElements({
|
|
99
|
+
epoch: state.epoch,
|
|
100
|
+
semimajorAxis: a,
|
|
101
|
+
eccentricity: e,
|
|
102
|
+
inclination: i,
|
|
103
|
+
rightAscension: o,
|
|
104
|
+
argPerigee: w,
|
|
105
|
+
trueAnomaly: v,
|
|
106
|
+
mu,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Gets the inclination in degrees.
|
|
111
|
+
* @returns The inclination in degrees.
|
|
112
|
+
*/
|
|
113
|
+
get inclinationDegrees() {
|
|
114
|
+
return (this.inclination * RAD2DEG);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Gets the right ascension in degrees.
|
|
118
|
+
* @returns The right ascension in degrees.
|
|
119
|
+
*/
|
|
120
|
+
get rightAscensionDegrees() {
|
|
121
|
+
return (this.rightAscension * RAD2DEG);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Gets the argument of perigee in degrees.
|
|
125
|
+
* @returns The argument of perigee in degrees.
|
|
126
|
+
*/
|
|
127
|
+
get argPerigeeDegrees() {
|
|
128
|
+
return (this.argPerigee * RAD2DEG);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Gets the true anomaly in degrees.
|
|
132
|
+
* @returns The true anomaly in degrees.
|
|
133
|
+
*/
|
|
134
|
+
get trueAnomalyDegrees() {
|
|
135
|
+
return (this.trueAnomaly * RAD2DEG);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Gets the apogee of the classical elements. It is measured from the surface of the earth.
|
|
139
|
+
* @returns The apogee in kilometers.
|
|
140
|
+
*/
|
|
141
|
+
get apogee() {
|
|
142
|
+
return (this.semimajorAxis * (1.0 + this.eccentricity) - Earth.radiusMean);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Gets the perigee of the classical elements. The perigee is the point in an
|
|
146
|
+
* orbit that is closest to the surface of the earth.
|
|
147
|
+
* @returns The perigee distance in kilometers.
|
|
148
|
+
*/
|
|
149
|
+
get perigee() {
|
|
150
|
+
return (this.semimajorAxis * (1.0 - this.eccentricity) - Earth.radiusMean);
|
|
151
|
+
}
|
|
152
|
+
toString() {
|
|
153
|
+
return [
|
|
154
|
+
'[ClassicalElements]',
|
|
155
|
+
` Epoch: ${this.epoch}`,
|
|
156
|
+
` Semimajor Axis (a): ${this.semimajorAxis.toFixed(4)} km`,
|
|
157
|
+
` Eccentricity (e): ${this.eccentricity.toFixed(7)}`,
|
|
158
|
+
` Inclination (i): ${this.inclinationDegrees.toFixed(4)}°`,
|
|
159
|
+
` Right Ascension (Ω): ${this.rightAscensionDegrees.toFixed(4)}°`,
|
|
160
|
+
` Argument of Perigee (ω): ${this.argPerigeeDegrees.toFixed(4)}°`,
|
|
161
|
+
` True Anomaly (ν): ${this.trueAnomalyDegrees.toFixed(4)}°`,
|
|
162
|
+
].join('\n');
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Calculates the mean motion of the celestial object.
|
|
166
|
+
* @returns The mean motion in radians.
|
|
167
|
+
*/
|
|
168
|
+
get meanMotion() {
|
|
169
|
+
return Math.sqrt(this.mu / this.semimajorAxis ** 3);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Calculates the period of the orbit.
|
|
173
|
+
* @returns The period in seconds.
|
|
174
|
+
*/
|
|
175
|
+
get period() {
|
|
176
|
+
const periodSec = (TAU * Math.sqrt(this.semimajorAxis ** 3 / this.mu));
|
|
177
|
+
return (periodSec / 60);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Compute the number of revolutions completed per day for this orbit.
|
|
181
|
+
* @returns The number of revolutions per day.
|
|
182
|
+
*/
|
|
183
|
+
get revsPerDay() {
|
|
184
|
+
return MINUTES_PER_DAY / this.period;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Returns the orbit regime based on the classical elements.
|
|
188
|
+
* @returns The orbit regime.
|
|
189
|
+
*/
|
|
190
|
+
getOrbitRegime() {
|
|
191
|
+
const n = this.revsPerDay;
|
|
192
|
+
const p = this.period * sec2min;
|
|
193
|
+
if (n >= 0.99 && n <= 1.01 && this.eccentricity < 0.01) {
|
|
194
|
+
return OrbitRegime.GEO;
|
|
195
|
+
}
|
|
196
|
+
if (p >= 600 && p <= 800 && this.eccentricity <= 0.25) {
|
|
197
|
+
return OrbitRegime.MEO;
|
|
198
|
+
}
|
|
199
|
+
if (n >= 11.25 && this.eccentricity <= 0.25) {
|
|
200
|
+
return OrbitRegime.LEO;
|
|
201
|
+
}
|
|
202
|
+
if (this.eccentricity > 0.25) {
|
|
203
|
+
return OrbitRegime.HEO;
|
|
204
|
+
}
|
|
205
|
+
return OrbitRegime.OTHER;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Converts the classical orbital elements to position and velocity vectors.
|
|
209
|
+
* @returns An object containing the position and velocity vectors.
|
|
210
|
+
*/
|
|
211
|
+
toPositionVelocity() {
|
|
212
|
+
const rVec = new Vector3D(Math.cos(this.trueAnomaly), Math.sin(this.trueAnomaly), 0.0);
|
|
213
|
+
const rPQW = rVec.scale((this.semimajorAxis * (1.0 - this.eccentricity ** 2)) / (1.0 + this.eccentricity * Math.cos(this.trueAnomaly)));
|
|
214
|
+
const vVec = new Vector3D(-Math.sin(this.trueAnomaly), this.eccentricity + Math.cos(this.trueAnomaly), 0.0);
|
|
215
|
+
const vPQW = vVec.scale(Math.sqrt(this.mu / (this.semimajorAxis * (1 - this.eccentricity ** 2))));
|
|
216
|
+
const position = rPQW
|
|
217
|
+
.rotZ(-this.argPerigee)
|
|
218
|
+
.rotX(-this.inclination)
|
|
219
|
+
.rotZ(-this.rightAscension);
|
|
220
|
+
const velocity = vPQW
|
|
221
|
+
.rotZ(-this.argPerigee)
|
|
222
|
+
.rotX(-this.inclination)
|
|
223
|
+
.rotZ(-this.rightAscension);
|
|
224
|
+
return { position, velocity };
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Converts the classical elements to equinoctial elements.
|
|
228
|
+
* @returns The equinoctial elements.
|
|
229
|
+
*/
|
|
230
|
+
toEquinoctialElements() {
|
|
231
|
+
const I = this.inclination > Math.PI / 2 ? -1 : 1;
|
|
232
|
+
const h = this.eccentricity * Math.sin(this.argPerigee + I * this.rightAscension);
|
|
233
|
+
const k = this.eccentricity * Math.cos(this.argPerigee + I * this.rightAscension);
|
|
234
|
+
const meanAnomaly = newtonNu(this.eccentricity, this.trueAnomaly).m;
|
|
235
|
+
const lambda = (meanAnomaly + this.argPerigee + I * this.rightAscension);
|
|
236
|
+
const a = this.semimajorAxis;
|
|
237
|
+
const p = Math.tan(0.5 * this.inclination) ** I * Math.sin(this.rightAscension);
|
|
238
|
+
const q = Math.tan(0.5 * this.inclination) ** I * Math.cos(this.rightAscension);
|
|
239
|
+
return new EquinoctialElements({ epoch: this.epoch, k, h, lambda, a, p, q, mu: this.mu, I });
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Propagates the classical elements to a given epoch.
|
|
243
|
+
* @param propEpoch - The epoch to propagate the classical elements to.
|
|
244
|
+
* @returns The classical elements at the propagated epoch.
|
|
245
|
+
*/
|
|
246
|
+
propagate(propEpoch) {
|
|
247
|
+
const t = this.epoch;
|
|
248
|
+
const n = this.meanMotion;
|
|
249
|
+
const delta = propEpoch.difference(t);
|
|
250
|
+
const cosV = Math.cos(this.trueAnomaly);
|
|
251
|
+
let eaInit = Math.acos(clamp((this.eccentricity + cosV) / (1 + this.eccentricity * cosV), -1, 1));
|
|
252
|
+
eaInit = matchHalfPlane(eaInit, this.trueAnomaly);
|
|
253
|
+
let maInit = eaInit - this.eccentricity * Math.sin(eaInit);
|
|
254
|
+
maInit = matchHalfPlane(maInit, eaInit);
|
|
255
|
+
const maFinal = (maInit + n * delta) % TAU;
|
|
256
|
+
let eaFinal = maFinal;
|
|
257
|
+
for (let iter = 0; iter < 32; iter++) {
|
|
258
|
+
const eaTemp = maFinal + this.eccentricity * Math.sin(eaFinal);
|
|
259
|
+
if (Math.abs(eaTemp - eaFinal) < 1e-12) {
|
|
260
|
+
break;
|
|
261
|
+
}
|
|
262
|
+
eaFinal = eaTemp;
|
|
263
|
+
}
|
|
264
|
+
const cosEaFinal = Math.cos(eaFinal);
|
|
265
|
+
let vFinal = clamp(Math.acos((cosEaFinal - this.eccentricity) / (1 - this.eccentricity * cosEaFinal)), -1, 1);
|
|
266
|
+
vFinal = matchHalfPlane(vFinal, eaFinal);
|
|
267
|
+
return new ClassicalElements({
|
|
268
|
+
epoch: propEpoch,
|
|
269
|
+
semimajorAxis: this.semimajorAxis,
|
|
270
|
+
eccentricity: this.eccentricity,
|
|
271
|
+
inclination: this.inclination,
|
|
272
|
+
rightAscension: this.rightAscension,
|
|
273
|
+
argPerigee: this.argPerigee,
|
|
274
|
+
trueAnomaly: vFinal,
|
|
275
|
+
mu: this.mu,
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
//# sourceMappingURL=ClassicalElements.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassicalElements.js","sourceRoot":"","sources":["../../src/coordinate/ClassicalElements.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author @thkruz Theodore Kruczek
|
|
3
|
+
* @description Orbital Object ToolKit (ootk) is a collection of tools for working
|
|
4
|
+
* with satellites and other orbital objects.
|
|
5
|
+
* @license AGPL-3.0-or-later
|
|
6
|
+
* @copyright (c) 2025 Kruczek Labs LLC
|
|
7
|
+
*
|
|
8
|
+
* Many of the classes are based off of the work of @david-rc-dayton and his
|
|
9
|
+
* Pious Squid library (https://github.com/david-rc-dayton/pious_squid) which
|
|
10
|
+
* is licensed under the MIT license.
|
|
11
|
+
*
|
|
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
|
+
*/
|
|
23
|
+
import { Minutes, PositionVelocity, Kilometers, Radians } from '../main.js';
|
|
24
|
+
import { EpochUTC } from '../time/EpochUTC.js';
|
|
25
|
+
import { ClassicalElements } from './ClassicalElements.js';
|
|
26
|
+
import { EquinoctialElementsParams } from '../interfaces/EquinoctialElementsParams.js';
|
|
27
|
+
/**
|
|
28
|
+
* Equinoctial elements are a set of orbital elements used to describe the
|
|
29
|
+
* orbits of celestial bodies, such as satellites around a planet. They provide
|
|
30
|
+
* an alternative to the traditional Keplerian elements and are especially
|
|
31
|
+
* useful for avoiding singularities and numerical issues in certain types of
|
|
32
|
+
* orbits.
|
|
33
|
+
*
|
|
34
|
+
* Unlike Keplerian elements, equinoctial elements don't suffer from
|
|
35
|
+
* singularities at zero eccentricity (circular orbits) or zero inclination
|
|
36
|
+
* (equatorial orbits). This makes them more reliable for numerical simulations
|
|
37
|
+
* and analytical studies, especially in these edge cases.
|
|
38
|
+
* @see https://faculty.nps.edu/dad/orbital/th0.pdf
|
|
39
|
+
*/
|
|
40
|
+
export declare class EquinoctialElements {
|
|
41
|
+
epoch: EpochUTC;
|
|
42
|
+
/** The semi-major axis of the orbit in kilometers. */
|
|
43
|
+
a: Kilometers;
|
|
44
|
+
/** The h component of the eccentricity vector. */
|
|
45
|
+
h: number;
|
|
46
|
+
/** The k component of the eccentricity vector. */
|
|
47
|
+
k: number;
|
|
48
|
+
/** The p component of the ascending node vector. */
|
|
49
|
+
p: number;
|
|
50
|
+
/** The q component of the ascending node vector. */
|
|
51
|
+
q: number;
|
|
52
|
+
/** The mean longitude of the orbit in radians. */
|
|
53
|
+
lambda: Radians;
|
|
54
|
+
/** The gravitational parameter of the central body in km³/s². */
|
|
55
|
+
mu: number;
|
|
56
|
+
/** The retrograde factor. 1 for prograde orbits, -1 for retrograde orbits. */
|
|
57
|
+
I: 1 | -1;
|
|
58
|
+
constructor({ epoch, h, k, lambda, a, p, q, mu, I }: EquinoctialElementsParams);
|
|
59
|
+
/**
|
|
60
|
+
* Returns a string representation of the EquinoctialElements object.
|
|
61
|
+
* @returns A string representation of the EquinoctialElements object.
|
|
62
|
+
*/
|
|
63
|
+
toString(): string;
|
|
64
|
+
/**
|
|
65
|
+
* Gets the semimajor axis.
|
|
66
|
+
* @returns The semimajor axis in kilometers.
|
|
67
|
+
*/
|
|
68
|
+
get semimajorAxis(): Kilometers;
|
|
69
|
+
/**
|
|
70
|
+
* Gets the mean longitude.
|
|
71
|
+
* @returns The mean longitude in radians.
|
|
72
|
+
*/
|
|
73
|
+
get meanLongitude(): Radians;
|
|
74
|
+
/**
|
|
75
|
+
* Calculates the mean motion of the celestial object.
|
|
76
|
+
* @returns The mean motion in units of radians per second.
|
|
77
|
+
*/
|
|
78
|
+
get meanMotion(): number;
|
|
79
|
+
/**
|
|
80
|
+
* Gets the retrograde factor.
|
|
81
|
+
* @returns The retrograde factor.
|
|
82
|
+
*/
|
|
83
|
+
get retrogradeFactor(): number;
|
|
84
|
+
/**
|
|
85
|
+
* Checks if the orbit is prograde.
|
|
86
|
+
* @returns True if the orbit is prograde, false otherwise.
|
|
87
|
+
*/
|
|
88
|
+
isPrograde(): boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Checks if the orbit is retrograde.
|
|
91
|
+
* @returns True if the orbit is retrograde, false otherwise.
|
|
92
|
+
*/
|
|
93
|
+
isRetrograde(): boolean;
|
|
94
|
+
/**
|
|
95
|
+
* Gets the period of the orbit.
|
|
96
|
+
* @returns The period in minutes.
|
|
97
|
+
*/
|
|
98
|
+
get period(): Minutes;
|
|
99
|
+
/**
|
|
100
|
+
* Gets the number of revolutions per day.
|
|
101
|
+
* @returns The number of revolutions per day.
|
|
102
|
+
*/
|
|
103
|
+
get revsPerDay(): number;
|
|
104
|
+
/**
|
|
105
|
+
* Converts the equinoctial elements to classical elements.
|
|
106
|
+
* @returns The classical elements.
|
|
107
|
+
*/
|
|
108
|
+
toClassicalElements(): ClassicalElements;
|
|
109
|
+
/**
|
|
110
|
+
* Converts the equinoctial elements to position and velocity.
|
|
111
|
+
* @returns The position and velocity in classical elements.
|
|
112
|
+
*/
|
|
113
|
+
toPositionVelocity(): PositionVelocity;
|
|
114
|
+
}
|