@interstellar-tools/equations 0.17.0 → 0.19.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/dist/__tests__/helpers/index.d.ts +3 -9
- package/dist/__tests__/helpers/index.d.ts.map +1 -1
- package/dist/__tests__/helpers/index.js +15 -21
- package/dist/__tests__/helpers/index.js.map +1 -1
- package/dist/categories/angle/__tests__/compute-angle.int.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/angle/__tests__}/compute-angle.int.spec.js +2 -2
- package/dist/categories/angle/__tests__/compute-angle.int.spec.js.map +1 -0
- package/dist/categories/angle/__tests__/wrap-angle.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/angle/__tests__}/wrap-angle.spec.js +1 -1
- package/dist/categories/angle/__tests__/wrap-angle.spec.js.map +1 -0
- package/dist/categories/anomalies/__tests__/eccentric-to-true-anomaly.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/anomalies/__tests__}/eccentric-to-true-anomaly.spec.js +1 -1
- package/dist/categories/anomalies/__tests__/eccentric-to-true-anomaly.spec.js.map +1 -0
- package/dist/categories/anomalies/__tests__/mean-to-eccentric-anomaly.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/anomalies/__tests__}/mean-to-eccentric-anomaly.spec.js +3 -3
- package/dist/categories/anomalies/__tests__/mean-to-eccentric-anomaly.spec.js.map +1 -0
- package/dist/categories/anomalies/__tests__/true-to-mean-anomaly.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/anomalies/__tests__}/true-to-mean-anomaly.spec.js +2 -2
- package/dist/categories/anomalies/__tests__/true-to-mean-anomaly.spec.js.map +1 -0
- package/dist/categories/anomalies/eccentric-to-true-anomaly.d.ts +1 -1
- package/dist/categories/anomalies/eccentric-to-true-anomaly.d.ts.map +1 -1
- package/dist/categories/anomalies/true-to-mean-anomaly.d.ts +1 -1
- package/dist/categories/anomalies/true-to-mean-anomaly.d.ts.map +1 -1
- package/dist/categories/cartography/__tests__/body-fixed-from-inertial-dcm-iau.int.spec.d.ts +2 -0
- package/dist/categories/cartography/__tests__/body-fixed-from-inertial-dcm-iau.int.spec.d.ts.map +1 -0
- package/dist/categories/cartography/__tests__/body-fixed-from-inertial-dcm-iau.int.spec.js +56 -0
- package/dist/categories/cartography/__tests__/body-fixed-from-inertial-dcm-iau.int.spec.js.map +1 -0
- package/dist/categories/cartography/__tests__/eccentricity-squared-oblate-spheroid.spec.d.ts +2 -0
- package/dist/categories/cartography/__tests__/eccentricity-squared-oblate-spheroid.spec.d.ts.map +1 -0
- package/dist/categories/cartography/__tests__/eccentricity-squared-oblate-spheroid.spec.js +60 -0
- package/dist/categories/cartography/__tests__/eccentricity-squared-oblate-spheroid.spec.js.map +1 -0
- package/dist/categories/cartography/__tests__/flattening-oblate-spheroid.spec.d.ts +2 -0
- package/dist/categories/cartography/__tests__/flattening-oblate-spheroid.spec.d.ts.map +1 -0
- package/dist/categories/cartography/__tests__/flattening-oblate-spheroid.spec.js +60 -0
- package/dist/categories/cartography/__tests__/flattening-oblate-spheroid.spec.js.map +1 -0
- package/dist/categories/cartography/__tests__/is-on-triaxial-ellipsoid-surface.spec.d.ts +2 -0
- package/dist/categories/cartography/__tests__/is-on-triaxial-ellipsoid-surface.spec.d.ts.map +1 -0
- package/dist/categories/cartography/__tests__/is-on-triaxial-ellipsoid-surface.spec.js +73 -0
- package/dist/categories/cartography/__tests__/is-on-triaxial-ellipsoid-surface.spec.js.map +1 -0
- package/dist/categories/cartography/__tests__/planetocentric-latitude.spec.d.ts +2 -0
- package/dist/categories/cartography/__tests__/planetocentric-latitude.spec.d.ts.map +1 -0
- package/dist/categories/cartography/__tests__/planetocentric-latitude.spec.js +69 -0
- package/dist/categories/cartography/__tests__/planetocentric-latitude.spec.js.map +1 -0
- package/dist/categories/cartography/__tests__/planetographic-latitude-oblate.spec.d.ts +2 -0
- package/dist/categories/cartography/__tests__/planetographic-latitude-oblate.spec.d.ts.map +1 -0
- package/dist/categories/cartography/__tests__/planetographic-latitude-oblate.spec.js +103 -0
- package/dist/categories/cartography/__tests__/planetographic-latitude-oblate.spec.js.map +1 -0
- package/dist/categories/cartography/body-fixed-from-inertial-dcm-iau.d.ts +50 -0
- package/dist/categories/cartography/body-fixed-from-inertial-dcm-iau.d.ts.map +1 -0
- package/dist/categories/cartography/body-fixed-from-inertial-dcm-iau.js +64 -0
- package/dist/categories/cartography/body-fixed-from-inertial-dcm-iau.js.map +1 -0
- package/dist/categories/cartography/eccentricity-squared-oblate-spheroid.d.ts +40 -0
- package/dist/categories/cartography/eccentricity-squared-oblate-spheroid.d.ts.map +1 -0
- package/dist/categories/cartography/eccentricity-squared-oblate-spheroid.js +50 -0
- package/dist/categories/cartography/eccentricity-squared-oblate-spheroid.js.map +1 -0
- package/dist/categories/cartography/flattening-oblate-spheroid.d.ts +40 -0
- package/dist/categories/cartography/flattening-oblate-spheroid.d.ts.map +1 -0
- package/dist/categories/cartography/flattening-oblate-spheroid.js +50 -0
- package/dist/categories/cartography/flattening-oblate-spheroid.js.map +1 -0
- package/dist/categories/cartography/is-on-triaxial-ellipsoid-surface.d.ts +54 -0
- package/dist/categories/cartography/is-on-triaxial-ellipsoid-surface.d.ts.map +1 -0
- package/dist/categories/cartography/is-on-triaxial-ellipsoid-surface.js +77 -0
- package/dist/categories/cartography/is-on-triaxial-ellipsoid-surface.js.map +1 -0
- package/dist/categories/cartography/planetocentric-latitude.d.ts +38 -0
- package/dist/categories/cartography/planetocentric-latitude.d.ts.map +1 -0
- package/dist/categories/cartography/planetocentric-latitude.js +47 -0
- package/dist/categories/cartography/planetocentric-latitude.js.map +1 -0
- package/dist/categories/cartography/planetographic-latitude-oblate.d.ts +19 -0
- package/dist/categories/cartography/planetographic-latitude-oblate.d.ts.map +1 -0
- package/dist/categories/cartography/planetographic-latitude-oblate.js +44 -0
- package/dist/categories/cartography/planetographic-latitude-oblate.js.map +1 -0
- package/dist/categories/gravity/__tests__/gravitational-acceleration-on1-by2.int.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/gravity/__tests__}/gravitational-acceleration-on1-by2.int.spec.js +3 -2
- package/dist/categories/gravity/__tests__/gravitational-acceleration-on1-by2.int.spec.js.map +1 -0
- package/dist/categories/gravity/__tests__/gravitational-force-on1-by2.int.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/gravity/__tests__}/gravitational-force-on1-by2.int.spec.js +3 -2
- package/dist/categories/gravity/__tests__/gravitational-force-on1-by2.int.spec.js.map +1 -0
- package/dist/categories/gravity/__tests__/gravitational-force.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/gravity/__tests__}/gravitational-force.spec.js +3 -2
- package/dist/categories/gravity/__tests__/gravitational-force.spec.js.map +1 -0
- package/dist/categories/gravity/__tests__/gravitational-parameters.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/gravity/__tests__}/gravitational-parameters.spec.js +2 -2
- package/dist/categories/gravity/__tests__/gravitational-parameters.spec.js.map +1 -0
- package/dist/categories/helpers/__tests__/apply-matrix-3.spec.d.ts +2 -0
- package/dist/categories/helpers/__tests__/apply-matrix-3.spec.d.ts.map +1 -0
- package/dist/categories/helpers/__tests__/apply-matrix-3.spec.js +79 -0
- package/dist/categories/helpers/__tests__/apply-matrix-3.spec.js.map +1 -0
- package/dist/categories/helpers/__tests__/det-3.spec.d.ts +2 -0
- package/dist/categories/helpers/__tests__/det-3.spec.d.ts.map +1 -0
- package/dist/categories/helpers/__tests__/det-3.spec.js +73 -0
- package/dist/categories/helpers/__tests__/det-3.spec.js.map +1 -0
- package/dist/categories/helpers/__tests__/mat-mul3.spec.d.ts +2 -0
- package/dist/categories/helpers/__tests__/mat-mul3.spec.d.ts.map +1 -0
- package/dist/categories/helpers/__tests__/mat-mul3.spec.js +86 -0
- package/dist/categories/helpers/__tests__/mat-mul3.spec.js.map +1 -0
- package/dist/categories/helpers/__tests__/misc.spec.d.ts +2 -0
- package/dist/categories/helpers/__tests__/misc.spec.d.ts.map +1 -0
- package/dist/categories/helpers/__tests__/misc.spec.js +101 -0
- package/dist/categories/helpers/__tests__/misc.spec.js.map +1 -0
- package/dist/categories/helpers/__tests__/radians.spec.d.ts +2 -0
- package/dist/categories/helpers/__tests__/radians.spec.d.ts.map +1 -0
- package/dist/categories/helpers/__tests__/radians.spec.js +37 -0
- package/dist/categories/helpers/__tests__/radians.spec.js.map +1 -0
- package/dist/categories/helpers/__tests__/rot-1.spec.d.ts +2 -0
- package/dist/categories/helpers/__tests__/rot-1.spec.d.ts.map +1 -0
- package/dist/categories/helpers/__tests__/rot-1.spec.js +59 -0
- package/dist/categories/helpers/__tests__/rot-1.spec.js.map +1 -0
- package/dist/categories/helpers/__tests__/rot-3.spec.d.ts +2 -0
- package/dist/categories/helpers/__tests__/rot-3.spec.d.ts.map +1 -0
- package/dist/categories/helpers/__tests__/rot-3.spec.js +65 -0
- package/dist/categories/helpers/__tests__/rot-3.spec.js.map +1 -0
- package/dist/categories/helpers/apply-matrix-3.d.ts +38 -0
- package/dist/categories/helpers/apply-matrix-3.d.ts.map +1 -0
- package/dist/categories/helpers/apply-matrix-3.js +44 -0
- package/dist/categories/helpers/apply-matrix-3.js.map +1 -0
- package/dist/categories/helpers/det-3.d.ts +52 -0
- package/dist/categories/helpers/det-3.d.ts.map +1 -0
- package/dist/categories/helpers/det-3.js +62 -0
- package/dist/categories/helpers/det-3.js.map +1 -0
- package/dist/categories/helpers/mat-mul3.d.ts +46 -0
- package/dist/categories/helpers/mat-mul3.d.ts.map +1 -0
- package/dist/categories/helpers/mat-mul3.js +52 -0
- package/dist/categories/helpers/mat-mul3.js.map +1 -0
- package/dist/categories/helpers/misc.d.ts +118 -0
- package/dist/categories/helpers/misc.d.ts.map +1 -0
- package/dist/categories/helpers/misc.js +131 -0
- package/dist/categories/helpers/misc.js.map +1 -0
- package/dist/categories/helpers/radians.d.ts +41 -0
- package/dist/categories/helpers/radians.d.ts.map +1 -0
- package/dist/categories/helpers/radians.js +40 -0
- package/dist/categories/helpers/radians.js.map +1 -0
- package/dist/categories/helpers/rot-1.d.ts +38 -0
- package/dist/categories/helpers/rot-1.d.ts.map +1 -0
- package/dist/categories/helpers/rot-1.js +47 -0
- package/dist/categories/helpers/rot-1.js.map +1 -0
- package/dist/categories/helpers/rot-3.d.ts +38 -0
- package/dist/categories/helpers/rot-3.d.ts.map +1 -0
- package/dist/categories/helpers/rot-3.js +47 -0
- package/dist/categories/helpers/rot-3.js.map +1 -0
- package/dist/categories/helpers/transpose-3.d.ts +51 -0
- package/dist/categories/helpers/transpose-3.d.ts.map +1 -0
- package/dist/categories/helpers/transpose-3.js +54 -0
- package/dist/categories/helpers/transpose-3.js.map +1 -0
- package/dist/categories/kepler/__tests__/solve-kepler-bisection.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/kepler/__tests__}/solve-kepler-bisection.spec.js +3 -2
- package/dist/categories/kepler/__tests__/solve-kepler-bisection.spec.js.map +1 -0
- package/dist/categories/kepler/__tests__/solve-kepler-high-eccentricity.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/kepler/__tests__}/solve-kepler-high-eccentricity.spec.js +1 -1
- package/dist/categories/kepler/__tests__/solve-kepler-high-eccentricity.spec.js.map +1 -0
- package/dist/categories/kepler/__tests__/solve-kepler-newton-raphson.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/kepler/__tests__}/solve-kepler-newton-raphson.spec.js +1 -1
- package/dist/categories/kepler/__tests__/solve-kepler-newton-raphson.spec.js.map +1 -0
- package/dist/categories/kepler/__tests__/solve-kepler.int.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/kepler/__tests__}/solve-kepler.int.spec.js +1 -1
- package/dist/categories/kepler/__tests__/solve-kepler.int.spec.js.map +1 -0
- package/dist/categories/kepler/solve-kepler-bisection.d.ts +1 -1
- package/dist/categories/kepler/solve-kepler-bisection.d.ts.map +1 -1
- package/dist/categories/kepler/solve-kepler-high-eccentricity.d.ts +1 -1
- package/dist/categories/kepler/solve-kepler-high-eccentricity.d.ts.map +1 -1
- package/dist/categories/kepler/solve-kepler-newton-raphson.d.ts +1 -1
- package/dist/categories/kepler/solve-kepler-newton-raphson.d.ts.map +1 -1
- package/dist/categories/kepler/solve-kepler-newton-raphson.js +1 -1
- package/dist/categories/kepler/solve-kepler.d.ts +1 -1
- package/dist/categories/kepler/solve-kepler.d.ts.map +1 -1
- package/dist/categories/manoeuvres/__tests__/combine-burns-delta-v.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/manoeuvres/__tests__}/combine-burns-delta-v.spec.js +3 -2
- package/dist/categories/manoeuvres/__tests__/combine-burns-delta-v.spec.js.map +1 -0
- package/dist/categories/manoeuvres/__tests__/gravity-assist-turning-angle.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/manoeuvres/__tests__}/gravity-assist-turning-angle.spec.js +2 -2
- package/dist/categories/manoeuvres/__tests__/gravity-assist-turning-angle.spec.js.map +1 -0
- package/dist/categories/manoeuvres/__tests__/hohmann-transfer.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/manoeuvres/__tests__}/hohmann-transfer.spec.js +2 -2
- package/dist/categories/manoeuvres/__tests__/hohmann-transfer.spec.js.map +1 -0
- package/dist/categories/manoeuvres/__tests__/oberth-energy-gain.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/manoeuvres/__tests__}/oberth-energy-gain.spec.js +2 -2
- package/dist/categories/manoeuvres/__tests__/oberth-energy-gain.spec.js.map +1 -0
- package/dist/categories/manoeuvres/__tests__/plane-change-delta-v.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/manoeuvres/__tests__}/plane-change-delta-v.spec.js +3 -2
- package/dist/categories/manoeuvres/__tests__/plane-change-delta-v.spec.js.map +1 -0
- package/dist/categories/manoeuvres/__tests__/rocket-delta-v-from-isp.spec.d.ts +2 -0
- package/dist/categories/manoeuvres/__tests__/rocket-delta-v-from-isp.spec.d.ts.map +1 -0
- package/dist/categories/manoeuvres/__tests__/rocket-delta-v-from-isp.spec.js +84 -0
- package/dist/categories/manoeuvres/__tests__/rocket-delta-v-from-isp.spec.js.map +1 -0
- package/dist/categories/manoeuvres/__tests__/rocket-delta-v-from-ve.spec.d.ts +2 -0
- package/dist/categories/manoeuvres/__tests__/rocket-delta-v-from-ve.spec.d.ts.map +1 -0
- package/dist/categories/manoeuvres/__tests__/rocket-delta-v-from-ve.spec.js +65 -0
- package/dist/categories/manoeuvres/__tests__/rocket-delta-v-from-ve.spec.js.map +1 -0
- package/dist/categories/manoeuvres/rocket-delta-v-from-isp.d.ts +46 -0
- package/dist/categories/manoeuvres/rocket-delta-v-from-isp.d.ts.map +1 -0
- package/dist/categories/manoeuvres/rocket-delta-v-from-isp.js +67 -0
- package/dist/categories/manoeuvres/rocket-delta-v-from-isp.js.map +1 -0
- package/dist/categories/manoeuvres/rocket-delta-v-from-ve.d.ts +44 -0
- package/dist/categories/manoeuvres/rocket-delta-v-from-ve.d.ts.map +1 -0
- package/dist/categories/manoeuvres/rocket-delta-v-from-ve.js +62 -0
- package/dist/categories/manoeuvres/rocket-delta-v-from-ve.js.map +1 -0
- package/dist/categories/orbits/__tests__/atmospheric-drag-acceleration.spec.d.ts +2 -0
- package/dist/categories/orbits/__tests__/atmospheric-drag-acceleration.spec.d.ts.map +1 -0
- package/dist/categories/orbits/__tests__/atmospheric-drag-acceleration.spec.js +71 -0
- package/dist/categories/orbits/__tests__/atmospheric-drag-acceleration.spec.js.map +1 -0
- package/dist/categories/orbits/__tests__/characteristic-energy-c3.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/orbits/__tests__}/characteristic-energy-c3.spec.js +2 -2
- package/dist/categories/orbits/__tests__/characteristic-energy-c3.spec.js.map +1 -0
- package/dist/categories/orbits/__tests__/circular-speed.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/orbits/__tests__}/circular-speed.spec.js +2 -2
- package/dist/categories/orbits/__tests__/circular-speed.spec.js.map +1 -0
- package/dist/categories/orbits/__tests__/cw-hill-derivatives.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/orbits/__tests__}/cw-hill-derivatives.spec.js +2 -2
- package/dist/categories/orbits/__tests__/cw-hill-derivatives.spec.js.map +1 -0
- package/dist/categories/orbits/__tests__/escape-speed.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/orbits/__tests__}/escape-speed.spec.js +2 -2
- package/dist/categories/orbits/__tests__/escape-speed.spec.js.map +1 -0
- package/dist/categories/orbits/__tests__/flight-path-angle-from-true-anomaly.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/orbits/__tests__}/flight-path-angle-from-true-anomaly.spec.js +2 -2
- package/dist/categories/orbits/__tests__/flight-path-angle-from-true-anomaly.spec.js.map +1 -0
- package/dist/categories/orbits/__tests__/hyperbolic-periapsis-speed.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/orbits/__tests__}/hyperbolic-periapsis-speed.spec.js +2 -2
- package/dist/categories/orbits/__tests__/hyperbolic-periapsis-speed.spec.js.map +1 -0
- package/dist/categories/orbits/__tests__/j2-argument-of-perigee-rate.spec.d.ts +2 -0
- package/dist/categories/orbits/__tests__/j2-argument-of-perigee-rate.spec.d.ts.map +1 -0
- package/dist/categories/orbits/__tests__/j2-argument-of-perigee-rate.spec.js +104 -0
- package/dist/categories/orbits/__tests__/j2-argument-of-perigee-rate.spec.js.map +1 -0
- package/dist/categories/orbits/__tests__/j2-nodal-precession-rate.spec.d.ts +2 -0
- package/dist/categories/orbits/__tests__/j2-nodal-precession-rate.spec.d.ts.map +1 -0
- package/dist/categories/orbits/__tests__/j2-nodal-precession-rate.spec.js +99 -0
- package/dist/categories/orbits/__tests__/j2-nodal-precession-rate.spec.js.map +1 -0
- package/dist/categories/orbits/__tests__/kepler-period.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/orbits/__tests__}/kepler-period.spec.js +2 -2
- package/dist/categories/orbits/__tests__/kepler-period.spec.js.map +1 -0
- package/dist/categories/orbits/__tests__/mean-motion.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/orbits/__tests__}/mean-motion.spec.js +2 -2
- package/dist/categories/orbits/__tests__/mean-motion.spec.js.map +1 -0
- package/dist/categories/orbits/__tests__/peri-apoapsis-radii.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/orbits/__tests__}/peri-apoapsis-radii.spec.js +2 -2
- package/dist/categories/orbits/__tests__/peri-apoapsis-radii.spec.js.map +1 -0
- package/dist/categories/orbits/__tests__/specific-angular-momentum-from-elements.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/orbits/__tests__}/specific-angular-momentum-from-elements.spec.js +2 -2
- package/dist/categories/orbits/__tests__/specific-angular-momentum-from-elements.spec.js.map +1 -0
- package/dist/categories/orbits/__tests__/specific-angular-momentum.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/orbits/__tests__}/specific-angular-momentum.spec.js +3 -2
- package/dist/categories/orbits/__tests__/specific-angular-momentum.spec.js.map +1 -0
- package/dist/categories/orbits/__tests__/specific-mechanical-energy.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/orbits/__tests__}/specific-mechanical-energy.spec.js +2 -2
- package/dist/categories/orbits/__tests__/specific-mechanical-energy.spec.js.map +1 -0
- package/dist/categories/orbits/__tests__/sphere-of-influence-radius.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/orbits/__tests__}/sphere-of-influence-radius.spec.js +2 -2
- package/dist/categories/orbits/__tests__/sphere-of-influence-radius.spec.js.map +1 -0
- package/dist/categories/orbits/__tests__/vis-viva-speed.spec.d.ts.map +1 -0
- package/dist/{__tests__ → categories/orbits/__tests__}/vis-viva-speed.spec.js +2 -2
- package/dist/categories/orbits/__tests__/vis-viva-speed.spec.js.map +1 -0
- package/dist/categories/orbits/atmospheric-drag-acceleration.d.ts +40 -0
- package/dist/categories/orbits/atmospheric-drag-acceleration.d.ts.map +1 -0
- package/dist/categories/orbits/atmospheric-drag-acceleration.js +63 -0
- package/dist/categories/orbits/atmospheric-drag-acceleration.js.map +1 -0
- package/dist/categories/orbits/flight-path-angle-from-true-anomaly.d.ts +1 -1
- package/dist/categories/orbits/flight-path-angle-from-true-anomaly.d.ts.map +1 -1
- package/dist/categories/orbits/j2-argument-of-perigee-rate.d.ts +53 -0
- package/dist/categories/orbits/j2-argument-of-perigee-rate.d.ts.map +1 -0
- package/dist/categories/orbits/j2-argument-of-perigee-rate.js +84 -0
- package/dist/categories/orbits/j2-argument-of-perigee-rate.js.map +1 -0
- package/dist/categories/orbits/j2-nodal-precession-rate.d.ts +52 -0
- package/dist/categories/orbits/j2-nodal-precession-rate.d.ts.map +1 -0
- package/dist/categories/orbits/j2-nodal-precession-rate.js +82 -0
- package/dist/categories/orbits/j2-nodal-precession-rate.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/dist/__tests__/characteristic-energy-c3.spec.d.ts.map +0 -1
- package/dist/__tests__/characteristic-energy-c3.spec.js.map +0 -1
- package/dist/__tests__/circular-speed.spec.d.ts.map +0 -1
- package/dist/__tests__/circular-speed.spec.js.map +0 -1
- package/dist/__tests__/combine-burns-delta-v.spec.d.ts.map +0 -1
- package/dist/__tests__/combine-burns-delta-v.spec.js.map +0 -1
- package/dist/__tests__/compute-angle.int.spec.d.ts.map +0 -1
- package/dist/__tests__/compute-angle.int.spec.js.map +0 -1
- package/dist/__tests__/cw-hill-derivatives.spec.d.ts.map +0 -1
- package/dist/__tests__/cw-hill-derivatives.spec.js.map +0 -1
- package/dist/__tests__/eccentric-to-true-anomaly.spec.d.ts.map +0 -1
- package/dist/__tests__/eccentric-to-true-anomaly.spec.js.map +0 -1
- package/dist/__tests__/escape-speed.spec.d.ts.map +0 -1
- package/dist/__tests__/escape-speed.spec.js.map +0 -1
- package/dist/__tests__/flight-path-angle-from-true-anomaly.spec.d.ts.map +0 -1
- package/dist/__tests__/flight-path-angle-from-true-anomaly.spec.js.map +0 -1
- package/dist/__tests__/gravitational-acceleration-on1-by2.int.spec.d.ts.map +0 -1
- package/dist/__tests__/gravitational-acceleration-on1-by2.int.spec.js.map +0 -1
- package/dist/__tests__/gravitational-force-on1-by2.int.spec.d.ts.map +0 -1
- package/dist/__tests__/gravitational-force-on1-by2.int.spec.js.map +0 -1
- package/dist/__tests__/gravitational-force.spec.d.ts.map +0 -1
- package/dist/__tests__/gravitational-force.spec.js.map +0 -1
- package/dist/__tests__/gravitational-parameters.spec.d.ts.map +0 -1
- package/dist/__tests__/gravitational-parameters.spec.js.map +0 -1
- package/dist/__tests__/gravity-assist-turning-angle.spec.d.ts.map +0 -1
- package/dist/__tests__/gravity-assist-turning-angle.spec.js.map +0 -1
- package/dist/__tests__/hohmann-transfer.spec.d.ts.map +0 -1
- package/dist/__tests__/hohmann-transfer.spec.js.map +0 -1
- package/dist/__tests__/hyperbolic-periapsis-speed.spec.d.ts.map +0 -1
- package/dist/__tests__/hyperbolic-periapsis-speed.spec.js.map +0 -1
- package/dist/__tests__/kepler-period.spec.d.ts.map +0 -1
- package/dist/__tests__/kepler-period.spec.js.map +0 -1
- package/dist/__tests__/mean-motion.spec.d.ts.map +0 -1
- package/dist/__tests__/mean-motion.spec.js.map +0 -1
- package/dist/__tests__/mean-to-eccentric-anomaly.spec.d.ts.map +0 -1
- package/dist/__tests__/mean-to-eccentric-anomaly.spec.js.map +0 -1
- package/dist/__tests__/oberth-energy-gain.spec.d.ts.map +0 -1
- package/dist/__tests__/oberth-energy-gain.spec.js.map +0 -1
- package/dist/__tests__/peri-apoapsis-radii.spec.d.ts.map +0 -1
- package/dist/__tests__/peri-apoapsis-radii.spec.js.map +0 -1
- package/dist/__tests__/plane-change-delta-v.spec.d.ts.map +0 -1
- package/dist/__tests__/plane-change-delta-v.spec.js.map +0 -1
- package/dist/__tests__/solve-kepler-bisection.spec.d.ts.map +0 -1
- package/dist/__tests__/solve-kepler-bisection.spec.js.map +0 -1
- package/dist/__tests__/solve-kepler-high-eccentricity.spec.d.ts.map +0 -1
- package/dist/__tests__/solve-kepler-high-eccentricity.spec.js.map +0 -1
- package/dist/__tests__/solve-kepler-newton-raphson.spec.d.ts.map +0 -1
- package/dist/__tests__/solve-kepler-newton-raphson.spec.js.map +0 -1
- package/dist/__tests__/solve-kepler.int.spec.d.ts.map +0 -1
- package/dist/__tests__/solve-kepler.int.spec.js.map +0 -1
- package/dist/__tests__/specific-angular-momentum-from-elements.spec.d.ts.map +0 -1
- package/dist/__tests__/specific-angular-momentum-from-elements.spec.js.map +0 -1
- package/dist/__tests__/specific-angular-momentum.spec.d.ts.map +0 -1
- package/dist/__tests__/specific-angular-momentum.spec.js.map +0 -1
- package/dist/__tests__/specific-mechanical-energy.spec.d.ts.map +0 -1
- package/dist/__tests__/specific-mechanical-energy.spec.js.map +0 -1
- package/dist/__tests__/sphere-of-influence-radius.spec.d.ts.map +0 -1
- package/dist/__tests__/sphere-of-influence-radius.spec.js.map +0 -1
- package/dist/__tests__/true-to-mean-anomaly.spec.d.ts.map +0 -1
- package/dist/__tests__/true-to-mean-anomaly.spec.js.map +0 -1
- package/dist/__tests__/vis-viva-speed.spec.d.ts.map +0 -1
- package/dist/__tests__/vis-viva-speed.spec.js.map +0 -1
- package/dist/__tests__/wrap-angle.spec.d.ts.map +0 -1
- package/dist/__tests__/wrap-angle.spec.js.map +0 -1
- /package/dist/{__tests__ → categories/angle/__tests__}/compute-angle.int.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/angle/__tests__}/wrap-angle.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/anomalies/__tests__}/eccentric-to-true-anomaly.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/anomalies/__tests__}/mean-to-eccentric-anomaly.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/anomalies/__tests__}/true-to-mean-anomaly.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/gravity/__tests__}/gravitational-acceleration-on1-by2.int.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/gravity/__tests__}/gravitational-force-on1-by2.int.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/gravity/__tests__}/gravitational-force.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/gravity/__tests__}/gravitational-parameters.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/kepler/__tests__}/solve-kepler-bisection.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/kepler/__tests__}/solve-kepler-high-eccentricity.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/kepler/__tests__}/solve-kepler-newton-raphson.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/kepler/__tests__}/solve-kepler.int.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/manoeuvres/__tests__}/combine-burns-delta-v.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/manoeuvres/__tests__}/gravity-assist-turning-angle.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/manoeuvres/__tests__}/hohmann-transfer.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/manoeuvres/__tests__}/oberth-energy-gain.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/manoeuvres/__tests__}/plane-change-delta-v.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/orbits/__tests__}/characteristic-energy-c3.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/orbits/__tests__}/circular-speed.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/orbits/__tests__}/cw-hill-derivatives.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/orbits/__tests__}/escape-speed.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/orbits/__tests__}/flight-path-angle-from-true-anomaly.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/orbits/__tests__}/hyperbolic-periapsis-speed.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/orbits/__tests__}/kepler-period.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/orbits/__tests__}/mean-motion.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/orbits/__tests__}/peri-apoapsis-radii.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/orbits/__tests__}/specific-angular-momentum-from-elements.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/orbits/__tests__}/specific-angular-momentum.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/orbits/__tests__}/specific-mechanical-energy.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/orbits/__tests__}/sphere-of-influence-radius.spec.d.ts +0 -0
- /package/dist/{__tests__ → categories/orbits/__tests__}/vis-viva-speed.spec.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"j2-nodal-precession-rate.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/j2-nodal-precession-rate.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import test, { describe } from 'node:test';
|
|
3
|
+
import { relClose } from 'packages/equations/src/__tests__/helpers';
|
|
4
|
+
import { j2NodalPrecessionRate } from '../j2-nodal-precession-rate';
|
|
5
|
+
import { rad } from '../../helpers/radians';
|
|
6
|
+
describe('j2NodalPrecessionRate', () => {
|
|
7
|
+
test('computes Ωdot from the reference formula (typical Earth-ish LEO inputs)', () => {
|
|
8
|
+
const J2 = 1.08262668e-3;
|
|
9
|
+
const n = 0.001078; // rad/s
|
|
10
|
+
const Re = 6378.137; // km
|
|
11
|
+
const a = 7000; // km
|
|
12
|
+
const i = rad((98 * Math.PI) / 180);
|
|
13
|
+
const e = 0.001;
|
|
14
|
+
const omegaDot = j2NodalPrecessionRate(J2, n, Re, a, i, e);
|
|
15
|
+
const expected = (-1.5 * J2 * n * Math.pow(Re / a, 2) * Math.cos(i)) /
|
|
16
|
+
Math.pow(1 - e * e, 2);
|
|
17
|
+
relClose(omegaDot, expected);
|
|
18
|
+
});
|
|
19
|
+
test('sign check: prograde (i < 90°) gives negative Ωdot; retrograde (i > 90°) gives positive Ωdot', () => {
|
|
20
|
+
const J2 = 1e-3;
|
|
21
|
+
const n = 0.001;
|
|
22
|
+
const Re = 6000;
|
|
23
|
+
const a = 7000;
|
|
24
|
+
const e = 0;
|
|
25
|
+
const prograde = j2NodalPrecessionRate(J2, n, Re, a, rad((30 * Math.PI) / 180), e);
|
|
26
|
+
const retrograde = j2NodalPrecessionRate(J2, n, Re, a, rad((120 * Math.PI) / 180), e);
|
|
27
|
+
assert.ok(prograde < 0, `expected prograde Ωdot < 0, got ${prograde}`);
|
|
28
|
+
assert.ok(retrograde > 0, `expected retrograde Ωdot > 0, got ${retrograde}`);
|
|
29
|
+
});
|
|
30
|
+
test('polar orbit (i = 90°) gives ~0 Ωdot', () => {
|
|
31
|
+
const J2 = 1e-3;
|
|
32
|
+
const n = 0.001;
|
|
33
|
+
const Re = 6000;
|
|
34
|
+
const a = 7000;
|
|
35
|
+
const e = 0;
|
|
36
|
+
const omegaDot = j2NodalPrecessionRate(J2, n, Re, a, rad(Math.PI / 2), e);
|
|
37
|
+
relClose(omegaDot, 0, 1e-12);
|
|
38
|
+
});
|
|
39
|
+
test('with e = 0, denominator is 1 (matches simplified circular-orbit form)', () => {
|
|
40
|
+
const J2 = 1.08262668e-3;
|
|
41
|
+
const n = 0.001;
|
|
42
|
+
const Re = 6378.137;
|
|
43
|
+
const a = 7000;
|
|
44
|
+
const i = rad((45 * Math.PI) / 180);
|
|
45
|
+
const e = 0;
|
|
46
|
+
const omegaDot = j2NodalPrecessionRate(J2, n, Re, a, i, e);
|
|
47
|
+
const expected = -1.5 * J2 * n * Math.pow(Re / a, 2) * Math.cos(i);
|
|
48
|
+
relClose(omegaDot, expected);
|
|
49
|
+
});
|
|
50
|
+
test('throws TypeError when any input is not finite', () => {
|
|
51
|
+
const J2 = 1e-3;
|
|
52
|
+
const n = 0.001;
|
|
53
|
+
const Re = 6000;
|
|
54
|
+
const a = 7000;
|
|
55
|
+
const i = rad(0);
|
|
56
|
+
const e = 0;
|
|
57
|
+
assert.throws(() => j2NodalPrecessionRate(Number.NaN, n, Re, a, i, e), (err) => err instanceof TypeError &&
|
|
58
|
+
err.message === 'J2 must be a finite number. Received: NaN');
|
|
59
|
+
assert.throws(() => j2NodalPrecessionRate(J2, Number.POSITIVE_INFINITY, Re, a, i, e), (err) => err instanceof TypeError &&
|
|
60
|
+
err.message === 'n must be a finite number. Received: Infinity');
|
|
61
|
+
assert.throws(() => j2NodalPrecessionRate(J2, n, Number.NEGATIVE_INFINITY, a, i, e), (err) => err instanceof TypeError &&
|
|
62
|
+
err.message === 'Re must be a finite number. Received: -Infinity');
|
|
63
|
+
assert.throws(() => j2NodalPrecessionRate(J2, n, Re, Number.NaN, i, e), (err) => err instanceof TypeError &&
|
|
64
|
+
err.message === 'a must be a finite number. Received: NaN');
|
|
65
|
+
assert.throws(() => j2NodalPrecessionRate(J2, n, Re, a, rad(Number.NaN), e), (err) => err instanceof TypeError &&
|
|
66
|
+
err.message === 'i must be a finite number. Received: NaN');
|
|
67
|
+
assert.throws(() => j2NodalPrecessionRate(J2, n, Re, a, i, Number.NaN), (err) => err instanceof TypeError &&
|
|
68
|
+
err.message === 'e must be a finite number. Received: NaN');
|
|
69
|
+
});
|
|
70
|
+
test('throws RangeError when n < 0', () => {
|
|
71
|
+
assert.throws(() => j2NodalPrecessionRate(1e-3, -1e-9, 6000, 7000, rad(0), 0), (err) => err instanceof RangeError &&
|
|
72
|
+
err.message === 'n must be >= 0. Received: -1e-9');
|
|
73
|
+
});
|
|
74
|
+
test('throws RangeError when Re <= 0', () => {
|
|
75
|
+
assert.throws(() => j2NodalPrecessionRate(1e-3, 1e-3, 0, 7000, rad(0), 0), (err) => err instanceof RangeError &&
|
|
76
|
+
err.message === 'Re must be > 0. Received: 0');
|
|
77
|
+
});
|
|
78
|
+
test('throws RangeError when a <= 0', () => {
|
|
79
|
+
assert.throws(() => j2NodalPrecessionRate(1e-3, 1e-3, 6000, 0, rad(0), 0), (err) => err instanceof RangeError &&
|
|
80
|
+
err.message === 'a must be > 0. Received: 0');
|
|
81
|
+
});
|
|
82
|
+
test('throws RangeError when e is outside [0, 1]', () => {
|
|
83
|
+
assert.throws(() => j2NodalPrecessionRate(1e-3, 1e-3, 6000, 7000, rad(0), -1e-9), (err) => err instanceof RangeError &&
|
|
84
|
+
err.message === 'e must be in [0, 1]. Received: -1e-9');
|
|
85
|
+
assert.throws(() => j2NodalPrecessionRate(1e-3, 1e-3, 6000, 7000, rad(0), 1), (err) => err instanceof RangeError &&
|
|
86
|
+
err.message === 'e must be in [0, 1]. Received: 1');
|
|
87
|
+
});
|
|
88
|
+
test('as e increases, |Ωdot| increases due to (1 - e²)⁻²', () => {
|
|
89
|
+
const J2 = 1e-3;
|
|
90
|
+
const n = 0.001;
|
|
91
|
+
const Re = 6000;
|
|
92
|
+
const a = 7000;
|
|
93
|
+
const i = rad((60 * Math.PI) / 180);
|
|
94
|
+
const omegaDot0 = j2NodalPrecessionRate(J2, n, Re, a, i, 0);
|
|
95
|
+
const omegaDot5 = j2NodalPrecessionRate(J2, n, Re, a, i, 0.5);
|
|
96
|
+
assert.ok(Math.abs(omegaDot5) > Math.abs(omegaDot0), `expected |Ωdot| to increase with e: ${omegaDot0} -> ${omegaDot5}`);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
//# sourceMappingURL=j2-nodal-precession-rate.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"j2-nodal-precession-rate.spec.js","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/j2-nodal-precession-rate.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kepler-period.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/kepler-period.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import assert from 'node:assert/strict';
|
|
2
2
|
import test, { describe } from 'node:test';
|
|
3
|
-
import { relClose } from '
|
|
4
|
-
import { keplerPeriod } from '../
|
|
3
|
+
import { relClose } from 'packages/equations/src/__tests__/helpers';
|
|
4
|
+
import { keplerPeriod } from '../kepler-period';
|
|
5
5
|
describe('keplerPeriod', () => {
|
|
6
6
|
test('GEO sanity: a ≈ 42,164 km around Earth → T ≈ 86,164 s', () => {
|
|
7
7
|
const a = 42164e3; // m
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kepler-period.spec.js","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/kepler-period.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mean-motion.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/mean-motion.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import assert from 'node:assert/strict';
|
|
2
2
|
import test, { describe } from 'node:test';
|
|
3
|
-
import { meanMotion } from '../
|
|
4
|
-
import { relClose } from '
|
|
3
|
+
import { meanMotion } from '../mean-motion';
|
|
4
|
+
import { relClose } from 'packages/equations/src/__tests__/helpers';
|
|
5
5
|
describe('meanMotion', () => {
|
|
6
6
|
test('computes n = sqrt(mu / a^3) for a typical Earth orbit (km-based)', () => {
|
|
7
7
|
const mu = 398600.4418; // km³/s²
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mean-motion.spec.js","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/mean-motion.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peri-apoapsis-radii.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/peri-apoapsis-radii.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import assert from 'node:assert/strict';
|
|
2
2
|
import test, { describe } from 'node:test';
|
|
3
|
-
import { periApoapsisRadii } from '../
|
|
4
|
-
import { relClose } from '
|
|
3
|
+
import { periApoapsisRadii } from '../peri-apoapsis-radii';
|
|
4
|
+
import { relClose } from 'packages/equations/src/__tests__/helpers';
|
|
5
5
|
describe('periApoapsisRadii', () => {
|
|
6
6
|
test('ellipse: matches rp = a(1-e), ra = a(1+e)', () => {
|
|
7
7
|
const a = 7000e3; // m
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"peri-apoapsis-radii.spec.js","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/peri-apoapsis-radii.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/categories/orbits/__tests__/specific-angular-momentum-from-elements.spec.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specific-angular-momentum-from-elements.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/specific-angular-momentum-from-elements.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import assert from 'node:assert/strict';
|
|
2
2
|
import test, { describe } from 'node:test';
|
|
3
|
-
import { absClose, relClose } from '
|
|
4
|
-
import { specificAngularMomentumFromElements } from '../
|
|
3
|
+
import { absClose, relClose } from 'packages/equations/src/__tests__/helpers';
|
|
4
|
+
import { specificAngularMomentumFromElements } from '../specific-angular-momentum-from-elements';
|
|
5
5
|
describe('specificAngularMomentumFromElements', () => {
|
|
6
6
|
test('definition (elliptic): h = sqrt(μ a (1-e²))', () => {
|
|
7
7
|
const mu = 3.986004418e14; // m³/s² (Earth GM)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specific-angular-momentum-from-elements.spec.js","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/specific-angular-momentum-from-elements.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specific-angular-momentum.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/specific-angular-momentum.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import assert from 'node:assert/strict';
|
|
2
2
|
import test, { describe } from 'node:test';
|
|
3
|
-
import { absClose,
|
|
4
|
-
import { specificAngularMomentum } from '../
|
|
3
|
+
import { absClose, relClose } from 'packages/equations/src/__tests__/helpers';
|
|
4
|
+
import { specificAngularMomentum } from '../specific-angular-momentum';
|
|
5
|
+
import { dot, norm } from '../../helpers/misc';
|
|
5
6
|
describe('specificAngularMomentum', () => {
|
|
6
7
|
test('orthogonal state: r ⟂ v → h = r * v', () => {
|
|
7
8
|
const r = [6778e3, 0, 0]; // m
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specific-angular-momentum.spec.js","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/specific-angular-momentum.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specific-mechanical-energy.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/specific-mechanical-energy.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import assert from 'node:assert/strict';
|
|
2
2
|
import test, { describe } from 'node:test';
|
|
3
|
-
import { specificMechanicalEnergy } from '../
|
|
4
|
-
import { absClose, relClose } from '
|
|
3
|
+
import { specificMechanicalEnergy } from '../specific-mechanical-energy';
|
|
4
|
+
import { absClose, relClose } from 'packages/equations/src/__tests__/helpers';
|
|
5
5
|
describe('specificMechanicalEnergy', () => {
|
|
6
6
|
test('circular orbit: ε = -μ/(2r) when v = sqrt(μ/r)', () => {
|
|
7
7
|
const mu = 3.986004418e14; // m³/s² (Earth GM)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specific-mechanical-energy.spec.js","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/specific-mechanical-energy.spec.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAE9E,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,IAAI,CAAC,gDAAgD,EAAE,GAAG,EAAE;QAC1D,MAAM,EAAE,GAAG,cAAc,CAAC,CAAC,mBAAmB;QAC9C,MAAM,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,cAAc;QACxC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM;QAEnC,MAAM,GAAG,GAAG,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAE/B,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAClD,MAAM,EAAE,GAAG,cAAc,CAAC,CAAC,QAAQ;QACnC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI;QACtB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAElC,MAAM,GAAG,GAAG,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAE/C,yDAAyD;QACzD,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC5D,MAAM,EAAE,GAAG,cAAc,CAAC;QAC1B,MAAM,CAAC,GAAG,MAAM,CAAC;QACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,IAAI,GAAG,QAAQ,CAAC;QAE1B,MAAM,GAAG,GAAG,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,2CAA2C,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACnD,MAAM,EAAE,GAAG,cAAc,CAAC;QAC1B,MAAM,CAAC,GAAG,MAAM,CAAC;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC;QAExB,MAAM,GAAG,GAAG,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,iDAAiD,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACxE,MAAM,EAAE,GAAG,cAAc,CAAC;QAC1B,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,sBAAsB;QACzC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,gCAAgC;QAClD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW;QAEtD,MAAM,GAAG,GAAG,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAE/B,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0DAA0D,EAAE,GAAG,EAAE;QACpE,MAAM,EAAE,GAAG,cAAc,CAAC;QAC1B,MAAM,CAAC,GAAG,MAAM,CAAC;QACjB,MAAM,EAAE,GAAG,IAAI,CAAC;QAChB,MAAM,EAAE,GAAG,IAAI,CAAC;QAEhB,MAAM,IAAI,GAAG,wBAAwB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,wBAAwB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAEjD,MAAM,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAClF,MAAM,EAAE,GAAG,cAAc,CAAC;QAC1B,MAAM,CAAC,GAAG,IAAI,CAAC;QACf,MAAM,EAAE,GAAG,MAAM,CAAC;QAClB,MAAM,EAAE,GAAG,MAAM,CAAC;QAElB,MAAM,IAAI,GAAG,wBAAwB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,wBAAwB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAEjD,MAAM,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACpC,MAAM,EAAE,GAAG,cAAc,CAAC;QAC1B,MAAM,CAAC,GAAG,MAAM,CAAC;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC;QAEf,YAAY;QACZ,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,CAAC,wBAAwB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,EACjD,cAAc,CACf,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;QAEzE,YAAY;QACZ,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,CAAC,wBAAwB,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,EACjD,UAAU,CACX,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;QACpE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;QAErE,aAAa;QACb,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAChD,cAAc,CACf,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sphere-of-influence-radius.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/sphere-of-influence-radius.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import assert from 'node:assert/strict';
|
|
2
2
|
import test, { describe } from 'node:test';
|
|
3
|
-
import { sphereOfInfluenceRadius } from '../
|
|
4
|
-
import { relClose } from '
|
|
3
|
+
import { sphereOfInfluenceRadius } from '../sphere-of-influence-radius';
|
|
4
|
+
import { relClose } from 'packages/equations/src/__tests__/helpers';
|
|
5
5
|
describe('sphereOfInfluenceRadius', () => {
|
|
6
6
|
test('computes rSOI = a * (m/M)^(2/5) for typical inputs (Earth around Sun, km-based)', () => {
|
|
7
7
|
const aKm = 149597870.7; // km
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sphere-of-influence-radius.spec.js","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/sphere-of-influence-radius.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vis-viva-speed.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/vis-viva-speed.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import assert from 'node:assert/strict';
|
|
2
2
|
import test, { describe } from 'node:test';
|
|
3
|
-
import { absClose, relClose } from '
|
|
4
|
-
import { visVivaSpeed } from '../
|
|
3
|
+
import { absClose, relClose } from 'packages/equations/src/__tests__/helpers';
|
|
4
|
+
import { visVivaSpeed } from '../vis-viva-speed';
|
|
5
5
|
describe('visVivaSpeed', () => {
|
|
6
6
|
test('circular orbit: a = r → v = sqrt(μ/r)', () => {
|
|
7
7
|
const mu = 3.986004418e14; // m³/s² (Earth GM)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vis-viva-speed.spec.js","sourceRoot":"","sources":["../../../../src/categories/orbits/__tests__/vis-viva-speed.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compute **atmospheric drag acceleration magnitude**.
|
|
3
|
+
*
|
|
4
|
+
* Equation:
|
|
5
|
+
* $$
|
|
6
|
+
* a_D=\frac{1}{2}\,\frac{C_D A}{m}\,\rho\,v^2
|
|
7
|
+
* $$
|
|
8
|
+
*
|
|
9
|
+
* Where:
|
|
10
|
+
* - $C_D$ is the drag coefficient (dimensionless)
|
|
11
|
+
* - $A$ is reference area normal to the flow (m²)
|
|
12
|
+
* - $m$ is spacecraft mass (kg)
|
|
13
|
+
* - $\rho$ is atmospheric density (kg/m³)
|
|
14
|
+
* - $v$ is speed relative to the atmosphere (m/s)
|
|
15
|
+
*
|
|
16
|
+
* Units:
|
|
17
|
+
* - Returns acceleration magnitude in **m/s²**.
|
|
18
|
+
*
|
|
19
|
+
* Note:
|
|
20
|
+
* - This returns the **magnitude** of drag acceleration. The drag acceleration vector points
|
|
21
|
+
* opposite the velocity direction (i.e., along $-\hat{v}$).
|
|
22
|
+
*
|
|
23
|
+
* @param Cd Drag coefficient $C_D$ (finite, >= 0).
|
|
24
|
+
* @param A Reference area $A$ (finite, >= 0), in m².
|
|
25
|
+
* @param m Mass $m$ (finite, > 0), in kg.
|
|
26
|
+
* @param rho Atmospheric density $\rho$ (finite, >= 0), in kg/m³.
|
|
27
|
+
* @param v Speed relative to the atmosphere $v$ (finite, >= 0), in m/s.
|
|
28
|
+
* @returns Drag acceleration magnitude $a_D$ in m/s².
|
|
29
|
+
* @throws {TypeError} If any input is not finite.
|
|
30
|
+
* @throws {RangeError} If `m <= 0` or any of `Cd, A, rho, v` is negative.
|
|
31
|
+
* @group Orbits
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* // Example (rough LEO order-of-magnitude):
|
|
36
|
+
* const aD = atmosphericDragAcceleration(2.2, 2.0, 500, 1e-12, 7700);
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export declare const atmosphericDragAcceleration: (Cd: number, A: number, m: number, rho: number, v: number) => number;
|
|
40
|
+
//# sourceMappingURL=atmospheric-drag-acceleration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atmospheric-drag-acceleration.d.ts","sourceRoot":"","sources":["../../../src/categories/orbits/atmospheric-drag-acceleration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,eAAO,MAAM,2BAA2B,GACtC,IAAI,MAAM,EACV,GAAG,MAAM,EACT,GAAG,MAAM,EACT,KAAK,MAAM,EACX,GAAG,MAAM,KACR,MA0BF,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compute **atmospheric drag acceleration magnitude**.
|
|
3
|
+
*
|
|
4
|
+
* Equation:
|
|
5
|
+
* $$
|
|
6
|
+
* a_D=\frac{1}{2}\,\frac{C_D A}{m}\,\rho\,v^2
|
|
7
|
+
* $$
|
|
8
|
+
*
|
|
9
|
+
* Where:
|
|
10
|
+
* - $C_D$ is the drag coefficient (dimensionless)
|
|
11
|
+
* - $A$ is reference area normal to the flow (m²)
|
|
12
|
+
* - $m$ is spacecraft mass (kg)
|
|
13
|
+
* - $\rho$ is atmospheric density (kg/m³)
|
|
14
|
+
* - $v$ is speed relative to the atmosphere (m/s)
|
|
15
|
+
*
|
|
16
|
+
* Units:
|
|
17
|
+
* - Returns acceleration magnitude in **m/s²**.
|
|
18
|
+
*
|
|
19
|
+
* Note:
|
|
20
|
+
* - This returns the **magnitude** of drag acceleration. The drag acceleration vector points
|
|
21
|
+
* opposite the velocity direction (i.e., along $-\hat{v}$).
|
|
22
|
+
*
|
|
23
|
+
* @param Cd Drag coefficient $C_D$ (finite, >= 0).
|
|
24
|
+
* @param A Reference area $A$ (finite, >= 0), in m².
|
|
25
|
+
* @param m Mass $m$ (finite, > 0), in kg.
|
|
26
|
+
* @param rho Atmospheric density $\rho$ (finite, >= 0), in kg/m³.
|
|
27
|
+
* @param v Speed relative to the atmosphere $v$ (finite, >= 0), in m/s.
|
|
28
|
+
* @returns Drag acceleration magnitude $a_D$ in m/s².
|
|
29
|
+
* @throws {TypeError} If any input is not finite.
|
|
30
|
+
* @throws {RangeError} If `m <= 0` or any of `Cd, A, rho, v` is negative.
|
|
31
|
+
* @group Orbits
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* // Example (rough LEO order-of-magnitude):
|
|
36
|
+
* const aD = atmosphericDragAcceleration(2.2, 2.0, 500, 1e-12, 7700);
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export const atmosphericDragAcceleration = (Cd, A, m, rho, v) => {
|
|
40
|
+
for (const [name, value] of [
|
|
41
|
+
['Cd', Cd],
|
|
42
|
+
['A', A],
|
|
43
|
+
['m', m],
|
|
44
|
+
['rho', rho],
|
|
45
|
+
['v', v]
|
|
46
|
+
]) {
|
|
47
|
+
if (!Number.isFinite(value)) {
|
|
48
|
+
throw new TypeError(`${name} must be a finite number. Received: ${value}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (Cd < 0)
|
|
52
|
+
throw new RangeError(`Cd must be >= 0. Received: ${Cd}`);
|
|
53
|
+
if (A < 0)
|
|
54
|
+
throw new RangeError(`A must be >= 0. Received: ${A}`);
|
|
55
|
+
if (m <= 0)
|
|
56
|
+
throw new RangeError(`m must be > 0. Received: ${m}`);
|
|
57
|
+
if (rho < 0)
|
|
58
|
+
throw new RangeError(`rho must be >= 0. Received: ${rho}`);
|
|
59
|
+
if (v < 0)
|
|
60
|
+
throw new RangeError(`v must be >= 0. Received: ${v}`);
|
|
61
|
+
return 0.5 * ((Cd * A) / m) * rho * v * v;
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=atmospheric-drag-acceleration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atmospheric-drag-acceleration.js","sourceRoot":"","sources":["../../../src/categories/orbits/atmospheric-drag-acceleration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,EAAU,EACV,CAAS,EACT,CAAS,EACT,GAAW,EACX,CAAS,EACD,EAAE;IACV,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI;QAC1B,CAAC,IAAI,EAAE,EAAE,CAAC;QACV,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,KAAK,EAAE,GAAG,CAAC;QACZ,CAAC,GAAG,EAAE,CAAC,CAAC;KACA,EAAE,CAAC;QACX,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,SAAS,CACjB,GAAG,IAAI,uCAAuC,KAAK,EAAE,CACtD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,EAAE,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC;IAErE,IAAI,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;IAElE,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;IAElE,IAAI,GAAG,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAC;IAExE,IAAI,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;IAElE,OAAO,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flight-path-angle-from-true-anomaly.d.ts","sourceRoot":"","sources":["../../../src/categories/orbits/flight-path-angle-from-true-anomaly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"flight-path-angle-from-true-anomaly.d.ts","sourceRoot":"","sources":["../../../src/categories/orbits/flight-path-angle-from-true-anomaly.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,8BAA8B,GACzC,IAAI,OAAO,EACX,GAAG,MAAM,KACR,OAaF,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { Radians } from '@interstellar-tools/types';
|
|
2
|
+
/**
|
|
3
|
+
* Compute **argument of perigee rotation** (J2 secular drift of ω) for an orbit about an oblate body.
|
|
4
|
+
*
|
|
5
|
+
* Equation (common approximation):
|
|
6
|
+
* $$
|
|
7
|
+
* \dot{\omega}\approx\frac{3}{4}J_2\,n\left(\frac{R_e}{a}\right)^2\frac{(5\cos^2 i-1)}{(1-e^2)^2}
|
|
8
|
+
* $$
|
|
9
|
+
*
|
|
10
|
+
* Where:
|
|
11
|
+
* - $ J_2 $ is the second zonal harmonic (dimensionless)
|
|
12
|
+
* - $ n $ is mean motion (rad/s)
|
|
13
|
+
* - $ R_e $ is the body's equatorial radius (m or km)
|
|
14
|
+
* - $ a $ is semi-major axis (m or km)
|
|
15
|
+
* - $ i $ is inclination (radians)
|
|
16
|
+
* - $ e $ is eccentricity (dimensionless)
|
|
17
|
+
*
|
|
18
|
+
* Units:
|
|
19
|
+
* - If `n` is in rad/s and `i` is in radians, the result is in **rad/s**.
|
|
20
|
+
* - `Re` and `a` must use the same distance unit.
|
|
21
|
+
*
|
|
22
|
+
* @param {number} J2 Second zonal harmonic (finite).
|
|
23
|
+
* @param {number} n Mean motion (finite, >= 0), in rad/s.
|
|
24
|
+
* @param {number} Re Equatorial radius (finite, > 0).
|
|
25
|
+
* @param {number} a Semi-major axis (finite, > 0).
|
|
26
|
+
* @param {Radians} i Inclination (finite), in radians.
|
|
27
|
+
* @param {number} e Eccentricity (finite, 0 <= e < 1).
|
|
28
|
+
* @returns {number} Argument of perigee drift rate $ \dot{\omega} $ in rad/s.
|
|
29
|
+
* @throws {TypeError} If any input is not finite.
|
|
30
|
+
* @throws {RangeError} If `n < 0`, `Re <= 0`, `a <= 0`, or `e` is outside [0, 1].
|
|
31
|
+
* @group Orbits
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* // Earth-ish example (units must be consistent):
|
|
36
|
+
* const J2 = 1.08262668e-3;
|
|
37
|
+
* const n = 0.001078; // rad/s (roughly LEO)
|
|
38
|
+
* const Re = 6378.137; // km
|
|
39
|
+
* const a = 7000; // km
|
|
40
|
+
* const i = (63.4 * Math.PI) / 180 as Radians; // "critical inclination" region
|
|
41
|
+
* const e = 0.001;
|
|
42
|
+
*
|
|
43
|
+
* const omegaDot = j2ArgumentOfPerigeeRate(J2, n, Re, a, i, e);
|
|
44
|
+
* ```
|
|
45
|
+
* @see https://science.nasa.gov/wp-content/uploads/2023/05/GDC_OrbitPrimer.pdf NASA GSFC - GDC Orbit Primer (shows apsidal precession dω/dt from J2; equivalent to the (5cos²i−1) form)
|
|
46
|
+
* @see https://en.wikipedia.org/wiki/Apsidal_precession Wikipedia - Apsidal precession (background + links on causes incl. quadrupole/oblateness)
|
|
47
|
+
* @see https://freeflyer.com/_freeflyeruniversityguide/j2_perturbation.htm FreeFlyer University Guide - J2 perturbation (mission-design oriented discussion of RAAN & argument of perigee drift)
|
|
48
|
+
* @see https://juliaspace.github.io/SatelliteToolboxPropagators.jl/stable/man/propagators/j2/ SatelliteToolboxPropagators.jl - J2 analytical propagator (lists secular ω(t) rate with the (4−5sin²i) term)
|
|
49
|
+
* @see https://articles.adsabs.harvard.edu/pdf/1959AJ.....64..367K Kozai (1959) - The Motion of a Close Earth Satellite (classic primary source on secular J2 effects)
|
|
50
|
+
* @see https://help.agi.com/stk/Content/stk/vehSat_orbitProp_2bodyJ2J4.htm AGI/STK Help - Two-Body + J2/J4 perturbations (notes secular drift in argument of perigee)
|
|
51
|
+
*/
|
|
52
|
+
export declare const j2ArgumentOfPerigeeRate: (J2: number, n: number, Re: number, a: number, i: Radians, e: number) => number;
|
|
53
|
+
//# sourceMappingURL=j2-argument-of-perigee-rate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"j2-argument-of-perigee-rate.d.ts","sourceRoot":"","sources":["../../../src/categories/orbits/j2-argument-of-perigee-rate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAGzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,eAAO,MAAM,uBAAuB,GAClC,IAAI,MAAM,EACV,GAAG,MAAM,EACT,IAAI,MAAM,EACV,GAAG,MAAM,EACT,GAAG,OAAO,EACV,GAAG,MAAM,KACR,MAmCF,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/* node:coverage disable */
|
|
2
|
+
/**
|
|
3
|
+
* Compute **argument of perigee rotation** (J2 secular drift of ω) for an orbit about an oblate body.
|
|
4
|
+
*
|
|
5
|
+
* Equation (common approximation):
|
|
6
|
+
* $$
|
|
7
|
+
* \dot{\omega}\approx\frac{3}{4}J_2\,n\left(\frac{R_e}{a}\right)^2\frac{(5\cos^2 i-1)}{(1-e^2)^2}
|
|
8
|
+
* $$
|
|
9
|
+
*
|
|
10
|
+
* Where:
|
|
11
|
+
* - $ J_2 $ is the second zonal harmonic (dimensionless)
|
|
12
|
+
* - $ n $ is mean motion (rad/s)
|
|
13
|
+
* - $ R_e $ is the body's equatorial radius (m or km)
|
|
14
|
+
* - $ a $ is semi-major axis (m or km)
|
|
15
|
+
* - $ i $ is inclination (radians)
|
|
16
|
+
* - $ e $ is eccentricity (dimensionless)
|
|
17
|
+
*
|
|
18
|
+
* Units:
|
|
19
|
+
* - If `n` is in rad/s and `i` is in radians, the result is in **rad/s**.
|
|
20
|
+
* - `Re` and `a` must use the same distance unit.
|
|
21
|
+
*
|
|
22
|
+
* @param {number} J2 Second zonal harmonic (finite).
|
|
23
|
+
* @param {number} n Mean motion (finite, >= 0), in rad/s.
|
|
24
|
+
* @param {number} Re Equatorial radius (finite, > 0).
|
|
25
|
+
* @param {number} a Semi-major axis (finite, > 0).
|
|
26
|
+
* @param {Radians} i Inclination (finite), in radians.
|
|
27
|
+
* @param {number} e Eccentricity (finite, 0 <= e < 1).
|
|
28
|
+
* @returns {number} Argument of perigee drift rate $ \dot{\omega} $ in rad/s.
|
|
29
|
+
* @throws {TypeError} If any input is not finite.
|
|
30
|
+
* @throws {RangeError} If `n < 0`, `Re <= 0`, `a <= 0`, or `e` is outside [0, 1].
|
|
31
|
+
* @group Orbits
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* // Earth-ish example (units must be consistent):
|
|
36
|
+
* const J2 = 1.08262668e-3;
|
|
37
|
+
* const n = 0.001078; // rad/s (roughly LEO)
|
|
38
|
+
* const Re = 6378.137; // km
|
|
39
|
+
* const a = 7000; // km
|
|
40
|
+
* const i = (63.4 * Math.PI) / 180 as Radians; // "critical inclination" region
|
|
41
|
+
* const e = 0.001;
|
|
42
|
+
*
|
|
43
|
+
* const omegaDot = j2ArgumentOfPerigeeRate(J2, n, Re, a, i, e);
|
|
44
|
+
* ```
|
|
45
|
+
* @see https://science.nasa.gov/wp-content/uploads/2023/05/GDC_OrbitPrimer.pdf NASA GSFC - GDC Orbit Primer (shows apsidal precession dω/dt from J2; equivalent to the (5cos²i−1) form)
|
|
46
|
+
* @see https://en.wikipedia.org/wiki/Apsidal_precession Wikipedia - Apsidal precession (background + links on causes incl. quadrupole/oblateness)
|
|
47
|
+
* @see https://freeflyer.com/_freeflyeruniversityguide/j2_perturbation.htm FreeFlyer University Guide - J2 perturbation (mission-design oriented discussion of RAAN & argument of perigee drift)
|
|
48
|
+
* @see https://juliaspace.github.io/SatelliteToolboxPropagators.jl/stable/man/propagators/j2/ SatelliteToolboxPropagators.jl - J2 analytical propagator (lists secular ω(t) rate with the (4−5sin²i) term)
|
|
49
|
+
* @see https://articles.adsabs.harvard.edu/pdf/1959AJ.....64..367K Kozai (1959) - The Motion of a Close Earth Satellite (classic primary source on secular J2 effects)
|
|
50
|
+
* @see https://help.agi.com/stk/Content/stk/vehSat_orbitProp_2bodyJ2J4.htm AGI/STK Help - Two-Body + J2/J4 perturbations (notes secular drift in argument of perigee)
|
|
51
|
+
*/
|
|
52
|
+
/* node:coverage enable */
|
|
53
|
+
export const j2ArgumentOfPerigeeRate = (J2, n, Re, a, i, e) => {
|
|
54
|
+
for (const [name, v] of [
|
|
55
|
+
['J2', J2],
|
|
56
|
+
['n', n],
|
|
57
|
+
['Re', Re],
|
|
58
|
+
['a', a],
|
|
59
|
+
['i', i],
|
|
60
|
+
['e', e]
|
|
61
|
+
]) {
|
|
62
|
+
if (!Number.isFinite(v)) {
|
|
63
|
+
throw new TypeError(`${name} must be a finite number. Received: ${v}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (n < 0)
|
|
67
|
+
throw new RangeError(`n must be >= 0. Received: ${n}`);
|
|
68
|
+
if (Re <= 0)
|
|
69
|
+
throw new RangeError(`Re must be > 0. Received: ${Re}`);
|
|
70
|
+
if (a <= 0)
|
|
71
|
+
throw new RangeError(`a must be > 0. Received: ${a}`);
|
|
72
|
+
if (e < 0 || e >= 1)
|
|
73
|
+
throw new RangeError(`e must be in [0, 1]. Received: ${e}`);
|
|
74
|
+
const oneMinusESq = 1 - e * e;
|
|
75
|
+
if (oneMinusESq === 0) {
|
|
76
|
+
throw new RangeError(`(1 - e²) must be non-zero. Received e: ${e}`);
|
|
77
|
+
}
|
|
78
|
+
const cosI = Math.cos(i);
|
|
79
|
+
const cosISq = cosI * cosI;
|
|
80
|
+
const factor = 0.75 * J2 * n * Math.pow(Re / a, 2);
|
|
81
|
+
const denom = Math.pow(oneMinusESq, 2);
|
|
82
|
+
return (factor * (5 * cosISq - 1)) / denom;
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=j2-argument-of-perigee-rate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"j2-argument-of-perigee-rate.js","sourceRoot":"","sources":["../../../src/categories/orbits/j2-argument-of-perigee-rate.ts"],"names":[],"mappings":"AAEA,2BAA2B;AAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,0BAA0B;AAC1B,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,EAAU,EACV,CAAS,EACT,EAAU,EACV,CAAS,EACT,CAAU,EACV,CAAS,EACD,EAAE;IACV,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI;QACtB,CAAC,IAAI,EAAE,EAAE,CAAC;QACV,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,IAAI,EAAE,EAAE,CAAC;QACV,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,GAAG,EAAE,CAAC,CAAC;KACA,EAAE,CAAC;QACX,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,uCAAuC,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,IAAI,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;IAElE,IAAI,EAAE,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC;IAErE,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;IAElE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QACjB,MAAM,IAAI,UAAU,CAAC,kCAAkC,CAAC,EAAE,CAAC,CAAC;IAE9D,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE9B,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,UAAU,CAAC,0CAA0C,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC3B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAEvC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAC7C,CAAC,CAAC"}
|