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,484 @@
|
|
|
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 { Vector3D, Matrix, Degrees, Radians } from '../main.js';
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* A Vector is a mathematical object that has both magnitude and direction.
|
|
28
|
+
*/
|
|
29
|
+
export class Vector<T extends number = number> {
|
|
30
|
+
/**
|
|
31
|
+
* The length of the vector.
|
|
32
|
+
*/
|
|
33
|
+
readonly length: number;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Represents a 3-dimensional vector.
|
|
37
|
+
*/
|
|
38
|
+
static readonly origin3 = new Vector([0, 0, 0]);
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Represents a vector with all elements set to zero.
|
|
42
|
+
*/
|
|
43
|
+
static readonly origin6 = new Vector([0, 0, 0, 0, 0, 0]);
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Represents the x-axis vector.
|
|
47
|
+
*/
|
|
48
|
+
static readonly xAxis = new Vector([1, 0, 0]);
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Represents the y-axis vector.
|
|
52
|
+
*/
|
|
53
|
+
static readonly yAxis = new Vector([0, 1, 0]);
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Represents the z-axis vector.
|
|
57
|
+
*/
|
|
58
|
+
static readonly zAxis = new Vector([0, 0, 1]);
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Represents a vector pointing along the negative x-axis.
|
|
62
|
+
*/
|
|
63
|
+
static readonly xAxisNeg = new Vector([-1, 0, 0]);
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Represents a vector pointing along the negative y-axis.
|
|
67
|
+
*/
|
|
68
|
+
static readonly yAxisNeg = new Vector([0, -1, 0]);
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Represents a vector pointing along the negative z-axis.
|
|
72
|
+
*/
|
|
73
|
+
static readonly zAxisNeg = new Vector([0, 0, -1]);
|
|
74
|
+
|
|
75
|
+
constructor(public elements: T[] | Float64Array) {
|
|
76
|
+
this.length = elements.length;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Creates a zero vector of the specified length.
|
|
81
|
+
* @param length The length of the vector.
|
|
82
|
+
* @returns A new Vector object representing the zero vector.
|
|
83
|
+
*/
|
|
84
|
+
static zero(length: number): Vector {
|
|
85
|
+
return new Vector(new Array(length).fill(0));
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Creates a new Vector with the specified length, filled with the specified
|
|
90
|
+
* value.
|
|
91
|
+
* @param length The length of the new Vector.
|
|
92
|
+
* @param value The value to fill the Vector with.
|
|
93
|
+
* @returns A new Vector filled with the specified value.
|
|
94
|
+
*/
|
|
95
|
+
static filled(length: number, value: number): Vector {
|
|
96
|
+
return new Vector(new Array(length).fill(value));
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Creates a new Vector instance from an array of elements.
|
|
101
|
+
* @param elements - The array of elements to create the Vector from.
|
|
102
|
+
* @returns A new Vector instance.
|
|
103
|
+
*/
|
|
104
|
+
static fromList(elements: number[]): Vector {
|
|
105
|
+
return new Vector(elements);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Returns a string representation of the vector.
|
|
110
|
+
* @param fixed - The number of digits to appear after the decimal point.
|
|
111
|
+
* Defaults to -1.
|
|
112
|
+
* @returns A string representation of the vector.
|
|
113
|
+
*/
|
|
114
|
+
toString(fixed = -1): string {
|
|
115
|
+
if (fixed < 0) {
|
|
116
|
+
return `[${this.elements.join(', ')}]`;
|
|
117
|
+
}
|
|
118
|
+
const output = (this.elements as number[]).map((e) => e.toFixed(fixed));
|
|
119
|
+
|
|
120
|
+
return `[${output.join(', ')}]`;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Returns a string representation of the x value of the vector.
|
|
125
|
+
* @returns A string representation of the x value of the vector.
|
|
126
|
+
*/
|
|
127
|
+
get x(): number {
|
|
128
|
+
return this.elements[0] as number;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Returns a string representation of the y value of the vector.
|
|
133
|
+
* @returns A string representation of the y value of the vector.
|
|
134
|
+
*/
|
|
135
|
+
get y(): number {
|
|
136
|
+
return this.elements[1] as number;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Returns a string representation of the z value of the vector.
|
|
141
|
+
* @returns A string representation of the z value of the vector.
|
|
142
|
+
*/
|
|
143
|
+
get z(): number {
|
|
144
|
+
return this.elements[2] as number;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Converts the vector elements to an array.
|
|
149
|
+
* @returns An array containing the vector elements.
|
|
150
|
+
*/
|
|
151
|
+
toList(): number[] {
|
|
152
|
+
return Array.from(this.elements);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Converts the vector to a Float64Array.
|
|
157
|
+
* @returns The vector as a Float64Array.
|
|
158
|
+
*/
|
|
159
|
+
toArray(): Float64Array {
|
|
160
|
+
return new Float64Array(this.elements);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Calculates the magnitude of the vector.
|
|
165
|
+
* @returns The magnitude of the vector.
|
|
166
|
+
*/
|
|
167
|
+
magnitude(): number {
|
|
168
|
+
let total = 0;
|
|
169
|
+
|
|
170
|
+
for (const x of this.elements) {
|
|
171
|
+
total += x * x;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
return Math.sqrt(total);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Adds the elements of another vector to this vector and returns a new
|
|
179
|
+
* vector.
|
|
180
|
+
* @param v - The vector to add.
|
|
181
|
+
* @returns A new vector containing the sum of the elements.
|
|
182
|
+
*/
|
|
183
|
+
add(v: Vector): Vector {
|
|
184
|
+
const output = new Array(this.length);
|
|
185
|
+
|
|
186
|
+
for (let i = 0; i < this.length; i++) {
|
|
187
|
+
output[i] = (this.elements[i] as number) + (v.elements[i] as number);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
return new Vector(output);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Subtracts a vector from the current vector.
|
|
195
|
+
* @param v The vector to subtract.
|
|
196
|
+
* @returns A new vector representing the result of the subtraction.
|
|
197
|
+
*/
|
|
198
|
+
subtract(v: Vector): Vector {
|
|
199
|
+
const output = new Array(this.length);
|
|
200
|
+
|
|
201
|
+
for (let i = 0; i < this.length; i++) {
|
|
202
|
+
output[i] = (this.elements[i] as number) - (v.elements[i] as number);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
return new Vector(output);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Scales the vector by a given factor.
|
|
210
|
+
* @param n The scaling factor.
|
|
211
|
+
* @returns A new Vector object representing the scaled vector.
|
|
212
|
+
*/
|
|
213
|
+
scale(n: number): Vector {
|
|
214
|
+
const output = new Array(this.length);
|
|
215
|
+
|
|
216
|
+
for (let i = 0; i < this.length; i++) {
|
|
217
|
+
output[i] = (this.elements[i] as number) * n;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
return new Vector(output);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Negates the vector by scaling it by -1.
|
|
225
|
+
* @returns A new Vector object representing the negated vector.
|
|
226
|
+
*/
|
|
227
|
+
negate(): Vector {
|
|
228
|
+
return this.scale(-1);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Return the Euclidean distance between this and another Vector.
|
|
233
|
+
* @param v The vector to calculate the distance to.
|
|
234
|
+
* @returns The distance between the two vectors.
|
|
235
|
+
*/
|
|
236
|
+
distance(v: Vector): number {
|
|
237
|
+
return this.subtract(v).magnitude();
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Normalizes the vector, making it a unit vector with the same direction but
|
|
242
|
+
* a magnitude of 1. If the vector has a magnitude of 0, it returns a zero
|
|
243
|
+
* vector of the same length.
|
|
244
|
+
* @returns The normalized vector.
|
|
245
|
+
*/
|
|
246
|
+
normalize(): Vector {
|
|
247
|
+
const m = this.magnitude();
|
|
248
|
+
|
|
249
|
+
if (m === 0) {
|
|
250
|
+
return Vector.zero(this.length);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
return this.scale(1.0 / m);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Calculates the dot product of this vector and another vector.
|
|
258
|
+
* @param v - The vector to calculate the dot product with.
|
|
259
|
+
* @returns The dot product of the two vectors.
|
|
260
|
+
*/
|
|
261
|
+
dot(v: Vector): number {
|
|
262
|
+
let total = 0;
|
|
263
|
+
|
|
264
|
+
for (let i = 0; i < this.length; i++) {
|
|
265
|
+
total += (this.elements[i] as number) * (v.elements[i] as number);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
return total;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Calculates the outer product of this vector with another vector.
|
|
273
|
+
* @param v The vector to calculate the outer product with.
|
|
274
|
+
* @returns A matrix representing the outer product of the two vectors.
|
|
275
|
+
*/
|
|
276
|
+
outer(v: Vector): Matrix {
|
|
277
|
+
const result: number[][] = [];
|
|
278
|
+
|
|
279
|
+
for (let i = 0; i < this.length; i++) {
|
|
280
|
+
result[i] = [];
|
|
281
|
+
for (let j = 0; j < v.length; j++) {
|
|
282
|
+
(result[i] as number[])[j] = (this.elements[i] as number) * (v.elements[j] as number);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
return new Matrix(result);
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* Calculates the cross product of this vector and the given vector.
|
|
291
|
+
* @param v - The vector to calculate the cross product with.
|
|
292
|
+
* @returns The resulting vector.
|
|
293
|
+
*/
|
|
294
|
+
cross(v: Vector): Vector {
|
|
295
|
+
const output = new Array(this.length);
|
|
296
|
+
|
|
297
|
+
for (let i = 0; i < this.length; i++) {
|
|
298
|
+
output[i] =
|
|
299
|
+
(this.elements[(i + 1) % this.length] as number) * (v.elements[(i + 2) % this.length] as number) -
|
|
300
|
+
(this.elements[(i + 2) % this.length] as number) * (v.elements[(i + 1) % this.length] as number);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
return new Vector(output);
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
/**
|
|
307
|
+
* Calculate the skew-symmetric matrix for this [Vector].
|
|
308
|
+
* @returns The skew-symmetric matrix.
|
|
309
|
+
* @throws [Error] if the vector is not of length 3.
|
|
310
|
+
*/
|
|
311
|
+
skewSymmetric(): Matrix {
|
|
312
|
+
if (this.length !== 3) {
|
|
313
|
+
throw new Error('Skew-symmetric matrix requires a vector of length 3.');
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
return new Matrix([
|
|
317
|
+
[0, -(this.elements[2] as number), (this.elements[1] as number)],
|
|
318
|
+
[(this.elements[2] as number), 0, -(this.elements[0] as number)],
|
|
319
|
+
[-(this.elements[1] as number), (this.elements[0] as number), 0],
|
|
320
|
+
]);
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* Rotates the vector around the X-axis by the specified angle.
|
|
325
|
+
* @param theta The angle in radians.
|
|
326
|
+
* @returns The rotated vector.
|
|
327
|
+
*/
|
|
328
|
+
rotX(theta: Radians): Vector {
|
|
329
|
+
const cosT = Math.cos(theta);
|
|
330
|
+
const sinT = Math.sin(theta);
|
|
331
|
+
const output = new Array(3);
|
|
332
|
+
|
|
333
|
+
output[0] = this.elements[0];
|
|
334
|
+
output[1] = cosT * (this.elements[1] as number) + sinT * (this.elements[2] as number);
|
|
335
|
+
output[2] = -sinT * (this.elements[1] as number) + cosT * (this.elements[2] as number);
|
|
336
|
+
|
|
337
|
+
return new Vector(output);
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* Rotates the vector around the Y-axis by the specified angle.
|
|
342
|
+
* @param theta The angle of rotation in radians.
|
|
343
|
+
* @returns A new Vector representing the rotated vector.
|
|
344
|
+
*/
|
|
345
|
+
rotY(theta: Radians): Vector {
|
|
346
|
+
const cosT = Math.cos(theta);
|
|
347
|
+
const sinT = Math.sin(theta);
|
|
348
|
+
const output = new Array(3);
|
|
349
|
+
|
|
350
|
+
output[0] = cosT * (this.elements[0] as number) + -sinT * (this.elements[2] as number);
|
|
351
|
+
output[1] = this.elements[1] as number;
|
|
352
|
+
output[2] = sinT * (this.elements[0] as number) + cosT * (this.elements[2] as number);
|
|
353
|
+
|
|
354
|
+
return new Vector(output);
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* Rotates the vector around the Z-axis by the specified angle.
|
|
359
|
+
* @param theta The angle of rotation in radians.
|
|
360
|
+
* @returns A new Vector representing the rotated vector.
|
|
361
|
+
*/
|
|
362
|
+
rotZ(theta: Radians): Vector {
|
|
363
|
+
const cosT = Math.cos(theta);
|
|
364
|
+
const sinT = Math.sin(theta);
|
|
365
|
+
const output = new Array(3);
|
|
366
|
+
|
|
367
|
+
output[0] = cosT * (this.elements[0] as number) + sinT * (this.elements[1] as number);
|
|
368
|
+
output[1] = -sinT * (this.elements[0] as number) + cosT * (this.elements[1] as number);
|
|
369
|
+
output[2] = this.elements[2];
|
|
370
|
+
|
|
371
|
+
return new Vector(output);
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* Calculates the angle between this vector and another vector.
|
|
376
|
+
* @param v The other vector.
|
|
377
|
+
* @returns The angle between the two vectors in radians.
|
|
378
|
+
*/
|
|
379
|
+
angle(v: Vector): Radians {
|
|
380
|
+
// better than acos for small angles
|
|
381
|
+
const theta = Math.atan2(this.cross(v).magnitude(), this.dot(v));
|
|
382
|
+
|
|
383
|
+
if (isNaN(theta)) {
|
|
384
|
+
return 0.0 as Radians;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
return theta as Radians;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
/**
|
|
391
|
+
* Calculates the angle between this vector and another vector in degrees.
|
|
392
|
+
* @param v The other vector.
|
|
393
|
+
* @returns The angle between the two vectors in degrees.
|
|
394
|
+
*/
|
|
395
|
+
angleDegrees(v: Vector): Degrees {
|
|
396
|
+
return (this.angle(v) * (180 / Math.PI)) as Degrees;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
/**
|
|
400
|
+
* Determines if there is line of sight between this vector and another vector
|
|
401
|
+
* within a given radius.
|
|
402
|
+
* @param v - The vector to check line of sight with.
|
|
403
|
+
* @param radius - The radius within which line of sight is considered.
|
|
404
|
+
* @returns True if there is line of sight, false otherwise.
|
|
405
|
+
*/
|
|
406
|
+
sight(v: Vector, radius: number): boolean {
|
|
407
|
+
const r1Mag2 = this.magnitude() ** 2;
|
|
408
|
+
const r2Mag2 = v.magnitude() ** 2;
|
|
409
|
+
const rDot = this.dot(v);
|
|
410
|
+
const tMin = (r1Mag2 - rDot) / (r1Mag2 + r2Mag2 - 2.0 * rDot);
|
|
411
|
+
let los = false;
|
|
412
|
+
|
|
413
|
+
if (tMin < 0 || tMin > 1) {
|
|
414
|
+
los = true;
|
|
415
|
+
} else {
|
|
416
|
+
const c = (1.0 - tMin) * r1Mag2 + rDot * tMin;
|
|
417
|
+
|
|
418
|
+
if (c >= radius * radius) {
|
|
419
|
+
los = true;
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
return los;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
/**
|
|
427
|
+
* Returns the bisect vector between this vector and the given vector. The
|
|
428
|
+
* bisect vector is calculated by scaling this vector's magnitude by the
|
|
429
|
+
* magnitude of the given vector, adding the result to the product of scaling
|
|
430
|
+
* the given vector's magnitude by this vector's magnitude, and then
|
|
431
|
+
* normalizing the resulting vector.
|
|
432
|
+
* @param v - The vector to calculate the bisect with.
|
|
433
|
+
* @returns The bisect vector.
|
|
434
|
+
*/
|
|
435
|
+
bisect(v: Vector): Vector {
|
|
436
|
+
return this.scale(v.magnitude()).add(v.scale(this.magnitude())).normalize();
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
/**
|
|
440
|
+
* Joins the current vector with another vector.
|
|
441
|
+
* @param v The vector to join with.
|
|
442
|
+
* @returns A new vector that contains the elements of both vectors.
|
|
443
|
+
*/
|
|
444
|
+
join(v: Vector): Vector {
|
|
445
|
+
return new Vector(this.toList().concat(v.toList()));
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* Returns a new Vector containing a portion of the elements from the
|
|
450
|
+
* specified start index to the specified end index
|
|
451
|
+
* @param start The start index of the slice (inclusive).
|
|
452
|
+
* @param end The end index of the slice (exclusive).
|
|
453
|
+
* @returns A new Vector containing the sliced elements.
|
|
454
|
+
*/
|
|
455
|
+
slice(start: number, end: number): Vector {
|
|
456
|
+
return new Vector(this.elements.slice(start, end));
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
/**
|
|
460
|
+
* Returns a new Matrix object representing the row vector.
|
|
461
|
+
* @returns The row vector as a Matrix object.
|
|
462
|
+
*/
|
|
463
|
+
row(): Matrix {
|
|
464
|
+
return new Matrix([this.toList()]);
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
/**
|
|
468
|
+
* Returns a new Matrix object representing the column vector of this Vector.
|
|
469
|
+
* @returns The column vector as a Matrix object.
|
|
470
|
+
*/
|
|
471
|
+
column(): Matrix {
|
|
472
|
+
return new Matrix(this.toList().map((e) => [e]));
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* Converts the elements at the specified index to a Vector3D object.
|
|
477
|
+
* @param index - The index of the elements to convert.
|
|
478
|
+
* @returns A new Vector3D object containing the converted elements.
|
|
479
|
+
*/
|
|
480
|
+
toVector3D(index: number): Vector3D {
|
|
481
|
+
return new Vector3D((this.elements[index] as number), (this.elements[index + 1] as number),
|
|
482
|
+
(this.elements[index + 2] as number));
|
|
483
|
+
}
|
|
484
|
+
}
|