ootk 4.0.9 → 5.0.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 +305 -0
- package/dist/body/Sun.js +548 -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 +1 -1
- package/dist/coordinate/Hill.js +1 -1
- package/dist/coordinate/Hill.js.map +1 -1
- package/dist/coordinate/ITRF.d.ts +75 -0
- package/dist/coordinate/ITRF.js +135 -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 +430 -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 +12 -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 +1 -1
- package/dist/covariance/CovarianceSample.js +1 -1
- package/dist/covariance/CovarianceSample.js.map +1 -1
- package/dist/covariance/StateCovariance.d.ts +1 -1
- package/dist/covariance/StateCovariance.js +1 -1
- package/dist/covariance/StateCovariance.js.map +1 -1
- 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 +1 -1
- package/dist/force/AtmosphericDrag.js +1 -1
- package/dist/force/AtmosphericDrag.js.map +1 -1
- package/dist/force/EarthGravity.d.ts +1 -1
- package/dist/force/EarthGravity.js +1 -1
- package/dist/force/EarthGravity.js.map +1 -1
- package/dist/force/Force.d.ts +1 -1
- package/dist/force/ForceModel.d.ts +1 -1
- package/dist/force/ForceModel.js +1 -1
- package/dist/force/ForceModel.js.map +1 -1
- package/dist/force/Gravity.d.ts +1 -1
- package/dist/force/Gravity.js +1 -1
- package/dist/force/Gravity.js.map +1 -1
- package/dist/force/SolarRadiationPressure.d.ts +1 -1
- package/dist/force/SolarRadiationPressure.js +1 -1
- package/dist/force/SolarRadiationPressure.js.map +1 -1
- package/dist/force/ThirdBodyGravity.d.ts +1 -1
- package/dist/force/ThirdBodyGravity.js +1 -1
- package/dist/force/ThirdBodyGravity.js.map +1 -1
- package/dist/force/Thrust.d.ts +1 -1
- package/dist/force/Thrust.js +1 -1
- 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 +1 -1
- package/dist/interpolator/ChebyshevCoefficients.js +1 -1
- package/dist/interpolator/ChebyshevCoefficients.js.map +1 -1
- package/dist/interpolator/ChebyshevInterpolator.d.ts +1 -1
- package/dist/interpolator/ChebyshevInterpolator.js +1 -1
- package/dist/interpolator/ChebyshevInterpolator.js.map +1 -1
- package/dist/interpolator/CubicSpline.d.ts +1 -1
- package/dist/interpolator/CubicSplineInterpolator.d.ts +1 -1
- package/dist/interpolator/CubicSplineInterpolator.js +1 -1
- package/dist/interpolator/CubicSplineInterpolator.js.map +1 -1
- package/dist/interpolator/Interpolator.d.ts +1 -1
- package/dist/interpolator/Interpolator.js +1 -1
- package/dist/interpolator/Interpolator.js.map +1 -1
- package/dist/interpolator/LagrangeInterpolator.d.ts +1 -1
- package/dist/interpolator/LagrangeInterpolator.js +1 -1
- package/dist/interpolator/LagrangeInterpolator.js.map +1 -1
- package/dist/interpolator/StateInterpolator.d.ts +1 -1
- package/dist/interpolator/VerletBlendInterpolator.d.ts +1 -1
- package/dist/interpolator/VerletBlendInterpolator.js +1 -1
- package/dist/interpolator/VerletBlendInterpolator.js.map +1 -1
- package/dist/main.d.ts +11 -3
- package/dist/main.js +11 -3
- package/dist/main.js.map +1 -1
- package/dist/maneuver/TwoBurnOrbitTransfer.d.ts +1 -1
- package/dist/maneuver/TwoBurnOrbitTransfer.js +1 -1
- package/dist/maneuver/TwoBurnOrbitTransfer.js.map +1 -1
- package/dist/maneuver/Waypoint.d.ts +1 -1
- package/dist/maneuver/Waypoint.js +1 -1
- 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 +2 -1
- package/dist/objects/DetailedSatellite.js +2 -2
- package/dist/objects/DetailedSatellite.js.map +1 -1
- package/dist/objects/DetailedSensor.d.ts +2 -1
- package/dist/objects/DetailedSensor.js +1 -1
- 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 +2 -1
- package/dist/objects/LandObject.js +1 -1
- package/dist/objects/LandObject.js.map +1 -1
- package/dist/objects/Marker.d.ts +1 -1
- package/dist/objects/Marker.js +1 -1
- 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 +100 -0
- package/dist/objects/Sensor.js +239 -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 +1 -1
- package/dist/observation/ObservationOptical.d.ts +1 -1
- package/dist/observation/ObservationOptical.js +1 -1
- package/dist/observation/ObservationOptical.js.map +1 -1
- package/dist/observation/ObservationRadar.d.ts +1 -1
- package/dist/observation/ObservationRadar.js +1 -1
- package/dist/observation/ObservationRadar.js.map +1 -1
- package/dist/observation/ObservationUtils.d.ts +3 -1
- package/dist/observation/ObservationUtils.js +15 -1
- package/dist/observation/ObservationUtils.js.map +1 -1
- package/dist/observation/RAE.d.ts +111 -0
- package/dist/observation/RAE.js +215 -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 +1 -1
- package/dist/operations/BoxMuller.js +1 -1
- package/dist/operations/BoxMuller.js.map +1 -1
- package/dist/operations/EulerAngles.d.ts +1 -1
- package/dist/operations/EulerAngles.js +1 -1
- 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 +1 -1
- package/dist/operations/Quaternion.js +1 -1
- 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 +1 -1
- package/dist/operations/RandomGaussianSource.js +1 -1
- 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.js +1 -1
- package/dist/optimize/ChebyshevCompressor.js.map +1 -1
- package/dist/optimize/PolynomialRegression.js +1 -1
- package/dist/optimize/PolynomialRegression.js.map +1 -1
- package/dist/optimize/SimplexEntry.js +1 -1
- package/dist/optimize/SimplexEntry.js.map +1 -1
- package/dist/orbit_determination/BatchLeastSquaresOD.d.ts +1 -1
- package/dist/orbit_determination/BatchLeastSquaresOD.js +1 -1
- package/dist/orbit_determination/BatchLeastSquaresOD.js.map +1 -1
- package/dist/orbit_determination/BatchLeastSquaresResult.d.ts +1 -1
- package/dist/orbit_determination/GibbsIOD.d.ts +1 -1
- package/dist/orbit_determination/GibbsIOD.js +1 -1
- package/dist/orbit_determination/GibbsIOD.js.map +1 -1
- package/dist/orbit_determination/GoodingIOD.d.ts +1 -1
- package/dist/orbit_determination/GoodingIOD.js +1 -1
- package/dist/orbit_determination/GoodingIOD.js.map +1 -1
- package/dist/orbit_determination/HerrickGibbsIOD.d.ts +1 -1
- package/dist/orbit_determination/HerrickGibbsIOD.js +1 -1
- package/dist/orbit_determination/HerrickGibbsIOD.js.map +1 -1
- package/dist/orbit_determination/LambertIOD.d.ts +1 -1
- package/dist/orbit_determination/LambertIOD.js +1 -1
- package/dist/orbit_determination/LambertIOD.js.map +1 -1
- package/dist/orbit_determination/ModifiedGoodingIOD.d.ts +1 -1
- package/dist/orbit_determination/ModifiedGoodingIOD.js +1 -1
- 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/KeplerPropagator.d.ts +1 -1
- package/dist/propagator/KeplerPropagator.js +1 -1
- package/dist/propagator/KeplerPropagator.js.map +1 -1
- package/dist/propagator/Propagator.d.ts +1 -1
- package/dist/propagator/Propagator.js +1 -1
- package/dist/propagator/Propagator.js.map +1 -1
- package/dist/propagator/RkCheckpoint.d.ts +1 -1
- package/dist/propagator/RkResult.d.ts +1 -1
- package/dist/propagator/RungeKutta4Propagator.d.ts +1 -1
- package/dist/propagator/RungeKutta4Propagator.js +1 -1
- package/dist/propagator/RungeKutta4Propagator.js.map +1 -1
- package/dist/propagator/RungeKuttaAdaptive.d.ts +1 -1
- package/dist/propagator/RungeKuttaAdaptive.js +1 -1
- package/dist/propagator/RungeKuttaAdaptive.js.map +1 -1
- package/dist/propagator/Sgp4Propagator.d.ts +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 +102 -0
- package/dist/sgp4/sgp4.js +3167 -0
- package/dist/sgp4/sgp4.js.map +1 -0
- package/dist/smoothing/ExponentialSmoothing.d.ts +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 +43 -0
- package/dist/time/TimeStamped.js +46 -0
- package/dist/time/TimeStamped.js.map +1 -0
- package/dist/time/index.d.ts +30 -0
- package/dist/time/index.js +31 -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 +674 -2
- package/dist/types/types.js +36 -0
- 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/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 +3 -1
- package/dist/utils/index.js +3 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/jacobian.d.ts +1 -1
- package/dist/utils/jacobian.js +1 -1
- 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 +4 -7
- 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 +669 -0
- package/src/body/index.ts +27 -0
- package/src/body/suncalc.LICENSE.md +18 -0
- package/src/coordinate/ClassicalElements.ts +326 -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 +1 -1
- 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 +122 -0
- package/src/coordinate/TEME.ts +97 -0
- package/src/coordinate/Tle.ts +1024 -0
- package/src/coordinate/index.ts +12 -0
- package/src/coordinate/tle-format-data.ts +47 -0
- package/src/covariance/CovarianceSample.ts +1 -1
- package/src/covariance/StateCovariance.ts +1 -1
- 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 +1 -1
- package/src/force/EarthGravity.ts +1 -1
- package/src/force/Force.ts +1 -1
- package/src/force/ForceModel.ts +1 -1
- package/src/force/Gravity.ts +1 -1
- package/src/force/SolarRadiationPressure.ts +1 -1
- package/src/force/ThirdBodyGravity.ts +1 -1
- package/src/force/Thrust.ts +1 -1
- package/src/interfaces/BaseObjectParams.ts +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 +1 -1
- package/src/interpolator/ChebyshevInterpolator.ts +1 -1
- package/src/interpolator/CubicSpline.ts +1 -1
- package/src/interpolator/CubicSplineInterpolator.ts +1 -1
- package/src/interpolator/Interpolator.ts +1 -1
- package/src/interpolator/LagrangeInterpolator.ts +1 -1
- package/src/interpolator/StateInterpolator.ts +1 -1
- package/src/interpolator/VerletBlendInterpolator.ts +1 -1
- package/src/main.ts +11 -3
- package/src/maneuver/TwoBurnOrbitTransfer.ts +1 -1
- package/src/maneuver/Waypoint.ts +1 -1
- package/src/objects/BaseObject.ts +171 -0
- package/src/objects/DetailedSatellite.ts +3 -3
- package/src/objects/DetailedSensor.ts +2 -1
- package/src/objects/GroundObject.ts +176 -0
- package/src/objects/LandObject.ts +2 -1
- package/src/objects/Marker.ts +1 -1
- package/src/objects/RfSensor.ts +1 -2
- package/src/objects/Satellite.ts +552 -0
- package/src/objects/Sensor.ts +280 -0
- package/src/objects/Star.ts +96 -0
- package/src/objects/index.ts +5 -0
- package/src/observation/Observation.ts +1 -1
- package/src/observation/ObservationOptical.ts +1 -1
- package/src/observation/ObservationRadar.ts +1 -1
- package/src/observation/ObservationUtils.ts +30 -1
- package/src/observation/RAE.ts +262 -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 +1 -1
- package/src/operations/EulerAngles.ts +1 -1
- package/src/operations/Matrix.ts +473 -0
- package/src/operations/Quaternion.ts +1 -1
- package/src/operations/Random.ts +54 -0
- package/src/operations/RandomGaussianSource.ts +1 -1
- 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 +1 -1
- package/src/optimize/PolynomialRegression.ts +1 -1
- package/src/optimize/SimplexEntry.ts +1 -1
- package/src/orbit_determination/BatchLeastSquaresOD.ts +1 -1
- package/src/orbit_determination/BatchLeastSquaresResult.ts +1 -1
- package/src/orbit_determination/GibbsIOD.ts +3 -1
- package/src/orbit_determination/GoodingIOD.ts +1 -1
- package/src/orbit_determination/HerrickGibbsIOD.ts +1 -1
- package/src/orbit_determination/LambertIOD.ts +1 -1
- package/src/orbit_determination/ModifiedGoodingIOD.ts +1 -1
- package/src/orbit_determination/index.ts +7 -0
- package/src/propagator/KeplerPropagator.ts +1 -1
- package/src/propagator/Propagator.ts +1 -1
- package/src/propagator/RkCheckpoint.ts +1 -1
- package/src/propagator/RkResult.ts +1 -1
- package/src/propagator/RungeKutta4Propagator.ts +1 -1
- package/src/propagator/RungeKuttaAdaptive.ts +1 -1
- package/src/propagator/Sgp4Propagator.ts +1 -1
- 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 +3986 -0
- package/src/smoothing/ExponentialSmoothing.ts +1 -1
- 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 +50 -0
- package/src/time/index.ts +31 -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 +721 -2
- package/src/utils/constants.ts +113 -0
- package/src/utils/functions.ts +562 -0
- package/src/utils/index.ts +3 -1
- package/src/utils/jacobian.ts +1 -1
- package/src/utils/linearDistance.ts +11 -0
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Theodore Kruczek.
|
|
3
|
+
* @license MIT
|
|
4
|
+
* @copyright (c) 2022-2025 Theodore Kruczek Permission is
|
|
5
|
+
* hereby granted, free of charge, to any person obtaining a copy of this
|
|
6
|
+
* software and associated documentation files (the "Software"), to deal in the
|
|
7
|
+
* Software without restriction, including without limitation the rights to use,
|
|
8
|
+
* copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
9
|
+
* the Software, and to permit persons to whom the Software is furnished to do
|
|
10
|
+
* so, subject to the following conditions:
|
|
11
|
+
*
|
|
12
|
+
* The above copyright notice and this permission notice shall be included in
|
|
13
|
+
* all copies or substantial portions of the Software.
|
|
14
|
+
*
|
|
15
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
* SOFTWARE.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
import { Kilometers, KilometersPerSecond, Radians, linearDistance } from '../main.js';
|
|
25
|
+
import { Matrix } from './Matrix.js';
|
|
26
|
+
import { Vector } from './Vector.js';
|
|
27
|
+
|
|
28
|
+
// / 3-dimensional vector.
|
|
29
|
+
export class Vector3D<T extends number = number> {
|
|
30
|
+
constructor(
|
|
31
|
+
public x: T,
|
|
32
|
+
public y: T,
|
|
33
|
+
public z: T,
|
|
34
|
+
) {
|
|
35
|
+
// Nothing to do here.
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Create a new Vector3D object from the first three elements of a Vector
|
|
40
|
+
* object.
|
|
41
|
+
* @param v The Vector object to convert.
|
|
42
|
+
* @returns A new Vector3D object.
|
|
43
|
+
*/
|
|
44
|
+
static fromVector<U extends number>(v: Vector<U>): Vector3D<U> {
|
|
45
|
+
return new Vector3D<U>(v.x as U, v.y as U, v.z as U);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// / Origin vector.
|
|
49
|
+
static readonly origin = new Vector3D<number>(0, 0, 0);
|
|
50
|
+
|
|
51
|
+
// / X-axis unit vector.
|
|
52
|
+
static readonly xAxis = new Vector3D<number>(1, 0, 0);
|
|
53
|
+
|
|
54
|
+
// / Y-axis unit vector.
|
|
55
|
+
static readonly yAxis = new Vector3D<number>(0, 1, 0);
|
|
56
|
+
|
|
57
|
+
// / Z-axis unit vector.
|
|
58
|
+
static readonly zAxis = new Vector3D<number>(0, 0, 1);
|
|
59
|
+
|
|
60
|
+
// / Negative x-axis unit vector.
|
|
61
|
+
static readonly xAxisNeg = new Vector3D<number>(-1, 0, 0);
|
|
62
|
+
|
|
63
|
+
// / Negative y-axis unit vector.
|
|
64
|
+
static readonly yAxisNeg = new Vector3D<number>(0, -1, 0);
|
|
65
|
+
|
|
66
|
+
// / Negative z-axis unit vector.
|
|
67
|
+
static readonly zAxisNeg = new Vector3D<number>(0, 0, -1);
|
|
68
|
+
|
|
69
|
+
// / Convert this to a [List] of doubles.
|
|
70
|
+
toList() {
|
|
71
|
+
return [this.x, this.y, this.z];
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// / Convert this to a [Float64List] object.
|
|
75
|
+
toArray() {
|
|
76
|
+
return new Float64Array([this.x, this.y, this.z]);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Return the Vector3D element at the provided index.
|
|
81
|
+
* @deprecated don't do this
|
|
82
|
+
* @param index The index of the element to return.
|
|
83
|
+
* @returns The element at the provided index.
|
|
84
|
+
*/
|
|
85
|
+
public getElement(index: number): number {
|
|
86
|
+
switch (index) {
|
|
87
|
+
case 0:
|
|
88
|
+
return this.x;
|
|
89
|
+
case 1:
|
|
90
|
+
return this.y;
|
|
91
|
+
case 2:
|
|
92
|
+
return this.z;
|
|
93
|
+
default:
|
|
94
|
+
throw new Error(`Index ${index} outside 3D vector bounds.`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// / Convert this to a [Vector] object.
|
|
99
|
+
toVector() {
|
|
100
|
+
return new Vector(this.toList());
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
toString(fixed = -1): string {
|
|
104
|
+
if (fixed < 0) {
|
|
105
|
+
return `[${this.toList().join(', ')}]`;
|
|
106
|
+
}
|
|
107
|
+
const output = this.toList().map((e) => e.toFixed(fixed));
|
|
108
|
+
|
|
109
|
+
return `[${output.join(', ')}]`;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// / Return the magnitude of this vector.
|
|
113
|
+
magnitude(): T {
|
|
114
|
+
return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z) as T;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// / Return the result of adding this to another [Vector3D].
|
|
118
|
+
add(v: Vector3D<T>): Vector3D<T> {
|
|
119
|
+
return new Vector3D<T>((this.x + v.x) as T, (this.y + v.y) as T, (this.z + v.z) as T);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// / Return the result of subtracting this and another [Vector3D].
|
|
123
|
+
subtract(v: Vector3D<T>): Vector3D<T> {
|
|
124
|
+
return new Vector3D<T>((this.x - v.x) as T, (this.y - v.y) as T, (this.z - v.z) as T);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// / Return a copy of this [Vector3D] scaled by [n];
|
|
128
|
+
scale<U extends number>(n: U): Vector3D<U> {
|
|
129
|
+
return new Vector3D<U>(this.x * n as U, this.y * n as U, this.z * n as U);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// / Return a copy of this [Vector3D] with the elements negated.
|
|
133
|
+
negate(): Vector3D<T> {
|
|
134
|
+
return this.scale(-1 as T);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Return the Euclidean distance between this and another Vector3D.
|
|
139
|
+
* @param v The other Vector3D.
|
|
140
|
+
* @returns The distance between this and the other Vector3D.
|
|
141
|
+
*/
|
|
142
|
+
distance(v: Vector3D<T>): T {
|
|
143
|
+
return linearDistance(this, v);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Convert this to a unit Vector3D.
|
|
148
|
+
* @returns A unit Vector3D.
|
|
149
|
+
*/
|
|
150
|
+
normalize(): Vector3D<T> {
|
|
151
|
+
const m = this.magnitude();
|
|
152
|
+
|
|
153
|
+
if (m === 0) {
|
|
154
|
+
return Vector3D.origin as Vector3D<T>;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
return new Vector3D<T>(this.x / m as T, this.y / m as T, this.z / m as T);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// Calculate the dot product of this and another [Vector3D].
|
|
161
|
+
dot<T extends number>(v: Vector3D<T>): T {
|
|
162
|
+
return this.x * v.x + this.y * v.y + this.z * v.z as T;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// Calculate the outer product between this and another [Vector3D].
|
|
166
|
+
outer(v: Vector3D): Matrix {
|
|
167
|
+
return new Matrix([
|
|
168
|
+
[this.x * v.x, this.x * v.y, this.x * v.z],
|
|
169
|
+
[this.y * v.x, this.y * v.y, this.y * v.z],
|
|
170
|
+
[this.z * v.x, this.z * v.y, this.z * v.z],
|
|
171
|
+
]);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// Calculate the cross product of this and another [Vector3D].
|
|
175
|
+
cross<U extends number>(v: Vector3D<U>): Vector3D<U> {
|
|
176
|
+
return new Vector3D<U>(
|
|
177
|
+
(this.y * v.z - this.z * v.y) as U,
|
|
178
|
+
(this.z * v.x - this.x * v.z) as U,
|
|
179
|
+
(this.x * v.y - this.y * v.x) as U,
|
|
180
|
+
);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// Calculate the skew-symmetric matrix for this [Vector3D].
|
|
184
|
+
skewSymmetric(): Matrix {
|
|
185
|
+
return new Matrix([
|
|
186
|
+
[0, -this.z, this.y],
|
|
187
|
+
[this.z, 0, -this.x],
|
|
188
|
+
[-this.y, this.x, 0],
|
|
189
|
+
]);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/*
|
|
193
|
+
* Create a copy of this [Vector3D] rotated in the x-axis by angle [theta]
|
|
194
|
+
* _(rad)_.
|
|
195
|
+
*/
|
|
196
|
+
rotX(theta: number): Vector3D {
|
|
197
|
+
const cosT = Math.cos(theta);
|
|
198
|
+
const sinT = Math.sin(theta);
|
|
199
|
+
|
|
200
|
+
return new Vector3D(this.x, cosT * this.y + sinT * this.z, -sinT * this.y + cosT * this.z);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/*
|
|
204
|
+
* Create a copy of this [Vector3D] rotated in the y-axis by angle [theta]
|
|
205
|
+
* _(rad)_.
|
|
206
|
+
*/
|
|
207
|
+
rotY(theta: Radians): Vector3D<T> {
|
|
208
|
+
const cosT = Math.cos(theta);
|
|
209
|
+
const sinT = Math.sin(theta);
|
|
210
|
+
|
|
211
|
+
return new Vector3D<T>((cosT * this.x + -sinT * this.z) as T, this.y, (sinT * this.x + cosT * this.z) as T);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/*
|
|
215
|
+
* Create a copy of this [Vector3D] rotated in the z-axis by angle [theta]
|
|
216
|
+
* _(rad)_.
|
|
217
|
+
*/
|
|
218
|
+
rotZ(theta: Radians): Vector3D<T> {
|
|
219
|
+
const cosT = Math.cos(theta);
|
|
220
|
+
const sinT = Math.sin(theta);
|
|
221
|
+
|
|
222
|
+
return new Vector3D((cosT * this.x + sinT * this.y) as T, (-sinT * this.x + cosT * this.y) as T, this.z);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// Calculate the angle _(rad)_ between this and another [Vector3D].
|
|
226
|
+
angle<U extends number>(v: Vector3D<U>): Radians {
|
|
227
|
+
const theta = Math.atan2(this.cross(v).magnitude(), this.dot(v)) as Radians;
|
|
228
|
+
|
|
229
|
+
return isNaN(theta) ? 0 as Radians : theta;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
// Calculate the angle _(°)_ between this and another [Vector3D].
|
|
233
|
+
angleDegrees(v: Vector3D<T>): number {
|
|
234
|
+
return this.angle(v) * (180 / Math.PI);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/*
|
|
238
|
+
* Return `true` if line-of-sight exists between this and another [Vector3D]
|
|
239
|
+
* with a central body of the given [radius].
|
|
240
|
+
*/
|
|
241
|
+
sight(v: Vector3D<KilometersPerSecond>, radius: Kilometers): boolean {
|
|
242
|
+
const r1Mag2 = this.magnitude() ** 2;
|
|
243
|
+
const r2Mag2 = v.magnitude() ** 2;
|
|
244
|
+
const rDot = this.dot(v);
|
|
245
|
+
const tMin = (r1Mag2 - rDot) / (r1Mag2 + r2Mag2 - 2 * rDot);
|
|
246
|
+
let los = false;
|
|
247
|
+
|
|
248
|
+
if (tMin < 0 || tMin > 1) {
|
|
249
|
+
los = true;
|
|
250
|
+
} else {
|
|
251
|
+
const c = (1 - tMin) * r1Mag2 + rDot * tMin;
|
|
252
|
+
|
|
253
|
+
if (c >= radius * radius) {
|
|
254
|
+
los = true;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
return los;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// / Return the unit vector that bisects this and another [Vector3D].
|
|
262
|
+
bisect(v: Vector3D<T>): Vector3D<T> {
|
|
263
|
+
return this.scale(v.magnitude()).add(v.scale(this.magnitude())).normalize();
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
// / Convert this [Vector3D] into a row [Matrix].
|
|
267
|
+
row(): Matrix {
|
|
268
|
+
return new Matrix([[this.x, this.y, this.z]]);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// / Convert this [Vector3D] into a column [Matrix].
|
|
272
|
+
column(): Matrix {
|
|
273
|
+
return new Matrix([[this.x], [this.y], [this.z]]);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
// / Join this and another [Vector3D] into a new [Vector] object.
|
|
277
|
+
join(v: Vector3D): Vector {
|
|
278
|
+
const output = new Float64Array(6);
|
|
279
|
+
|
|
280
|
+
output[0] = this.x;
|
|
281
|
+
output[1] = this.y;
|
|
282
|
+
output[2] = this.z;
|
|
283
|
+
output[3] = v.x;
|
|
284
|
+
output[4] = v.y;
|
|
285
|
+
output[5] = v.z;
|
|
286
|
+
|
|
287
|
+
return new Vector(output);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Theodore Kruczek.
|
|
3
|
+
* @license MIT
|
|
4
|
+
* @copyright (c) 2022-2025 Theodore Kruczek Permission is
|
|
5
|
+
* hereby granted, free of charge, to any person obtaining a copy of this
|
|
6
|
+
* software and associated documentation files (the "Software"), to deal in the
|
|
7
|
+
* Software without restriction, including without limitation the rights to use,
|
|
8
|
+
* copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
9
|
+
* the Software, and to permit persons to whom the Software is furnished to do
|
|
10
|
+
* so, subject to the following conditions:
|
|
11
|
+
*
|
|
12
|
+
* The above copyright notice and this permission notice shall be included in
|
|
13
|
+
* all copies or substantial portions of the Software.
|
|
14
|
+
*
|
|
15
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
* SOFTWARE.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
export { Matrix } from './Matrix.js';
|
|
25
|
+
export { Random } from './Random.js';
|
|
26
|
+
export { Vector } from './Vector.js';
|
|
27
|
+
export { Vector3D } from './Vector3D.js';
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import { EpochUTC, Seconds, Vector3D } from '
|
|
18
|
+
import { EpochUTC, Seconds, Vector3D } from '../main.js';
|
|
19
19
|
import { StateInterpolator } from '../interpolator/StateInterpolator.js';
|
|
20
20
|
import { ChebyshevCoefficients } from './../interpolator/ChebyshevCoefficients.js';
|
|
21
21
|
import { ChebyshevInterpolator } from './../interpolator/ChebyshevInterpolator.js';
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
/* eslint-disable require-jsdoc */
|
|
19
19
|
/* eslint-disable func-style */
|
|
20
|
-
import { evalPoly } from '
|
|
20
|
+
import { evalPoly } from '../main.js';
|
|
21
21
|
import { DownhillSimplex } from './DownhillSimplex.js';
|
|
22
22
|
import { PolynomicalRegressionResult } from './PolynomicalRegressionResult.js';
|
|
23
23
|
// / Polynomial regression optimizer.
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import { concat, EpochUTC, J2000, Kilometers, KilometersPerSecond, Matrix, Vector, Vector3D } from '
|
|
18
|
+
import { concat, EpochUTC, J2000, Kilometers, KilometersPerSecond, Matrix, Vector, Vector3D } from '../main.js';
|
|
19
19
|
import { Observation } from '../observation/Observation.js';
|
|
20
20
|
import { PropagatorPairs } from '../observation/PropagatorPairs.js';
|
|
21
21
|
import { Propagator } from '../propagator/Propagator.js';
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import { J2000 } from '
|
|
18
|
+
import { J2000 } from '../main.js';
|
|
19
19
|
import { StateCovariance } from './../covariance/StateCovariance.js';
|
|
20
20
|
|
|
21
21
|
// / Batch least squares orbit determination result.
|
|
@@ -15,7 +15,9 @@
|
|
|
15
15
|
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import {
|
|
18
|
+
import {
|
|
19
|
+
DEG2RAD, Earth, EpochUTC, halfPi, J2000, Kilometers, KilometersPerSecond, Radians, Vector3D,
|
|
20
|
+
} from '../main.js';
|
|
19
21
|
import { ForceModel } from './../force/ForceModel.js';
|
|
20
22
|
import { RungeKutta89Propagator } from './../propagator/RungeKutta89Propagator.js';
|
|
21
23
|
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import { Earth, J2000, Kilometers, KilometersPerSecond, Seconds, TAU, Vector3D } from '
|
|
18
|
+
import { Earth, J2000, Kilometers, KilometersPerSecond, Seconds, TAU, Vector3D } from '../main.js';
|
|
19
19
|
import { ForceModel } from '../force/ForceModel.js';
|
|
20
20
|
import { RungeKutta89Propagator } from '../propagator/RungeKutta89Propagator.js';
|
|
21
21
|
import { ObservationOptical } from './../observation/ObservationOptical.js';
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import { Earth, EpochUTC, J2000, Kilometers, KilometersPerSecond, Vector3D } from '
|
|
18
|
+
import { Earth, EpochUTC, J2000, Kilometers, KilometersPerSecond, Vector3D } from '../main.js';
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* Herrik-Gibbs 3-position initial orbit determination.
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import { Earth, EpochUTC, J2000, Kilometers, KilometersPerSecond, Radians, Vector3D } from '
|
|
18
|
+
import { Earth, EpochUTC, J2000, Kilometers, KilometersPerSecond, Radians, Vector3D } from '../main.js';
|
|
19
19
|
|
|
20
20
|
// / Lambert two-position and time initial orbit determination.
|
|
21
21
|
export class LambertIOD {
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import { Earth, EpochUTC, J2000, Kilometers, KilometersPerSecond, RadecTopocentric, Vector3D } from '
|
|
18
|
+
import { Earth, EpochUTC, J2000, Kilometers, KilometersPerSecond, RadecTopocentric, Vector3D } from '../main.js';
|
|
19
19
|
import { ForceModel } from '../force/ForceModel.js';
|
|
20
20
|
import { RungeKutta89Propagator } from '../propagator/RungeKutta89Propagator.js';
|
|
21
21
|
import { ObservationOptical } from './../observation/ObservationOptical.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { BatchLeastSquaresOD } from './BatchLeastSquaresOD.js';
|
|
2
|
+
export { BatchLeastSquaresResult } from './BatchLeastSquaresResult.js';
|
|
3
|
+
export { GibbsIOD } from './GibbsIOD.js';
|
|
4
|
+
export { GoodingIOD } from './GoodingIOD.js';
|
|
5
|
+
export { HerrickGibbsIOD } from './HerrickGibbsIOD.js';
|
|
6
|
+
export { LambertIOD } from './LambertIOD.js';
|
|
7
|
+
export { ModifiedGoodingIOD } from './ModifiedGoodingIOD.js';
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import { ClassicalElements, EpochUTC, J2000, Seconds } from '
|
|
18
|
+
import { ClassicalElements, EpochUTC, J2000, Seconds } from '../main.js';
|
|
19
19
|
import { Thrust } from '../force/Thrust.js';
|
|
20
20
|
import { VerletBlendInterpolator } from '../interpolator/VerletBlendInterpolator.js';
|
|
21
21
|
import { Propagator } from './Propagator.js';
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import { EpochUTC, J2000, Seconds } from '
|
|
18
|
+
import { EpochUTC, J2000, Seconds } from '../main.js';
|
|
19
19
|
import { Thrust } from '../force/Thrust.js';
|
|
20
20
|
import { VerletBlendInterpolator } from '../interpolator/VerletBlendInterpolator.js';
|
|
21
21
|
import { GoldenSection } from './../optimize/GoldenSection.js';
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import { EpochUTC, J2000, Kilometers, KilometersPerSecond, Seconds, Vector, Vector3D } from '
|
|
18
|
+
import { EpochUTC, J2000, Kilometers, KilometersPerSecond, Seconds, Vector, Vector3D } from '../main.js';
|
|
19
19
|
import { ForceModel } from '../force/ForceModel.js';
|
|
20
20
|
import { Thrust } from '../force/Thrust.js';
|
|
21
21
|
import { VerletBlendInterpolator } from '../interpolator/VerletBlendInterpolator.js';
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* Orbital Object ToolKit. If not, see <http://www.gnu.org/licenses/>.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import { EpochUTC, J2000, Kilometers, KilometersPerSecond, Seconds, Vector, Vector3D } from '
|
|
18
|
+
import { EpochUTC, J2000, Kilometers, KilometersPerSecond, Seconds, Vector, Vector3D } from '../main.js';
|
|
19
19
|
import { ForceModel } from '../force/ForceModel.js';
|
|
20
20
|
import { Thrust } from '../force/Thrust.js';
|
|
21
21
|
import { VerletBlendInterpolator } from './../interpolator/VerletBlendInterpolator.js';
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
19
19
|
/* eslint-disable class-methods-use-this */
|
|
20
|
-
import { EpochUTC, J2000, Tle } from '
|
|
20
|
+
import { EpochUTC, J2000, Tle } from '../main.js';
|
|
21
21
|
import { Thrust } from '../force/Thrust.js';
|
|
22
22
|
import { VerletBlendInterpolator } from '../interpolator/VerletBlendInterpolator.js';
|
|
23
23
|
import { Propagator } from './Propagator.js';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @author Theodore Kruczek.
|
|
3
|
+
* @license MIT
|
|
4
|
+
* @copyright (c) 2022-2025 Theodore Kruczek Permission is
|
|
5
|
+
* hereby granted, free of charge, to any person obtaining a copy of this
|
|
6
|
+
* software and associated documentation files (the "Software"), to deal in the
|
|
7
|
+
* Software without restriction, including without limitation the rights to use,
|
|
8
|
+
* copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
9
|
+
* the Software, and to permit persons to whom the Software is furnished to do
|
|
10
|
+
* so, subject to the following conditions:
|
|
11
|
+
*
|
|
12
|
+
* The above copyright notice and this permission notice shall be included in
|
|
13
|
+
* all copies or substantial portions of the Software.
|
|
14
|
+
*
|
|
15
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
* SOFTWARE.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
export { Sgp4 } from './sgp4.js';
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Improved error handling for SGP4
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
// Define specific error types
|
|
6
|
+
export enum Sgp4ErrorCode {
|
|
7
|
+
NO_ERROR = 0,
|
|
8
|
+
MEAN_ELEMENTS_INVALID = 1, // ecc >= 1.0 or ecc < -0.001 or a < 0.95 er
|
|
9
|
+
MEAN_MOTION_NEGATIVE = 2, // mean motion less than 0.0
|
|
10
|
+
PERT_ELEMENTS_INVALID = 3, // pert elements, ecc < 0.0 or ecc > 1.0
|
|
11
|
+
SEMI_LATUS_RECTUM_NEGATIVE = 4, // semi-latus rectum < 0.0
|
|
12
|
+
EPOCH_ELEMENTS_SUBORBITAL = 5, // epoch elements are sub-orbital
|
|
13
|
+
SATELLITE_DECAYED = 6 // satellite has decayed
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// Error class for SGP4 errors
|
|
17
|
+
export class Sgp4Error extends Error {
|
|
18
|
+
code: Sgp4ErrorCode;
|
|
19
|
+
|
|
20
|
+
constructor(code: Sgp4ErrorCode, message?: string) {
|
|
21
|
+
super(message ?? Sgp4Error.getDefaultMessage(code));
|
|
22
|
+
this.name = 'Sgp4Error';
|
|
23
|
+
this.code = code;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
static getDefaultMessage(code: Sgp4ErrorCode): string {
|
|
27
|
+
switch (code) {
|
|
28
|
+
case Sgp4ErrorCode.NO_ERROR:
|
|
29
|
+
return 'No error';
|
|
30
|
+
case Sgp4ErrorCode.MEAN_ELEMENTS_INVALID:
|
|
31
|
+
return 'Mean elements invalid: eccentricity out of range or semi-major axis too small';
|
|
32
|
+
case Sgp4ErrorCode.MEAN_MOTION_NEGATIVE:
|
|
33
|
+
return 'Mean motion is negative';
|
|
34
|
+
case Sgp4ErrorCode.PERT_ELEMENTS_INVALID:
|
|
35
|
+
return 'Perturbed elements invalid: eccentricity out of range';
|
|
36
|
+
case Sgp4ErrorCode.SEMI_LATUS_RECTUM_NEGATIVE:
|
|
37
|
+
return 'Semi-latus rectum is negative';
|
|
38
|
+
case Sgp4ErrorCode.EPOCH_ELEMENTS_SUBORBITAL:
|
|
39
|
+
return 'Epoch elements are sub-orbital';
|
|
40
|
+
case Sgp4ErrorCode.SATELLITE_DECAYED:
|
|
41
|
+
return 'Satellite has decayed';
|
|
42
|
+
default:
|
|
43
|
+
return `Unknown error code: ${code}`;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Result type that includes error information
|
|
49
|
+
export interface Sgp4Result<T> {
|
|
50
|
+
success: boolean;
|
|
51
|
+
value?: T;
|
|
52
|
+
error?: Sgp4Error;
|
|
53
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Revisiting Spacetrack Report #3 AIAA 2006-6753
|
|
2
|
+
|
|
3
|
+
Over a quarter century ago, the United States Department of Defense (DoD) released the equations and source code used to
|
|
4
|
+
predict satellite positions through SpaceTrack Report Number 3 (STR#3). Because the DoD's two-line element sets (TLEs)
|
|
5
|
+
were the only source of orbital data, widely available through NASA, this code became commonplace among users needing
|
|
6
|
+
accurate results. However, end users made code changes to correct the implementation of the equations and to handle rare
|
|
7
|
+
cases encountered in operations. These changes migrated into numerous new versions and compiled programs outside the
|
|
8
|
+
DoD. Changes made to the original STR#3 code have not been released in a comprehensive form to the public, so the code
|
|
9
|
+
available to the public no longer matches the code used by DoD to produce the TLEs. Fortunately, independent efforts,
|
|
10
|
+
technical papers, and source code enabled us to synthesize a non-proprietary version which we believe is up-to-date and
|
|
11
|
+
accurate. This paper provides source code, test cases, results, and analysis of a version of SGP4 theory designed to be
|
|
12
|
+
highly compatible with recent DoD versions.
|
|
13
|
+
|
|
14
|
+
## Are there any Licenses required to use the SGP4 code?
|
|
15
|
+
|
|
16
|
+
There is no license associated with the code and you may use it for any purpose—personal or commercial—as you wish. We
|
|
17
|
+
ask only that you include citations in your documentation and source code to show the source of the code and provide
|
|
18
|
+
links to the main page, to facilitate communications regarding any questions on the theory or source code.
|
|
19
|
+
|
|
20
|
+
[https://celestrak.org/publications/AIAA/2006-6753/faq.php](Link to Source)
|
|
21
|
+
|
|
22
|
+
## ootk-core Notes
|
|
23
|
+
|
|
24
|
+
Since the original authors do not have a license file, this file is to document the permission granted to use the code
|
|
25
|
+
to develop a TypeScript implementation.
|
|
26
|
+
|
|
27
|
+
The ootk-core TypeScript implementation is licensed under the MIT License. ootk-core is not affiliated with the original
|
|
28
|
+
authors.
|