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,137 @@
|
|
|
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
|
+
* @copyright (c) 2011-2015, Vladimir Agafonkin
|
|
23
|
+
* @copyright (c) 2022 Robert Gester https://github.com/hypnos3/suncalc3
|
|
24
|
+
* @see suncalc.LICENSE.md
|
|
25
|
+
* Some of the math in this file was originally created by Vladimir Agafonkin.
|
|
26
|
+
* Robert Gester's update was referenced for documentation. There were a couple
|
|
27
|
+
* of bugs in both versions so there will be some differences if you are
|
|
28
|
+
* migrating from either to this library.
|
|
29
|
+
*
|
|
30
|
+
* suncalc is a JavaScript library for calculating sun/moon position and light
|
|
31
|
+
* phases. https://github.com/mourner/suncalc
|
|
32
|
+
* It was reworked and enhanced by Robert Gester.
|
|
33
|
+
*
|
|
34
|
+
* The original suncalc is released under the terms of the BSD 2-Clause License.
|
|
35
|
+
* @see http://aa.quae.nl/en/reken/hemelpositie.html
|
|
36
|
+
* moon calculations are based on formulas from this website
|
|
37
|
+
*/
|
|
38
|
+
import { Degrees, Kilometers, RaDec, Radians } from '../main.js';
|
|
39
|
+
import { Vector3D } from '../operations/Vector3D.js';
|
|
40
|
+
import { EpochUTC } from '../time/EpochUTC.js';
|
|
41
|
+
type MoonIlluminationData = {
|
|
42
|
+
fraction: number;
|
|
43
|
+
phase: {
|
|
44
|
+
from: number;
|
|
45
|
+
to: number;
|
|
46
|
+
id: string;
|
|
47
|
+
emoji: string;
|
|
48
|
+
code: string;
|
|
49
|
+
name: string;
|
|
50
|
+
weight: number;
|
|
51
|
+
css: string;
|
|
52
|
+
};
|
|
53
|
+
phaseValue: number;
|
|
54
|
+
angle: number;
|
|
55
|
+
next: {
|
|
56
|
+
value: number;
|
|
57
|
+
date: string;
|
|
58
|
+
type: string;
|
|
59
|
+
newMoon: {
|
|
60
|
+
value: number;
|
|
61
|
+
date: string;
|
|
62
|
+
};
|
|
63
|
+
fullMoon: {
|
|
64
|
+
value: number;
|
|
65
|
+
date: string;
|
|
66
|
+
};
|
|
67
|
+
firstQuarter: {
|
|
68
|
+
value: number;
|
|
69
|
+
date: string;
|
|
70
|
+
};
|
|
71
|
+
thirdQuarter: {
|
|
72
|
+
value: number;
|
|
73
|
+
date: string;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
export declare class Moon {
|
|
78
|
+
private constructor();
|
|
79
|
+
static readonly mu = 4902.799;
|
|
80
|
+
static readonly radiusEquator = 1738;
|
|
81
|
+
static eci(epoch?: EpochUTC): Vector3D<Kilometers>;
|
|
82
|
+
/**
|
|
83
|
+
* Calculates the illumination of the Moon at a given epoch.
|
|
84
|
+
* @param epoch - The epoch in UTC.
|
|
85
|
+
* @param origin - The origin vector. Defaults to the origin vector if not provided.
|
|
86
|
+
* @returns The illumination of the Moon, ranging from 0 to 1.
|
|
87
|
+
*/
|
|
88
|
+
static illumination(epoch: EpochUTC, origin?: Vector3D<Kilometers>): number;
|
|
89
|
+
/**
|
|
90
|
+
* Calculates the diameter of the Moon.
|
|
91
|
+
* @param obsPos - The position of the observer.
|
|
92
|
+
* @param moonPos - The position of the Moon.
|
|
93
|
+
* @returns The diameter of the Moon.
|
|
94
|
+
*/
|
|
95
|
+
static diameter(obsPos: Vector3D, moonPos: Vector3D): number;
|
|
96
|
+
/**
|
|
97
|
+
* calculations for illumination parameters of the moon, based on
|
|
98
|
+
* http://idlastro.gsfc.nasa.gov/ftp/pro/astro/mphase.pro formulas and Chapter 48 of "Astronomical Algorithms" 2nd
|
|
99
|
+
* edition by Jean Meeus (Willmann-Bell, Richmond) 1998.
|
|
100
|
+
* @param date Date object or timestamp for calculating moon-illumination
|
|
101
|
+
* @returns result object of moon-illumination
|
|
102
|
+
*/
|
|
103
|
+
static getMoonIllumination(date: number | Date): MoonIlluminationData;
|
|
104
|
+
static rae(date: Date, lat: Degrees, lon: Degrees): {
|
|
105
|
+
az: Radians;
|
|
106
|
+
el: Radians;
|
|
107
|
+
rng: Kilometers;
|
|
108
|
+
parallacticAngle: Radians;
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* calculations for moon rise/set times are based on http://www.stargazing.net/kepler/moonrise.html article
|
|
112
|
+
* @param date Date object or timestamp for calculating moon rise/set
|
|
113
|
+
* @param lat Latitude of observer in degrees
|
|
114
|
+
* @param lon Longitude of observer in degrees
|
|
115
|
+
* @param isUtc If true, date will be interpreted as UTC
|
|
116
|
+
* @returns result object of moon rise/set
|
|
117
|
+
*/
|
|
118
|
+
static getMoonTimes(date: Date, lat: Degrees, lon: Degrees, isUtc?: boolean): {
|
|
119
|
+
rise: Date | null;
|
|
120
|
+
set: Date | null;
|
|
121
|
+
ye: number | null;
|
|
122
|
+
alwaysUp: boolean | null;
|
|
123
|
+
alwaysDown: boolean | null;
|
|
124
|
+
highest: Date | null;
|
|
125
|
+
};
|
|
126
|
+
private static hoursLater_;
|
|
127
|
+
/**
|
|
128
|
+
* Calculates the geocentric ecliptic coordinates of the moon.
|
|
129
|
+
* @param d - The number of days since year 2000.
|
|
130
|
+
* @returns An object containing the right ascension, declination, and
|
|
131
|
+
* distance to the moon.
|
|
132
|
+
*/
|
|
133
|
+
static moonCoords(d: number): RaDec;
|
|
134
|
+
private static calculateRiseSetTimes_;
|
|
135
|
+
private static readonly moonCycles_;
|
|
136
|
+
}
|
|
137
|
+
export {};
|
|
@@ -0,0 +1,464 @@
|
|
|
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
|
+
* @copyright (c) 2011-2015, Vladimir Agafonkin
|
|
23
|
+
* @copyright (c) 2022 Robert Gester https://github.com/hypnos3/suncalc3
|
|
24
|
+
* @see suncalc.LICENSE.md
|
|
25
|
+
* Some of the math in this file was originally created by Vladimir Agafonkin.
|
|
26
|
+
* Robert Gester's update was referenced for documentation. There were a couple
|
|
27
|
+
* of bugs in both versions so there will be some differences if you are
|
|
28
|
+
* migrating from either to this library.
|
|
29
|
+
*
|
|
30
|
+
* suncalc is a JavaScript library for calculating sun/moon position and light
|
|
31
|
+
* phases. https://github.com/mourner/suncalc
|
|
32
|
+
* It was reworked and enhanced by Robert Gester.
|
|
33
|
+
*
|
|
34
|
+
* The original suncalc is released under the terms of the BSD 2-Clause License.
|
|
35
|
+
* @see http://aa.quae.nl/en/reken/hemelpositie.html
|
|
36
|
+
* moon calculations are based on formulas from this website
|
|
37
|
+
*/
|
|
38
|
+
import { AngularDiameterMethod, Celestial } from '../main.js';
|
|
39
|
+
import { Vector3D } from '../operations/Vector3D.js';
|
|
40
|
+
import { EpochUTC } from '../time/EpochUTC.js';
|
|
41
|
+
import { DEG2RAD, MS_PER_DAY } from '../utils/constants.js';
|
|
42
|
+
import { angularDiameter } from '../utils/functions.js';
|
|
43
|
+
import { Earth } from './Earth.js';
|
|
44
|
+
import { Sun } from './Sun.js';
|
|
45
|
+
// / Moon metrics and operations.
|
|
46
|
+
export class Moon {
|
|
47
|
+
constructor() {
|
|
48
|
+
// disable constructor
|
|
49
|
+
}
|
|
50
|
+
// / Moon gravitational parameter _(km³/s²)_.
|
|
51
|
+
static mu = 4902.799;
|
|
52
|
+
// / Moon equatorial radius _(km)_.
|
|
53
|
+
static radiusEquator = 1738.0;
|
|
54
|
+
// / Calculate the Moon's ECI position _(km)_ for a given UTC [epoch].
|
|
55
|
+
static eci(epoch = EpochUTC.fromDateTime(new Date())) {
|
|
56
|
+
const jc = epoch.toJulianCenturies();
|
|
57
|
+
const dtr = DEG2RAD;
|
|
58
|
+
const lamEcl = 218.32 +
|
|
59
|
+
481267.8813 * jc +
|
|
60
|
+
6.29 * Math.sin((134.9 + 477198.85 * jc) * dtr) -
|
|
61
|
+
1.27 * Math.sin((259.2 - 413335.38 * jc) * dtr) +
|
|
62
|
+
0.66 * Math.sin((235.7 + 890534.23 * jc) * dtr) +
|
|
63
|
+
0.21 * Math.sin((269.9 + 954397.7 * jc) * dtr) -
|
|
64
|
+
0.19 * Math.sin((357.5 + 35999.05 * jc) * dtr) -
|
|
65
|
+
0.11 * Math.sin((186.6 + 966404.05 * jc) * dtr);
|
|
66
|
+
const phiEcl = 5.13 * Math.sin((93.3 + 483202.03 * jc) * dtr) +
|
|
67
|
+
0.28 * Math.sin((228.2 + 960400.87 * jc) * dtr) -
|
|
68
|
+
0.28 * Math.sin((318.3 + 6003.18 * jc) * dtr) -
|
|
69
|
+
0.17 * Math.sin((217.6 - 407332.2 * jc) * dtr);
|
|
70
|
+
const pllx = 0.9508 +
|
|
71
|
+
0.0518 * Math.cos((134.9 + 477198.85 * jc) * dtr) +
|
|
72
|
+
0.0095 * Math.cos((259.2 - 413335.38 * jc) * dtr) +
|
|
73
|
+
0.0078 * Math.cos((235.7 + 890534.23 * jc) * dtr) +
|
|
74
|
+
0.0028 * Math.cos((269.9 + 954397.7 * jc) * dtr);
|
|
75
|
+
const obq = 23.439291 - 0.0130042 * jc;
|
|
76
|
+
const rMag = 1 / Math.sin(pllx * dtr);
|
|
77
|
+
const r = new Vector3D(rMag * Math.cos(phiEcl * dtr) * Math.cos(lamEcl * dtr), rMag *
|
|
78
|
+
(Math.cos(obq * dtr) * Math.cos(phiEcl * dtr) * Math.sin(lamEcl * dtr) -
|
|
79
|
+
Math.sin(obq * dtr) * Math.sin(phiEcl * dtr)), rMag *
|
|
80
|
+
(Math.sin(obq * dtr) * Math.cos(phiEcl * dtr) * Math.sin(lamEcl * dtr) +
|
|
81
|
+
Math.cos(obq * dtr) * Math.sin(phiEcl * dtr)));
|
|
82
|
+
const rMOD = r.scale(Earth.radiusEquator);
|
|
83
|
+
const p = Earth.precession(epoch);
|
|
84
|
+
return rMOD
|
|
85
|
+
.rotZ(p.zed)
|
|
86
|
+
.rotY(-p.theta)
|
|
87
|
+
.rotZ(p.zeta);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Calculates the illumination of the Moon at a given epoch.
|
|
91
|
+
* @param epoch - The epoch in UTC.
|
|
92
|
+
* @param origin - The origin vector. Defaults to the origin vector if not provided.
|
|
93
|
+
* @returns The illumination of the Moon, ranging from 0 to 1.
|
|
94
|
+
*/
|
|
95
|
+
static illumination(epoch, origin) {
|
|
96
|
+
const orig = origin ?? Vector3D.origin;
|
|
97
|
+
const sunPos = Sun.position(epoch).subtract(orig);
|
|
98
|
+
const moonPos = this.eci(epoch).subtract(orig);
|
|
99
|
+
const phaseAngle = sunPos.angle(moonPos);
|
|
100
|
+
return 0.5 * (1 - Math.cos(phaseAngle));
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Calculates the diameter of the Moon.
|
|
104
|
+
* @param obsPos - The position of the observer.
|
|
105
|
+
* @param moonPos - The position of the Moon.
|
|
106
|
+
* @returns The diameter of the Moon.
|
|
107
|
+
*/
|
|
108
|
+
static diameter(obsPos, moonPos) {
|
|
109
|
+
return angularDiameter(this.radiusEquator * 2, obsPos.subtract(moonPos).magnitude(), AngularDiameterMethod.Sphere);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* calculations for illumination parameters of the moon, based on
|
|
113
|
+
* http://idlastro.gsfc.nasa.gov/ftp/pro/astro/mphase.pro formulas and Chapter 48 of "Astronomical Algorithms" 2nd
|
|
114
|
+
* edition by Jean Meeus (Willmann-Bell, Richmond) 1998.
|
|
115
|
+
* @param date Date object or timestamp for calculating moon-illumination
|
|
116
|
+
* @returns result object of moon-illumination
|
|
117
|
+
*/
|
|
118
|
+
// eslint-disable-next-line max-statements
|
|
119
|
+
static getMoonIllumination(date) {
|
|
120
|
+
const dateValue = date instanceof Date ? date.getTime() : date;
|
|
121
|
+
const lunarDaysMs = 2551442778; // The duration in days of a lunar cycle is 29.53058770576 days.
|
|
122
|
+
const firstNewMoon2000 = 947178840000; // first newMoon in the year 2000 2000-01-06 18:14
|
|
123
|
+
const dateObj = new Date(dateValue);
|
|
124
|
+
const d = Sun.date2jSince2000(dateObj);
|
|
125
|
+
const s = Sun.raDec(dateObj);
|
|
126
|
+
const m = Moon.moonCoords(d);
|
|
127
|
+
const sdist = 149598000; // distance from Earth to Sun in km
|
|
128
|
+
const phi = Math.acos(Math.sin(s.dec) * Math.sin(m.dec) + Math.cos(s.dec) * Math.cos(m.dec) * Math.cos(s.ra - m.ra));
|
|
129
|
+
const inc = Math.atan2(sdist * Math.sin(phi), m.dist - sdist * Math.cos(phi));
|
|
130
|
+
const angle = Math.atan2(Math.cos(s.dec) * Math.sin(s.ra - m.ra), Math.sin(s.dec) * Math.cos(m.dec) - Math.cos(s.dec) * Math.sin(m.dec) * Math.cos(s.ra - m.ra));
|
|
131
|
+
const phaseValue = 0.5 + (0.5 * inc * (angle < 0 ? -1 : 1)) / Math.PI;
|
|
132
|
+
/*
|
|
133
|
+
* calculates the difference in ms between the sirst fullMoon 2000 and given
|
|
134
|
+
* Date
|
|
135
|
+
*/
|
|
136
|
+
const diffBase = dateValue - firstNewMoon2000;
|
|
137
|
+
// Calculate modulus to drop completed cycles
|
|
138
|
+
let cycleModMs = diffBase % lunarDaysMs;
|
|
139
|
+
// If negative number (date before new moon 2000) add lunarDaysMs
|
|
140
|
+
if (cycleModMs < 0) {
|
|
141
|
+
cycleModMs += lunarDaysMs;
|
|
142
|
+
}
|
|
143
|
+
const nextNewMoon = lunarDaysMs - cycleModMs + dateValue;
|
|
144
|
+
let nextFullMoon = lunarDaysMs / 2 - cycleModMs + dateValue;
|
|
145
|
+
if (nextFullMoon < dateValue) {
|
|
146
|
+
nextFullMoon += lunarDaysMs;
|
|
147
|
+
}
|
|
148
|
+
const quater = lunarDaysMs / 4;
|
|
149
|
+
let nextFirstQuarter = quater - cycleModMs + dateValue;
|
|
150
|
+
if (nextFirstQuarter < dateValue) {
|
|
151
|
+
nextFirstQuarter += lunarDaysMs;
|
|
152
|
+
}
|
|
153
|
+
let nextThirdQuarter = lunarDaysMs - quater - cycleModMs + dateValue;
|
|
154
|
+
if (nextThirdQuarter < dateValue) {
|
|
155
|
+
nextThirdQuarter += lunarDaysMs;
|
|
156
|
+
}
|
|
157
|
+
/*
|
|
158
|
+
* Calculate the fraction of the moon cycle const currentfrac = cycleModMs /
|
|
159
|
+
* lunarDaysMs;
|
|
160
|
+
*/
|
|
161
|
+
const next = Math.min(nextNewMoon, nextFirstQuarter, nextFullMoon, nextThirdQuarter);
|
|
162
|
+
// eslint-disable-next-line init-declarations
|
|
163
|
+
let phase = null;
|
|
164
|
+
for (const moonCycle of Moon.moonCycles_) {
|
|
165
|
+
if (phaseValue >= moonCycle.from && phaseValue <= moonCycle.to) {
|
|
166
|
+
phase = moonCycle;
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
if (!phase) {
|
|
171
|
+
throw new Error('Moon phase not found');
|
|
172
|
+
}
|
|
173
|
+
let type = '';
|
|
174
|
+
if (next === nextNewMoon) {
|
|
175
|
+
type = 'newMoon';
|
|
176
|
+
}
|
|
177
|
+
else if (next === nextFirstQuarter) {
|
|
178
|
+
type = 'firstQuarter';
|
|
179
|
+
}
|
|
180
|
+
else if (next === nextFullMoon) {
|
|
181
|
+
type = 'fullMoon';
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
type = 'thirdQuarter';
|
|
185
|
+
}
|
|
186
|
+
return {
|
|
187
|
+
fraction: (1 + Math.cos(inc)) / 2,
|
|
188
|
+
phase,
|
|
189
|
+
phaseValue,
|
|
190
|
+
angle,
|
|
191
|
+
next: {
|
|
192
|
+
value: next,
|
|
193
|
+
date: new Date(next).toISOString(),
|
|
194
|
+
type,
|
|
195
|
+
newMoon: {
|
|
196
|
+
value: nextNewMoon,
|
|
197
|
+
date: new Date(nextNewMoon).toISOString(),
|
|
198
|
+
},
|
|
199
|
+
fullMoon: {
|
|
200
|
+
value: nextFullMoon,
|
|
201
|
+
date: new Date(nextFullMoon).toISOString(),
|
|
202
|
+
},
|
|
203
|
+
firstQuarter: {
|
|
204
|
+
value: nextFirstQuarter,
|
|
205
|
+
date: new Date(nextFirstQuarter).toISOString(),
|
|
206
|
+
},
|
|
207
|
+
thirdQuarter: {
|
|
208
|
+
value: nextThirdQuarter,
|
|
209
|
+
date: new Date(nextThirdQuarter).toISOString(),
|
|
210
|
+
},
|
|
211
|
+
},
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
static rae(date, lat, lon) {
|
|
215
|
+
const lw = (DEG2RAD * -lon);
|
|
216
|
+
const phi = (DEG2RAD * lat);
|
|
217
|
+
const d = Sun.date2jSince2000(date);
|
|
218
|
+
const c = Moon.moonCoords(d);
|
|
219
|
+
const H = Sun.siderealTime(d, lw) - c.ra;
|
|
220
|
+
let h = Celestial.elevation(H, phi, c.dec);
|
|
221
|
+
/*
|
|
222
|
+
* formula 14.1 of "Astronomical Algorithms" 2nd edition by Jean Meeus
|
|
223
|
+
* (Willmann-Bell, Richmond) 1998.
|
|
224
|
+
*/
|
|
225
|
+
const pa = Math.atan2(Math.sin(H), Math.tan(phi) * Math.cos(c.dec) - Math.sin(c.dec) * Math.cos(H));
|
|
226
|
+
h = (h + Celestial.atmosphericRefraction(h)); // altitude correction for refraction
|
|
227
|
+
return {
|
|
228
|
+
az: Celestial.azimuth(H, phi, c.dec),
|
|
229
|
+
el: h,
|
|
230
|
+
rng: c.dist,
|
|
231
|
+
parallacticAngle: pa,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* calculations for moon rise/set times are based on http://www.stargazing.net/kepler/moonrise.html article
|
|
236
|
+
* @param date Date object or timestamp for calculating moon rise/set
|
|
237
|
+
* @param lat Latitude of observer in degrees
|
|
238
|
+
* @param lon Longitude of observer in degrees
|
|
239
|
+
* @param isUtc If true, date will be interpreted as UTC
|
|
240
|
+
* @returns result object of moon rise/set
|
|
241
|
+
*/
|
|
242
|
+
static getMoonTimes(date, lat, lon, isUtc = false) {
|
|
243
|
+
// Clone the date so we don't change the original
|
|
244
|
+
const date_ = new Date(date);
|
|
245
|
+
if (isUtc) {
|
|
246
|
+
date_.setUTCHours(0, 0, 0, 0);
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
date_.setHours(0, 0, 0, 0);
|
|
250
|
+
}
|
|
251
|
+
const { rise, set, ye } = Moon.calculateRiseSetTimes_(date_, lat, lon);
|
|
252
|
+
const result = {
|
|
253
|
+
rise: null,
|
|
254
|
+
set: null,
|
|
255
|
+
ye: null,
|
|
256
|
+
alwaysUp: null,
|
|
257
|
+
alwaysDown: null,
|
|
258
|
+
highest: null,
|
|
259
|
+
};
|
|
260
|
+
if (rise) {
|
|
261
|
+
result.rise = new Date(Moon.hoursLater_(date_, rise));
|
|
262
|
+
}
|
|
263
|
+
if (set) {
|
|
264
|
+
result.set = new Date(Moon.hoursLater_(date_, set));
|
|
265
|
+
}
|
|
266
|
+
if (!rise && !set) {
|
|
267
|
+
if (ye > 0) {
|
|
268
|
+
result.alwaysUp = true;
|
|
269
|
+
result.alwaysDown = false;
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
result.alwaysUp = false;
|
|
273
|
+
result.alwaysDown = true;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
else if (rise && set) {
|
|
277
|
+
result.alwaysUp = false;
|
|
278
|
+
result.alwaysDown = false;
|
|
279
|
+
result.highest = new Date(Moon.hoursLater_(date_, Math.min(rise, set) + Math.abs(set - rise) / 2));
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
result.alwaysUp = false;
|
|
283
|
+
result.alwaysDown = false;
|
|
284
|
+
}
|
|
285
|
+
return result;
|
|
286
|
+
}
|
|
287
|
+
static hoursLater_(date, h) {
|
|
288
|
+
return new Date(date.getTime() + (h * MS_PER_DAY) / 24);
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Calculates the geocentric ecliptic coordinates of the moon.
|
|
292
|
+
* @param d - The number of days since year 2000.
|
|
293
|
+
* @returns An object containing the right ascension, declination, and
|
|
294
|
+
* distance to the moon.
|
|
295
|
+
*/
|
|
296
|
+
static moonCoords(d) {
|
|
297
|
+
const L = DEG2RAD * (218.316 + 13.176396 * d); // ecliptic longitude
|
|
298
|
+
const M = DEG2RAD * (134.963 + 13.064993 * d); // mean anomaly
|
|
299
|
+
const F = DEG2RAD * (93.272 + 13.22935 * d); // mean distance
|
|
300
|
+
const l = L + DEG2RAD * 6.289 * Math.sin(M); // longitude
|
|
301
|
+
const b = DEG2RAD * 5.128 * Math.sin(F); // latitude
|
|
302
|
+
const dt = 385001 - 20905 * Math.cos(M); // distance to the moon in km
|
|
303
|
+
return {
|
|
304
|
+
ra: Celestial.rightAscension(l, b),
|
|
305
|
+
dec: Celestial.declination(l, b),
|
|
306
|
+
dist: dt,
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
static calculateRiseSetTimes_(t, lat, lon) {
|
|
310
|
+
const hc = 0.133 * DEG2RAD;
|
|
311
|
+
let h0 = Moon.rae(t, lat, lon).el - hc;
|
|
312
|
+
let h1 = 0;
|
|
313
|
+
let h2 = 0;
|
|
314
|
+
let rise = 0;
|
|
315
|
+
let set = 0;
|
|
316
|
+
let a = 0;
|
|
317
|
+
let b = 0;
|
|
318
|
+
let xe = 0;
|
|
319
|
+
let ye = 0;
|
|
320
|
+
let d = 0;
|
|
321
|
+
let roots = 0;
|
|
322
|
+
let x1 = 0;
|
|
323
|
+
let x2 = 0;
|
|
324
|
+
let dx = 0;
|
|
325
|
+
/*
|
|
326
|
+
* go in 2-hour chunks, each time seeing if a 3-point quadratic curve
|
|
327
|
+
* crosses zero (which means rise or set)
|
|
328
|
+
*/
|
|
329
|
+
for (let i = 1; i <= 24; i += 2) {
|
|
330
|
+
h1 = Moon.rae(Moon.hoursLater_(t, i), lat, lon).el - hc;
|
|
331
|
+
h2 = Moon.rae(Moon.hoursLater_(t, i + 1), lat, lon).el - hc;
|
|
332
|
+
a = (h0 + h2) / 2 - h1;
|
|
333
|
+
b = (h2 - h0) / 2;
|
|
334
|
+
xe = -b / (2 * a);
|
|
335
|
+
ye = (a * xe + b) * xe + h1;
|
|
336
|
+
d = b * b - 4 * a * h1;
|
|
337
|
+
roots = 0;
|
|
338
|
+
if (d >= 0) {
|
|
339
|
+
dx = Math.sqrt(d) / (Math.abs(a) * 2);
|
|
340
|
+
x1 = xe - dx;
|
|
341
|
+
x2 = xe + dx;
|
|
342
|
+
if (Math.abs(x1) <= 1) {
|
|
343
|
+
roots++;
|
|
344
|
+
}
|
|
345
|
+
if (Math.abs(x2) <= 1) {
|
|
346
|
+
roots++;
|
|
347
|
+
}
|
|
348
|
+
if (x1 < -1) {
|
|
349
|
+
x1 = x2;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
if (roots === 1) {
|
|
353
|
+
if (h0 < 0) {
|
|
354
|
+
rise = i + x1;
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
set = i + x1;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
else if (roots === 2) {
|
|
361
|
+
rise = i + (ye < 0 ? x2 : x1);
|
|
362
|
+
set = i + (ye < 0 ? x1 : x2);
|
|
363
|
+
}
|
|
364
|
+
if (rise && set) {
|
|
365
|
+
break;
|
|
366
|
+
}
|
|
367
|
+
h0 = h2;
|
|
368
|
+
}
|
|
369
|
+
return { rise, set, ye };
|
|
370
|
+
}
|
|
371
|
+
static moonCycles_ = [
|
|
372
|
+
{
|
|
373
|
+
from: 0,
|
|
374
|
+
to: 0.033863193308711,
|
|
375
|
+
id: 'newMoon',
|
|
376
|
+
emoji: '🌚',
|
|
377
|
+
code: ':new_moon_with_face:',
|
|
378
|
+
name: 'New Moon',
|
|
379
|
+
weight: 1,
|
|
380
|
+
css: 'wi-moon-new',
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
from: 0.033863193308711,
|
|
384
|
+
to: 0.216136806691289,
|
|
385
|
+
id: 'waxingCrescentMoon',
|
|
386
|
+
emoji: '🌒',
|
|
387
|
+
code: ':waxing_crescent_moon:',
|
|
388
|
+
name: 'Waxing Crescent',
|
|
389
|
+
weight: 6.3825,
|
|
390
|
+
css: 'wi-moon-wax-cres',
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
from: 0.216136806691289,
|
|
394
|
+
to: 0.283863193308711,
|
|
395
|
+
id: 'firstQuarterMoon',
|
|
396
|
+
emoji: '🌓',
|
|
397
|
+
code: ':first_quarter_moon:',
|
|
398
|
+
name: 'First Quarter',
|
|
399
|
+
weight: 1,
|
|
400
|
+
css: 'wi-moon-first-quart',
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
from: 0.283863193308711,
|
|
404
|
+
to: 0.466136806691289,
|
|
405
|
+
id: 'waxingGibbousMoon',
|
|
406
|
+
emoji: '🌔',
|
|
407
|
+
code: ':waxing_gibbous_moon:',
|
|
408
|
+
name: 'Waxing Gibbous',
|
|
409
|
+
weight: 6.3825,
|
|
410
|
+
css: 'wi-moon-wax-gibb',
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
from: 0.466136806691289,
|
|
414
|
+
to: 0.533863193308711,
|
|
415
|
+
id: 'fullMoon',
|
|
416
|
+
emoji: '🌝',
|
|
417
|
+
code: ':full_moon_with_face:',
|
|
418
|
+
name: 'Full Moon',
|
|
419
|
+
weight: 1,
|
|
420
|
+
css: 'wi-moon-full',
|
|
421
|
+
},
|
|
422
|
+
{
|
|
423
|
+
from: 0.533863193308711,
|
|
424
|
+
to: 0.716136806691289,
|
|
425
|
+
id: 'waningGibbousMoon',
|
|
426
|
+
emoji: '🌖',
|
|
427
|
+
code: ':waning_gibbous_moon:',
|
|
428
|
+
name: 'Waning Gibbous',
|
|
429
|
+
weight: 6.3825,
|
|
430
|
+
css: 'wi-moon-wan-gibb',
|
|
431
|
+
},
|
|
432
|
+
{
|
|
433
|
+
from: 0.716136806691289,
|
|
434
|
+
to: 0.783863193308711,
|
|
435
|
+
id: 'thirdQuarterMoon',
|
|
436
|
+
emoji: '🌗',
|
|
437
|
+
code: ':last_quarter_moon:',
|
|
438
|
+
name: 'third Quarter',
|
|
439
|
+
weight: 1,
|
|
440
|
+
css: 'wi-moon-third-quart',
|
|
441
|
+
},
|
|
442
|
+
{
|
|
443
|
+
from: 0.783863193308711,
|
|
444
|
+
to: 0.966136806691289,
|
|
445
|
+
id: 'waningCrescentMoon',
|
|
446
|
+
emoji: '🌘',
|
|
447
|
+
code: ':waning_crescent_moon:',
|
|
448
|
+
name: 'Waning Crescent',
|
|
449
|
+
weight: 6.3825,
|
|
450
|
+
css: 'wi-moon-wan-cres',
|
|
451
|
+
},
|
|
452
|
+
{
|
|
453
|
+
from: 0.966136806691289,
|
|
454
|
+
to: 1,
|
|
455
|
+
id: 'newMoon',
|
|
456
|
+
emoji: '🌚',
|
|
457
|
+
code: ':new_moon_with_face:',
|
|
458
|
+
name: 'New Moon',
|
|
459
|
+
weight: 1,
|
|
460
|
+
css: 'wi-moon-new',
|
|
461
|
+
},
|
|
462
|
+
];
|
|
463
|
+
}
|
|
464
|
+
//# sourceMappingURL=Moon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Moon.js","sourceRoot":"","sources":["../../src/body/Moon.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
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 { Radians } from '../main.js';
|
|
24
|
+
/** Represents the nutation angles. */
|
|
25
|
+
export type NutationAngles = {
|
|
26
|
+
/** The nutation in longitude (Δψ) in radians. */
|
|
27
|
+
dPsi: Radians;
|
|
28
|
+
/** The nutation in obliquity (Δε) in radians. */
|
|
29
|
+
dEps: Radians;
|
|
30
|
+
/** The mean obliquity of the ecliptic (ε₀) in radians. */
|
|
31
|
+
mEps: Radians;
|
|
32
|
+
/** The true obliquity of the ecliptic (ε) in radians. */
|
|
33
|
+
eps: Radians;
|
|
34
|
+
/** The equation of the equinoxes (ΔΔt) in radians. */
|
|
35
|
+
eqEq: Radians;
|
|
36
|
+
/** The Greenwich Apparent Sidereal Time (GAST) in radians. */
|
|
37
|
+
gast: Radians;
|
|
38
|
+
};
|