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,120 @@
|
|
|
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 '../body/Earth.js';
|
|
24
|
+
import { ITRF } from './ITRF.js';
|
|
25
|
+
import { StateVector } from './StateVector.js';
|
|
26
|
+
import { TEME } from './TEME.js';
|
|
27
|
+
/**
|
|
28
|
+
* Represents a position and velocity in the J2000 coordinate system. This is an Earth-centered inertial (ECI)
|
|
29
|
+
* coordinate system.
|
|
30
|
+
*
|
|
31
|
+
* Commonly used ECI frame is defined with the Earth's Mean Equator and Mean Equinox (MEME) at 12:00 Terrestrial Time on
|
|
32
|
+
* 1 January 2000. It can be referred to as J2K, J2000 or EME2000. The x-axis is aligned with the mean vernal equinox.
|
|
33
|
+
* The z-axis is aligned with the Earth's rotation axis (or equivalently, the celestial North Pole) as it was at that
|
|
34
|
+
* time. The y-axis is rotated by 90° East about the celestial equator.
|
|
35
|
+
* @see https://en.wikipedia.org/wiki/Earth-centered_inertial
|
|
36
|
+
*/
|
|
37
|
+
export class J2000 extends StateVector {
|
|
38
|
+
/**
|
|
39
|
+
* Creates a J2000 coordinate from classical elements.
|
|
40
|
+
* @param elements The classical elements.
|
|
41
|
+
* @returns The J2000 coordinate.
|
|
42
|
+
*/
|
|
43
|
+
static fromClassicalElements(elements) {
|
|
44
|
+
const rv = elements.toPositionVelocity();
|
|
45
|
+
return new J2000(elements.epoch, rv.position, rv.velocity);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Gets the name of the coordinate system.
|
|
49
|
+
* @returns The name of the coordinate system.
|
|
50
|
+
*/
|
|
51
|
+
get name() {
|
|
52
|
+
return 'J2000';
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Gets a value indicating whether the coordinate system is inertial.
|
|
56
|
+
* @returns A boolean value indicating whether the coordinate system is inertial.
|
|
57
|
+
*/
|
|
58
|
+
get inertial() {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Converts the coordinates from J2000 to the International Terrestrial Reference Frame (ITRF).
|
|
63
|
+
* This is an ECI to ECF transformation.
|
|
64
|
+
* @returns The ITRF coordinates.
|
|
65
|
+
*/
|
|
66
|
+
toITRF() {
|
|
67
|
+
const p = Earth.precession(this.epoch);
|
|
68
|
+
const n = Earth.nutation(this.epoch);
|
|
69
|
+
const ast = (this.epoch.gmstAngle() + n.eqEq);
|
|
70
|
+
const rMOD = this.position
|
|
71
|
+
.rotZ(-p.zeta)
|
|
72
|
+
.rotY(p.theta)
|
|
73
|
+
.rotZ(-p.zed);
|
|
74
|
+
const vMOD = this.velocity
|
|
75
|
+
.rotZ(-p.zeta)
|
|
76
|
+
.rotY(p.theta)
|
|
77
|
+
.rotZ(-p.zed);
|
|
78
|
+
const rTOD = rMOD
|
|
79
|
+
.rotX(n.mEps)
|
|
80
|
+
.rotZ(-n.dPsi)
|
|
81
|
+
.rotX(-n.eps);
|
|
82
|
+
const vTOD = vMOD
|
|
83
|
+
.rotX(n.mEps)
|
|
84
|
+
.rotZ(-n.dPsi)
|
|
85
|
+
.rotX(-n.eps);
|
|
86
|
+
const rPEF = rTOD.rotZ(ast);
|
|
87
|
+
const vPEF = vTOD.rotZ(ast).add(Earth.rotation.negate().cross(rPEF));
|
|
88
|
+
return new ITRF(this.epoch, rPEF, vPEF);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Converts the J2000 coordinate to the TEME coordinate.
|
|
92
|
+
* @returns The TEME coordinate.
|
|
93
|
+
*/
|
|
94
|
+
toTEME() {
|
|
95
|
+
const p = Earth.precession(this.epoch);
|
|
96
|
+
const n = Earth.nutation(this.epoch);
|
|
97
|
+
const eps = n.mEps + n.dEps;
|
|
98
|
+
const dPsiCosEps = (n.dPsi * Math.cos(eps));
|
|
99
|
+
const rMOD = this.position
|
|
100
|
+
.rotZ(-p.zeta)
|
|
101
|
+
.rotY(p.theta)
|
|
102
|
+
.rotZ(-p.zed);
|
|
103
|
+
const vMOD = this.velocity
|
|
104
|
+
.rotZ(-p.zeta)
|
|
105
|
+
.rotY(p.theta)
|
|
106
|
+
.rotZ(-p.zed);
|
|
107
|
+
const rTEME = rMOD
|
|
108
|
+
.rotX(n.mEps)
|
|
109
|
+
.rotZ(-n.dPsi)
|
|
110
|
+
.rotX(-eps)
|
|
111
|
+
.rotZ(dPsiCosEps);
|
|
112
|
+
const vTEME = vMOD
|
|
113
|
+
.rotX(n.mEps)
|
|
114
|
+
.rotZ(-n.dPsi)
|
|
115
|
+
.rotX(-eps)
|
|
116
|
+
.rotZ(dPsiCosEps);
|
|
117
|
+
return new TEME(this.epoch, rTEME, vTEME);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=J2000.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"J2000.js","sourceRoot":"","sources":["../../src/coordinate/J2000.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
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 { Matrix } from '../operations/Matrix.js';
|
|
24
|
+
import { J2000 } from './J2000.js';
|
|
25
|
+
import { RelativeState } from './RelativeState.js';
|
|
26
|
+
/**
|
|
27
|
+
* Represents a Radial-Intrack-Crosstrack (RIC) coordinates.
|
|
28
|
+
*/
|
|
29
|
+
export declare class RIC extends RelativeState {
|
|
30
|
+
/**
|
|
31
|
+
* Gets the name of the RIC coordinate system.
|
|
32
|
+
* @returns The name of the RIC coordinate system.
|
|
33
|
+
*/
|
|
34
|
+
get name(): string;
|
|
35
|
+
/**
|
|
36
|
+
* Creates a new RIC (Radial-Intrack-Crosstrack) coordinate from the J2000 state vectors.
|
|
37
|
+
* @param state - The J2000 state vector.
|
|
38
|
+
* @param origin - The J2000 state vector of the origin.
|
|
39
|
+
* @param transform - The transformation matrix.
|
|
40
|
+
* @returns The RIC coordinate.
|
|
41
|
+
*/
|
|
42
|
+
static fromJ2000Matrix(state: J2000, origin: J2000, transform: Matrix): RIC;
|
|
43
|
+
/**
|
|
44
|
+
* Creates a RIC (Radial-Intrack-Crosstrack) coordinate system from a J2000 state and origin.
|
|
45
|
+
* @param state The J2000 state.
|
|
46
|
+
* @param origin The J2000 origin.
|
|
47
|
+
* @returns The RIC coordinate system.
|
|
48
|
+
*/
|
|
49
|
+
static fromJ2000(state: J2000, origin: J2000): RIC;
|
|
50
|
+
/**
|
|
51
|
+
* Transforms the current RIC coordinate to the J2000 coordinate system using the provided origin and transform
|
|
52
|
+
* matrix.
|
|
53
|
+
* @param origin The origin J2000 coordinate.
|
|
54
|
+
* @param transform The transformation matrix.
|
|
55
|
+
* @returns The transformed J2000 coordinate.
|
|
56
|
+
*/
|
|
57
|
+
toJ2000Matrix(origin: J2000, transform: Matrix): J2000;
|
|
58
|
+
/**
|
|
59
|
+
* Transforms the current RIC coordinate to the J2000 coordinate system using the provided origin.
|
|
60
|
+
* @param origin The origin J2000 coordinate.
|
|
61
|
+
* @returns The transformed J2000 coordinate.
|
|
62
|
+
*/
|
|
63
|
+
toJ2000(origin: J2000): J2000;
|
|
64
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
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 { J2000 } from './J2000.js';
|
|
24
|
+
import { RelativeState } from './RelativeState.js';
|
|
25
|
+
/**
|
|
26
|
+
* Represents a Radial-Intrack-Crosstrack (RIC) coordinates.
|
|
27
|
+
*/
|
|
28
|
+
export class RIC extends RelativeState {
|
|
29
|
+
/**
|
|
30
|
+
* Gets the name of the RIC coordinate system.
|
|
31
|
+
* @returns The name of the RIC coordinate system.
|
|
32
|
+
*/
|
|
33
|
+
get name() {
|
|
34
|
+
return 'RIC';
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Creates a new RIC (Radial-Intrack-Crosstrack) coordinate from the J2000 state vectors.
|
|
38
|
+
* @param state - The J2000 state vector.
|
|
39
|
+
* @param origin - The J2000 state vector of the origin.
|
|
40
|
+
* @param transform - The transformation matrix.
|
|
41
|
+
* @returns The RIC coordinate.
|
|
42
|
+
*/
|
|
43
|
+
static fromJ2000Matrix(state, origin, transform) {
|
|
44
|
+
const dr = state.position.subtract(origin.position);
|
|
45
|
+
const dv = state.velocity.subtract(origin.velocity);
|
|
46
|
+
return new RIC(transform.multiplyVector3D(dr), transform.multiplyVector3D(dv));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Creates a RIC (Radial-Intrack-Crosstrack) coordinate system from a J2000 state and origin.
|
|
50
|
+
* @param state The J2000 state.
|
|
51
|
+
* @param origin The J2000 origin.
|
|
52
|
+
* @returns The RIC coordinate system.
|
|
53
|
+
*/
|
|
54
|
+
static fromJ2000(state, origin) {
|
|
55
|
+
return RIC.fromJ2000Matrix(state, origin, RelativeState.createMatrix(origin.position, origin.velocity));
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Transforms the current RIC coordinate to the J2000 coordinate system using the provided origin and transform
|
|
59
|
+
* matrix.
|
|
60
|
+
* @param origin The origin J2000 coordinate.
|
|
61
|
+
* @param transform The transformation matrix.
|
|
62
|
+
* @returns The transformed J2000 coordinate.
|
|
63
|
+
*/
|
|
64
|
+
toJ2000Matrix(origin, transform) {
|
|
65
|
+
const tt = transform.transpose();
|
|
66
|
+
const tr = tt.multiplyVector3D(this.position);
|
|
67
|
+
const tv = tt.multiplyVector3D(this.velocity);
|
|
68
|
+
return new J2000(origin.epoch, origin.position.add(tr), origin.velocity.add(tv));
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Transforms the current RIC coordinate to the J2000 coordinate system using the provided origin.
|
|
72
|
+
* @param origin The origin J2000 coordinate.
|
|
73
|
+
* @returns The transformed J2000 coordinate.
|
|
74
|
+
*/
|
|
75
|
+
toJ2000(origin) {
|
|
76
|
+
return this.toJ2000Matrix(origin, RelativeState.createMatrix(origin.position, origin.velocity));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=RIC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RIC.js","sourceRoot":"","sources":["../../src/coordinate/RIC.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;GAEG;AACH,MAAM,OAAO,GAAI,SAAQ,aAAa;IACpC;;;OAGG;IACH,IAAI,IAAI;QACN,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,eAAe,CAAC,KAAY,EAAE,MAAa,EAAE,SAAiB;QACnE,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEpD,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;IACjF,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,KAAY,EAAE,MAAa;QAC1C,OAAO,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1G,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CAAC,MAAa,EAAE,SAAiB;QAC5C,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE9C,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACnF,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,MAAa;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClG,CAAC;CACF"}
|
|
@@ -0,0 +1,70 @@
|
|
|
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 { Kilometers, KilometersPerSecond } from '../main.js';
|
|
24
|
+
import { Matrix } from '../operations/Matrix.js';
|
|
25
|
+
import { Vector3D } from '../operations/Vector3D.js';
|
|
26
|
+
import { J2000 } from './J2000.js';
|
|
27
|
+
/**
|
|
28
|
+
* Represents the relative state of an object in 3D space.
|
|
29
|
+
*/
|
|
30
|
+
export declare abstract class RelativeState {
|
|
31
|
+
position: Vector3D<Kilometers>;
|
|
32
|
+
velocity: Vector3D<KilometersPerSecond>;
|
|
33
|
+
constructor(position: Vector3D<Kilometers>, velocity: Vector3D<KilometersPerSecond>);
|
|
34
|
+
/**
|
|
35
|
+
* Gets the name of the coordinate system.
|
|
36
|
+
* @returns The name of the coordinate system.
|
|
37
|
+
*/
|
|
38
|
+
abstract get name(): string;
|
|
39
|
+
/**
|
|
40
|
+
* Returns a string representation of the RelativeState object. The string includes the name, position, and velocity
|
|
41
|
+
* of the object.
|
|
42
|
+
* @returns A string representation of the RelativeState object.
|
|
43
|
+
*/
|
|
44
|
+
toString(): string;
|
|
45
|
+
/**
|
|
46
|
+
* Transforms the current RelativeState coordinate to the J2000 coordinate
|
|
47
|
+
* @param origin The origin J2000 coordinate.
|
|
48
|
+
* @returns The transformed J2000 coordinate.
|
|
49
|
+
*/
|
|
50
|
+
abstract toJ2000(origin: J2000): J2000;
|
|
51
|
+
/**
|
|
52
|
+
* Creates a matrix based on the given position and velocity vectors. The matrix represents the relative state of an
|
|
53
|
+
* object in 3D space.
|
|
54
|
+
* @param position - The position vector.
|
|
55
|
+
* @param velocity - The velocity vector.
|
|
56
|
+
* @returns The matrix representing the relative state.
|
|
57
|
+
*/
|
|
58
|
+
static createMatrix(position: Vector3D, velocity: Vector3D): Matrix;
|
|
59
|
+
/**
|
|
60
|
+
* Calculates the range of the relative state.
|
|
61
|
+
* @returns The range in kilometers.
|
|
62
|
+
*/
|
|
63
|
+
get range(): Kilometers;
|
|
64
|
+
/**
|
|
65
|
+
* Calculates the range rate of the relative state. Range rate is the dot product of the position and velocity divided
|
|
66
|
+
* by the range.
|
|
67
|
+
* @returns The range rate in Kilometers per second.
|
|
68
|
+
*/
|
|
69
|
+
get rangeRate(): number;
|
|
70
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
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 { Matrix } from '../operations/Matrix.js';
|
|
24
|
+
/**
|
|
25
|
+
* Represents the relative state of an object in 3D space.
|
|
26
|
+
*/
|
|
27
|
+
export class RelativeState {
|
|
28
|
+
position;
|
|
29
|
+
velocity;
|
|
30
|
+
constructor(position, velocity) {
|
|
31
|
+
this.position = position;
|
|
32
|
+
this.velocity = velocity;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Returns a string representation of the RelativeState object. The string includes the name, position, and velocity
|
|
36
|
+
* of the object.
|
|
37
|
+
* @returns A string representation of the RelativeState object.
|
|
38
|
+
*/
|
|
39
|
+
toString() {
|
|
40
|
+
return [
|
|
41
|
+
`[${this.name}]`,
|
|
42
|
+
` Position: ${this.position.toString(6)} km`,
|
|
43
|
+
` Velocity: ${this.velocity.toString(9)} km/s`,
|
|
44
|
+
].join('\n');
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Creates a matrix based on the given position and velocity vectors. The matrix represents the relative state of an
|
|
48
|
+
* object in 3D space.
|
|
49
|
+
* @param position - The position vector.
|
|
50
|
+
* @param velocity - The velocity vector.
|
|
51
|
+
* @returns The matrix representing the relative state.
|
|
52
|
+
*/
|
|
53
|
+
static createMatrix(position, velocity) {
|
|
54
|
+
const ru = position.normalize();
|
|
55
|
+
const cu = position.cross(velocity).normalize();
|
|
56
|
+
const iu = cu.cross(ru).normalize();
|
|
57
|
+
return new Matrix([
|
|
58
|
+
[ru.x, ru.y, ru.z],
|
|
59
|
+
[iu.x, iu.y, iu.z],
|
|
60
|
+
[cu.x, cu.y, cu.z],
|
|
61
|
+
]);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Calculates the range of the relative state.
|
|
65
|
+
* @returns The range in kilometers.
|
|
66
|
+
*/
|
|
67
|
+
get range() {
|
|
68
|
+
return this.position.magnitude();
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Calculates the range rate of the relative state. Range rate is the dot product of the position and velocity divided
|
|
72
|
+
* by the range.
|
|
73
|
+
* @returns The range rate in Kilometers per second.
|
|
74
|
+
*/
|
|
75
|
+
get rangeRate() {
|
|
76
|
+
return this.position.dot(this.velocity) / this.range;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=RelativeState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RelativeState.js","sourceRoot":"","sources":["../../src/coordinate/RelativeState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAIjD;;GAEG;AACH,MAAM,OAAgB,aAAa;IACjC,QAAQ,CAAuB;IAC/B,QAAQ,CAAgC;IACxC,YAAY,QAA8B,EAAE,QAAuC;QACjF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAQD;;;;OAIG;IACH,QAAQ;QACN,OAAO;YACL,IAAI,IAAI,CAAC,IAAI,GAAG;YAChB,eAAe,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;YAC7C,eAAe,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO;SAChD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IASD;;;;;;OAMG;IACH,MAAM,CAAC,YAAY,CAAC,QAAkB,EAAE,QAAkB;QACxD,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,CAAC;QAChD,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;QAEpC,OAAO,IAAI,MAAM,CAAC;YAChB,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAClB,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAClB,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;SACnB,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;IACvD,CAAC;CACF"}
|
|
@@ -0,0 +1,76 @@
|
|
|
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 { ClassicalElements, Kilometers, KilometersPerSecond, Minutes, EpochUTC, Vector3D } from '../main.js';
|
|
24
|
+
/**
|
|
25
|
+
* A state vector is a set of coordinates used to specify the position and
|
|
26
|
+
* velocity of an object in a particular reference frame.
|
|
27
|
+
*/
|
|
28
|
+
export declare abstract class StateVector {
|
|
29
|
+
epoch: EpochUTC;
|
|
30
|
+
position: Vector3D<Kilometers>;
|
|
31
|
+
velocity: Vector3D<KilometersPerSecond>;
|
|
32
|
+
constructor(epoch: EpochUTC, position: Vector3D<Kilometers>, velocity: Vector3D<KilometersPerSecond>);
|
|
33
|
+
/**
|
|
34
|
+
* The name of the reference frame in which the state vector is defined.
|
|
35
|
+
* @returns The name of the reference frame.
|
|
36
|
+
*/
|
|
37
|
+
abstract get name(): string;
|
|
38
|
+
/**
|
|
39
|
+
* Whether the state vector is defined in an inertial reference frame.
|
|
40
|
+
* @returns True if the state vector is defined in an inertial reference
|
|
41
|
+
*/
|
|
42
|
+
abstract get inertial(): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Returns a string representation of the StateVector object. The string includes the name, epoch, position, and
|
|
45
|
+
* velocity.
|
|
46
|
+
* @returns A string representation of the StateVector object.
|
|
47
|
+
*/
|
|
48
|
+
toString(): string;
|
|
49
|
+
/**
|
|
50
|
+
* Calculates the mechanical energy of the state vector.
|
|
51
|
+
* @returns The mechanical energy value.
|
|
52
|
+
*/
|
|
53
|
+
get mechanicalEnergy(): number;
|
|
54
|
+
/**
|
|
55
|
+
* Calculates the semimajor axis of the state vector.
|
|
56
|
+
* @returns The semimajor axis in kilometers.
|
|
57
|
+
*/
|
|
58
|
+
get semimajorAxis(): Kilometers;
|
|
59
|
+
/**
|
|
60
|
+
* Gets the period of the state vector in minutes.
|
|
61
|
+
* @returns The period in minutes.
|
|
62
|
+
*/
|
|
63
|
+
get period(): Minutes;
|
|
64
|
+
/**
|
|
65
|
+
* Gets the angular rate of the state vector.
|
|
66
|
+
* @returns The angular rate.
|
|
67
|
+
*/
|
|
68
|
+
get angularRate(): number;
|
|
69
|
+
/**
|
|
70
|
+
* Converts the state vector to classical elements.
|
|
71
|
+
* @param mu The gravitational parameter of the celestial body. Defaults to Earth's gravitational parameter.
|
|
72
|
+
* @returns The classical elements corresponding to the state vector.
|
|
73
|
+
* @throws Error if classical elements are undefined for fixed frames.
|
|
74
|
+
*/
|
|
75
|
+
toClassicalElements(mu?: number): ClassicalElements;
|
|
76
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
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 { ClassicalElements, TAU, Earth, } from '../main.js';
|
|
24
|
+
/**
|
|
25
|
+
* A state vector is a set of coordinates used to specify the position and
|
|
26
|
+
* velocity of an object in a particular reference frame.
|
|
27
|
+
*/
|
|
28
|
+
export class StateVector {
|
|
29
|
+
epoch;
|
|
30
|
+
position;
|
|
31
|
+
velocity;
|
|
32
|
+
constructor(epoch, position, velocity) {
|
|
33
|
+
this.epoch = epoch;
|
|
34
|
+
this.position = position;
|
|
35
|
+
this.velocity = velocity;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Returns a string representation of the StateVector object. The string includes the name, epoch, position, and
|
|
39
|
+
* velocity.
|
|
40
|
+
* @returns A string representation of the StateVector object.
|
|
41
|
+
*/
|
|
42
|
+
toString() {
|
|
43
|
+
return [
|
|
44
|
+
`[${this.name}]`,
|
|
45
|
+
` Epoch: ${this.epoch}`,
|
|
46
|
+
` Position: ${this.position.toString(6)} km`,
|
|
47
|
+
` Velocity: ${this.velocity.toString(9)} km/s`,
|
|
48
|
+
].join('\n');
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Calculates the mechanical energy of the state vector.
|
|
52
|
+
* @returns The mechanical energy value.
|
|
53
|
+
*/
|
|
54
|
+
get mechanicalEnergy() {
|
|
55
|
+
const r = this.position.magnitude();
|
|
56
|
+
const v = this.velocity.magnitude();
|
|
57
|
+
return v * v * 0.5 - Earth.mu / r;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Calculates the semimajor axis of the state vector.
|
|
61
|
+
* @returns The semimajor axis in kilometers.
|
|
62
|
+
*/
|
|
63
|
+
get semimajorAxis() {
|
|
64
|
+
const energy = this.mechanicalEnergy;
|
|
65
|
+
return (-Earth.mu / (2.0 * energy));
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Gets the period of the state vector in minutes.
|
|
69
|
+
* @returns The period in minutes.
|
|
70
|
+
*/
|
|
71
|
+
get period() {
|
|
72
|
+
const a = this.semimajorAxis;
|
|
73
|
+
const periodSeconds = TAU * Math.sqrt((a * a * a) / Earth.mu);
|
|
74
|
+
return (periodSeconds / 60.0);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Gets the angular rate of the state vector.
|
|
78
|
+
* @returns The angular rate.
|
|
79
|
+
*/
|
|
80
|
+
get angularRate() {
|
|
81
|
+
const a = this.semimajorAxis;
|
|
82
|
+
return Math.sqrt(Earth.mu / (a * a * a));
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Converts the state vector to classical elements.
|
|
86
|
+
* @param mu The gravitational parameter of the celestial body. Defaults to Earth's gravitational parameter.
|
|
87
|
+
* @returns The classical elements corresponding to the state vector.
|
|
88
|
+
* @throws Error if classical elements are undefined for fixed frames.
|
|
89
|
+
*/
|
|
90
|
+
toClassicalElements(mu = Earth.mu) {
|
|
91
|
+
if (!this.inertial) {
|
|
92
|
+
throw new Error('Classical elements are undefined for fixed frames.');
|
|
93
|
+
}
|
|
94
|
+
return ClassicalElements.fromStateVector(this, mu);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=StateVector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StateVector.js","sourceRoot":"","sources":["../../src/coordinate/StateVector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EACL,iBAAiB,EAAE,GAAG,EAAE,KAAK,GAC9B,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,MAAM,OAAgB,WAAW;IAC/B,KAAK,CAAW;IAChB,QAAQ,CAAuB;IAC/B,QAAQ,CAAgC;IACxC,YAAY,KAAe,EAAE,QAA8B,EAAE,QAAuC;QAClG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAcD;;;;OAIG;IACH,QAAQ;QACN,OAAO;YACL,IAAI,IAAI,CAAC,IAAI,GAAG;YAChB,YAAY,IAAI,CAAC,KAAK,EAAE;YACxB,eAAe,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;YAC7C,eAAe,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO;SAChD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,IAAI,gBAAgB;QAClB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QAEpC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,IAAI,aAAa;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAErC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,CAAe,CAAC;IACpD,CAAC;IAED;;;OAGG;IACH,IAAI,MAAM;QACR,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;QAC7B,MAAM,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;QAE9D,OAAO,CAAC,aAAa,GAAG,IAAI,CAAY,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACH,IAAI,WAAW;QACb,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;QAE7B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE;QAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,iBAAiB,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACrD,CAAC;CACF"}
|
|
@@ -0,0 +1,57 @@
|
|
|
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 type { ClassicalElements } from './ClassicalElements.js';
|
|
24
|
+
import { J2000 } from './J2000.js';
|
|
25
|
+
import { StateVector } from './StateVector.js';
|
|
26
|
+
/**
|
|
27
|
+
* True Equator Mean Equinox (TEME) is a coordinate system commonly used in satellite tracking and orbit prediction. It
|
|
28
|
+
* is a reference frame that defines the position and orientation of an object relative to the Earth's equator and
|
|
29
|
+
* equinox.
|
|
30
|
+
*
|
|
31
|
+
* By using the True Equator Mean Equinox (TEME) coordinate system, we can accurately describe the position and motion
|
|
32
|
+
* of satellites relative to the Earth's equator and equinox. This is particularly useful for tracking and predicting
|
|
33
|
+
* satellite orbits in various applications, such as satellite communication, navigation, and remote sensing.
|
|
34
|
+
*/
|
|
35
|
+
export declare class TEME extends StateVector {
|
|
36
|
+
/**
|
|
37
|
+
* Gets the name of the coordinate system.
|
|
38
|
+
* @returns The name of the coordinate system.
|
|
39
|
+
*/
|
|
40
|
+
get name(): string;
|
|
41
|
+
/**
|
|
42
|
+
* Gets a value indicating whether the coordinate is inertial.
|
|
43
|
+
* @returns A boolean value indicating whether the coordinate is inertial.
|
|
44
|
+
*/
|
|
45
|
+
get inertial(): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Creates a TEME (True Equator Mean Equinox) object from classical orbital elements.
|
|
48
|
+
* @param elements - The classical orbital elements.
|
|
49
|
+
* @returns A new TEME object.
|
|
50
|
+
*/
|
|
51
|
+
static fromClassicalElements(elements: ClassicalElements): TEME;
|
|
52
|
+
/**
|
|
53
|
+
* Converts the TEME (True Equator Mean Equinox) coordinates to J2000 coordinates.
|
|
54
|
+
* @returns The J2000 coordinates.
|
|
55
|
+
*/
|
|
56
|
+
toJ2000(): J2000;
|
|
57
|
+
}
|