@interstellar-tools/equations 0.18.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 +1 -1
- 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,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test whether a 3D point lies on the surface of a **triaxial ellipsoid** (within a tolerance).
|
|
3
|
+
*
|
|
4
|
+
* A triaxial ellipsoid centered at the origin with semi-axes ($ a $), ($ b $), ($ c $) aligned to
|
|
5
|
+
* the ($ x $), ($ y $), ($ z $) axes is defined by the implicit surface:
|
|
6
|
+
*
|
|
7
|
+
* $$
|
|
8
|
+
* \frac{x^2}{a^2} + \frac{y^2}{b^2} + \frac{z^2}{c^2} = 1
|
|
9
|
+
* $$
|
|
10
|
+
*
|
|
11
|
+
* This function evaluates the left-hand side and checks whether it is within `eps` of 1.
|
|
12
|
+
*
|
|
13
|
+
* ::: info Notes:
|
|
14
|
+
*
|
|
15
|
+
* - This is a **pure geometric** surface membership test; it does not compute the closest
|
|
16
|
+
* point on the ellipsoid or any geodetic latitude/longitude.
|
|
17
|
+
* - For ellipsoids of revolution (oblate/prolate), you typically have ($ a=b $), but this
|
|
18
|
+
* supports the general triaxial case.
|
|
19
|
+
*
|
|
20
|
+
* :::
|
|
21
|
+
*
|
|
22
|
+
* @param x - X coordinate (finite).
|
|
23
|
+
* @param y - Y coordinate (finite).
|
|
24
|
+
* @param z - Z coordinate (finite).
|
|
25
|
+
* @param a - Semi-axis length along x (finite, > 0).
|
|
26
|
+
* @param b - Semi-axis length along y (finite, > 0).
|
|
27
|
+
* @param c - Semi-axis length along z (finite, > 0).
|
|
28
|
+
* @param eps - Allowed absolute tolerance on the implicit value (finite, >= 0). Defaults to `1e-12`.
|
|
29
|
+
* @returns `true` if the point satisfies the ellipsoid equation within `eps`, otherwise `false`.
|
|
30
|
+
* @throws {TypeError} If any input is not a finite number.
|
|
31
|
+
* @throws {RangeError} If `a <= 0`, `b <= 0`, `c <= 0`, or `eps < 0`.
|
|
32
|
+
* @group Cartography
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* // Ellipsoid with semi-axes a=3, b=2, c=1
|
|
37
|
+
* // Point on +X axis should be on the surface: (x,y,z) = (a,0,0)
|
|
38
|
+
* const onSurface = isOnTriaxialEllipsoidSurface(3, 0, 0, 3, 2, 1);
|
|
39
|
+
* // onSurface === true
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* // Slightly off the surface (use a looser eps if needed)
|
|
45
|
+
* const onSurface = isOnTriaxialEllipsoidSurface(3.0000001, 0, 0, 3, 2, 1, 1e-6);
|
|
46
|
+
* // onSurface === true
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* @see https://en.wikipedia.org/wiki/Ellipsoid Ellipsoid (general definition and implicit equation)
|
|
50
|
+
* @see https://mathworld.wolfram.com/Ellipsoid.html Wolfram MathWorld — Ellipsoid (properties and equations)
|
|
51
|
+
* @see https://en.wikipedia.org/wiki/Triaxial_ellipsoid Triaxial ellipsoid (special case discussion)
|
|
52
|
+
*/
|
|
53
|
+
export const isOnTriaxialEllipsoidSurface = (x, y, z, a, b, c, eps = 1e-12) => {
|
|
54
|
+
for (const [name, v] of [
|
|
55
|
+
['x', x],
|
|
56
|
+
['y', y],
|
|
57
|
+
['z', z],
|
|
58
|
+
['a', a],
|
|
59
|
+
['b', b],
|
|
60
|
+
['c', c],
|
|
61
|
+
['eps', eps]
|
|
62
|
+
]) {
|
|
63
|
+
if (!Number.isFinite(v))
|
|
64
|
+
throw new TypeError(`${name} must be finite. Received: ${v}`);
|
|
65
|
+
}
|
|
66
|
+
if (a <= 0)
|
|
67
|
+
throw new RangeError(`a must be > 0. Received: ${a}`);
|
|
68
|
+
if (b <= 0)
|
|
69
|
+
throw new RangeError(`b must be > 0. Received: ${b}`);
|
|
70
|
+
if (c <= 0)
|
|
71
|
+
throw new RangeError(`c must be > 0. Received: ${c}`);
|
|
72
|
+
if (eps < 0)
|
|
73
|
+
throw new RangeError(`eps must be >= 0. Received: ${eps}`);
|
|
74
|
+
const value = (x * x) / (a * a) + (y * y) / (b * b) + (z * z) / (c * c);
|
|
75
|
+
return Math.abs(value - 1) <= eps;
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=is-on-triaxial-ellipsoid-surface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-on-triaxial-ellipsoid-surface.js","sourceRoot":"","sources":["../../../src/categories/cartography/is-on-triaxial-ellipsoid-surface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS,EACT,GAAG,GAAG,KAAK,EACF,EAAE;IACX,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI;QACtB,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,KAAK,EAAE,GAAG,CAAC;KACJ,EAAE,CAAC;QACX,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YACrB,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,8BAA8B,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;IAElE,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,4BAA4B,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,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAExE,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;AACpC,CAAC,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compute **planetocentric latitude** ($ \varphi_c $) from body-fixed Cartesian coordinates.
|
|
3
|
+
*
|
|
4
|
+
* Planetocentric latitude is defined as the angle between the body's equatorial plane and
|
|
5
|
+
* the radius vector from the body's center of mass to the point:
|
|
6
|
+
*
|
|
7
|
+
* $$
|
|
8
|
+
* \varphi_c = \arctan\!\left(\frac{z}{\sqrt{x^2+y^2}}\right)
|
|
9
|
+
* $$
|
|
10
|
+
*
|
|
11
|
+
* Implementation note:
|
|
12
|
+
* - This uses `atan2(z, hypot(x,y))` for numerical stability and correct quadrant handling.
|
|
13
|
+
*
|
|
14
|
+
* @param x - X coordinate in a body-fixed frame (finite).
|
|
15
|
+
* @param y - Y coordinate in a body-fixed frame (finite).
|
|
16
|
+
* @param z - Z coordinate in a body-fixed frame (finite).
|
|
17
|
+
* @returns Planetocentric latitude ($ \varphi_c $) in **radians** (range: ($[- \pi/2, \pi/2] $)).
|
|
18
|
+
* @throws {TypeError} If any input is not a finite number.
|
|
19
|
+
* @group Cartography
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* // Point directly above the equator on +X axis:
|
|
24
|
+
* const phi = planetocentricLatitude(1, 0, 0);
|
|
25
|
+
* // phi === 0
|
|
26
|
+
*
|
|
27
|
+
* // Point on +Z axis:
|
|
28
|
+
* const northPole = planetocentricLatitude(0, 0, 1);
|
|
29
|
+
* // northPole === Math.PI / 2
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* @see https://en.wikipedia.org/wiki/Planetary_coordinate_system Planetary coordinate system (definitions of planetocentric vs. planetographic latitude)
|
|
33
|
+
* @see https://planetarynames.wr.usgs.gov/Page/Website USGS Planetary Names (planetocentric latitude definition)
|
|
34
|
+
* @see https://pds.nasa.gov/datastandards/pds3/standards/sr/Chapter02.pdf NASA PDS Standards Reference (planetocentric latitude defined as angle to the center-of-mass vector)
|
|
35
|
+
* @see https://naif.jpl.nasa.gov/pub/naif/toolkit_docs/Tutorials/pdf/individual_docs/17_frames_and_coordinate_systems.pdf NAIF SPICE tutorial: Frames and Coordinate Systems (planetocentric/body-fixed frame conventions)
|
|
36
|
+
*/
|
|
37
|
+
export declare const planetocentricLatitude: (x: number, y: number, z: number) => number;
|
|
38
|
+
//# sourceMappingURL=planetocentric-latitude.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planetocentric-latitude.d.ts","sourceRoot":"","sources":["../../../src/categories/cartography/planetocentric-latitude.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,sBAAsB,GACjC,GAAG,MAAM,EACT,GAAG,MAAM,EACT,GAAG,MAAM,KACR,MAaF,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compute **planetocentric latitude** ($ \varphi_c $) from body-fixed Cartesian coordinates.
|
|
3
|
+
*
|
|
4
|
+
* Planetocentric latitude is defined as the angle between the body's equatorial plane and
|
|
5
|
+
* the radius vector from the body's center of mass to the point:
|
|
6
|
+
*
|
|
7
|
+
* $$
|
|
8
|
+
* \varphi_c = \arctan\!\left(\frac{z}{\sqrt{x^2+y^2}}\right)
|
|
9
|
+
* $$
|
|
10
|
+
*
|
|
11
|
+
* Implementation note:
|
|
12
|
+
* - This uses `atan2(z, hypot(x,y))` for numerical stability and correct quadrant handling.
|
|
13
|
+
*
|
|
14
|
+
* @param x - X coordinate in a body-fixed frame (finite).
|
|
15
|
+
* @param y - Y coordinate in a body-fixed frame (finite).
|
|
16
|
+
* @param z - Z coordinate in a body-fixed frame (finite).
|
|
17
|
+
* @returns Planetocentric latitude ($ \varphi_c $) in **radians** (range: ($[- \pi/2, \pi/2] $)).
|
|
18
|
+
* @throws {TypeError} If any input is not a finite number.
|
|
19
|
+
* @group Cartography
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* // Point directly above the equator on +X axis:
|
|
24
|
+
* const phi = planetocentricLatitude(1, 0, 0);
|
|
25
|
+
* // phi === 0
|
|
26
|
+
*
|
|
27
|
+
* // Point on +Z axis:
|
|
28
|
+
* const northPole = planetocentricLatitude(0, 0, 1);
|
|
29
|
+
* // northPole === Math.PI / 2
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* @see https://en.wikipedia.org/wiki/Planetary_coordinate_system Planetary coordinate system (definitions of planetocentric vs. planetographic latitude)
|
|
33
|
+
* @see https://planetarynames.wr.usgs.gov/Page/Website USGS Planetary Names (planetocentric latitude definition)
|
|
34
|
+
* @see https://pds.nasa.gov/datastandards/pds3/standards/sr/Chapter02.pdf NASA PDS Standards Reference (planetocentric latitude defined as angle to the center-of-mass vector)
|
|
35
|
+
* @see https://naif.jpl.nasa.gov/pub/naif/toolkit_docs/Tutorials/pdf/individual_docs/17_frames_and_coordinate_systems.pdf NAIF SPICE tutorial: Frames and Coordinate Systems (planetocentric/body-fixed frame conventions)
|
|
36
|
+
*/
|
|
37
|
+
export const planetocentricLatitude = (x, y, z) => {
|
|
38
|
+
if (!Number.isFinite(x))
|
|
39
|
+
throw new TypeError(`x must be finite. Received: ${x}`);
|
|
40
|
+
if (!Number.isFinite(y))
|
|
41
|
+
throw new TypeError(`y must be finite. Received: ${y}`);
|
|
42
|
+
if (!Number.isFinite(z))
|
|
43
|
+
throw new TypeError(`z must be finite. Received: ${z}`);
|
|
44
|
+
const rxy = Math.hypot(x, y);
|
|
45
|
+
return Math.atan2(z, rxy);
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=planetocentric-latitude.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planetocentric-latitude.js","sourceRoot":"","sources":["../../../src/categories/cartography/planetocentric-latitude.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,CAAS,EACT,CAAS,EACT,CAAS,EACD,EAAE;IACV,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;IAE1D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;IAE1D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;IAE1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE7B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC5B,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Radians } from '@interstellar-tools/types';
|
|
2
|
+
/**
|
|
3
|
+
* Compute planetographic latitude (oblate spheroid) from body-fixed Cartesian coordinates.
|
|
4
|
+
*
|
|
5
|
+
* Given:
|
|
6
|
+
* $$ \tan\varphi_g = \frac{z}{\sqrt{x^2+y^2}}(1-e^2)^{-1}, \qquad e^2=1-\frac{c^2}{a^2} $$
|
|
7
|
+
*
|
|
8
|
+
* This returns:
|
|
9
|
+
* $$ \varphi_g = \arctan\!\left(\frac{z}{\sqrt{x^2+y^2}}\frac{1}{1-e^2}\right) $$
|
|
10
|
+
*
|
|
11
|
+
* @param x X coordinate (finite)
|
|
12
|
+
* @param y Y coordinate (finite)
|
|
13
|
+
* @param z Z coordinate (finite)
|
|
14
|
+
* @param a Equatorial radius (finite, > 0)
|
|
15
|
+
* @param c Polar radius (finite, > 0)
|
|
16
|
+
* @returns Planetographic latitude φg in radians (range: [-π/2, π/2])
|
|
17
|
+
*/
|
|
18
|
+
export declare const planetographicLatitudeOblate: (x: number, y: number, z: number, a: number, c: number) => Radians;
|
|
19
|
+
//# sourceMappingURL=planetographic-latitude-oblate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planetographic-latitude-oblate.d.ts","sourceRoot":"","sources":["../../../src/categories/cartography/planetographic-latitude-oblate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAGzD;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,4BAA4B,GACvC,GAAG,MAAM,EACT,GAAG,MAAM,EACT,GAAG,MAAM,EACT,GAAG,MAAM,EACT,GAAG,MAAM,KACR,OA+BF,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/* node:coverage disable */
|
|
2
|
+
/**
|
|
3
|
+
* Compute planetographic latitude (oblate spheroid) from body-fixed Cartesian coordinates.
|
|
4
|
+
*
|
|
5
|
+
* Given:
|
|
6
|
+
* $$ \tan\varphi_g = \frac{z}{\sqrt{x^2+y^2}}(1-e^2)^{-1}, \qquad e^2=1-\frac{c^2}{a^2} $$
|
|
7
|
+
*
|
|
8
|
+
* This returns:
|
|
9
|
+
* $$ \varphi_g = \arctan\!\left(\frac{z}{\sqrt{x^2+y^2}}\frac{1}{1-e^2}\right) $$
|
|
10
|
+
*
|
|
11
|
+
* @param x X coordinate (finite)
|
|
12
|
+
* @param y Y coordinate (finite)
|
|
13
|
+
* @param z Z coordinate (finite)
|
|
14
|
+
* @param a Equatorial radius (finite, > 0)
|
|
15
|
+
* @param c Polar radius (finite, > 0)
|
|
16
|
+
* @returns Planetographic latitude φg in radians (range: [-π/2, π/2])
|
|
17
|
+
*/
|
|
18
|
+
/* node:coverage enable */
|
|
19
|
+
export const planetographicLatitudeOblate = (x, y, z, a, c) => {
|
|
20
|
+
if (!Number.isFinite(x))
|
|
21
|
+
throw new TypeError(`x must be finite. Received: ${x}`);
|
|
22
|
+
if (!Number.isFinite(y))
|
|
23
|
+
throw new TypeError(`y must be finite. Received: ${y}`);
|
|
24
|
+
if (!Number.isFinite(z))
|
|
25
|
+
throw new TypeError(`z must be finite. Received: ${z}`);
|
|
26
|
+
if (!Number.isFinite(a))
|
|
27
|
+
throw new TypeError(`a must be finite. Received: ${a}`);
|
|
28
|
+
if (!Number.isFinite(c))
|
|
29
|
+
throw new TypeError(`c must be finite. Received: ${c}`);
|
|
30
|
+
if (a <= 0)
|
|
31
|
+
throw new RangeError(`a must be > 0. Received: ${a}`);
|
|
32
|
+
if (c <= 0)
|
|
33
|
+
throw new RangeError(`c must be > 0. Received: ${c}`);
|
|
34
|
+
const rxy = Math.hypot(x, y);
|
|
35
|
+
const e2 = 1 - (c * c) / (a * a);
|
|
36
|
+
const oneMinusE2 = 1 - e2; // = c²/a²
|
|
37
|
+
// Guard against degenerate shapes
|
|
38
|
+
if (oneMinusE2 <= 0) {
|
|
39
|
+
throw new RangeError(`(1 - e²) must be > 0. Computed: ${oneMinusE2}`);
|
|
40
|
+
}
|
|
41
|
+
// φg = atan2(z / (1 - e²), sqrt(x²+y²))
|
|
42
|
+
return Math.atan2(z / oneMinusE2, rxy);
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=planetographic-latitude-oblate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planetographic-latitude-oblate.js","sourceRoot":"","sources":["../../../src/categories/cartography/planetographic-latitude-oblate.ts"],"names":[],"mappings":"AAEA,2BAA2B;AAC3B;;;;;;;;;;;;;;;GAeG;AACH,0BAA0B;AAC1B,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS,EACA,EAAE;IACX,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;IAE1D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;IAE1D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;IAE1D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;IAE1D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;IAE1D,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;IAElE,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;IAElE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU;IAErC,kCAAkC;IAClC,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,UAAU,CAAC,mCAAmC,UAAU,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,wCAAwC;IACxC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,EAAE,GAAG,CAAY,CAAC;AACpD,CAAC,CAAC"}
|
package/dist/categories/gravity/__tests__/gravitational-acceleration-on1-by2.int.spec.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gravitational-acceleration-on1-by2.int.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/gravity/__tests__/gravitational-acceleration-on1-by2.int.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import assert from 'node:assert/strict';
|
|
2
2
|
import test, { describe } from 'node:test';
|
|
3
|
-
import { accelerationOn1By2 } from '../
|
|
4
|
-
import {
|
|
3
|
+
import { accelerationOn1By2 } from '../acceleration-on1-by2';
|
|
4
|
+
import { relClose, vecRelClose } from 'packages/equations/src/__tests__/helpers';
|
|
5
5
|
import { G_SI } from '@interstellar-tools/constants';
|
|
6
|
+
import { norm, scale, sub } from '../../helpers/misc';
|
|
6
7
|
describe('accelerationOn1By2', () => {
|
|
7
8
|
test('1D sanity (+x): ||a|| = G*m2/r² and points +x', () => {
|
|
8
9
|
const G = 1;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gravitational-acceleration-on1-by2.int.spec.js","sourceRoot":"","sources":["../../../../src/categories/gravity/__tests__/gravitational-acceleration-on1-by2.int.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gravitational-force-on1-by2.int.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/gravity/__tests__/gravitational-force-on1-by2.int.spec.ts"],"names":[],"mappings":""}
|
package/dist/{__tests__ → categories/gravity/__tests__}/gravitational-force-on1-by2.int.spec.js
RENAMED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import assert from 'node:assert/strict';
|
|
2
2
|
import test, { describe } from 'node:test';
|
|
3
|
-
import {
|
|
3
|
+
import { relClose, vecRelClose } from 'packages/equations/src/__tests__/helpers';
|
|
4
4
|
import { G_SI } from '@interstellar-tools/constants';
|
|
5
|
-
import { forceOn1By2 } from '../
|
|
5
|
+
import { forceOn1By2 } from '../force-on1-by2';
|
|
6
|
+
import { norm, scale, sub } from '../../helpers/misc';
|
|
6
7
|
describe('forceOn1By2', () => {
|
|
7
8
|
test('1D sanity (+x): |F| = G*m1*m2/r² and points +x', () => {
|
|
8
9
|
const G = 1;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gravitational-force-on1-by2.int.spec.js","sourceRoot":"","sources":["../../../../src/categories/gravity/__tests__/gravitational-force-on1-by2.int.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gravitational-force.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/gravity/__tests__/gravitational-force.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import assert from 'node:assert/strict';
|
|
2
2
|
import test, { describe } from 'node:test';
|
|
3
3
|
import { G_SI } from '@interstellar-tools/constants';
|
|
4
|
-
import {
|
|
5
|
-
import { gravitationalForce } from '../
|
|
4
|
+
import { relClose, vecRelClose } from 'packages/equations/src/__tests__/helpers';
|
|
5
|
+
import { gravitationalForce } from '../gravitational-force';
|
|
6
|
+
import { norm } from '../../helpers/misc';
|
|
6
7
|
describe('gravitationalForce', () => {
|
|
7
8
|
test('computes simple 1D case (+x) with custom G', () => {
|
|
8
9
|
const G = 1; // simple numbers to check algebra
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gravitational-force.spec.js","sourceRoot":"","sources":["../../../../src/categories/gravity/__tests__/gravitational-force.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gravitational-parameters.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/gravity/__tests__/gravitational-parameters.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 { gravitationalParameter } from '../
|
|
3
|
+
import { relClose } from 'packages/equations/src/__tests__/helpers';
|
|
4
|
+
import { gravitationalParameter } from '../gravitational-parameter';
|
|
5
5
|
describe('gravitationalParameter', () => {
|
|
6
6
|
test('computes μ = G(M + m) for simple numbers', () => {
|
|
7
7
|
const G = 10;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gravitational-parameters.spec.js","sourceRoot":"","sources":["../../../../src/categories/gravity/__tests__/gravitational-parameters.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-matrix-3.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/helpers/__tests__/apply-matrix-3.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import test, { describe } from 'node:test';
|
|
3
|
+
import { applyMatrix3 } from '../apply-matrix-3';
|
|
4
|
+
import { vecRelClose } from 'packages/equations/src/__tests__/helpers';
|
|
5
|
+
describe('applyMatrix3', () => {
|
|
6
|
+
test('applies identity matrix (returns same vector)', () => {
|
|
7
|
+
const I = [
|
|
8
|
+
[1, 0, 0],
|
|
9
|
+
[0, 1, 0],
|
|
10
|
+
[0, 0, 1]
|
|
11
|
+
];
|
|
12
|
+
const v = [1, 2, 3];
|
|
13
|
+
const out = applyMatrix3(I, v);
|
|
14
|
+
assert.deepEqual(out, v);
|
|
15
|
+
});
|
|
16
|
+
test('matches the documented example', () => {
|
|
17
|
+
const M = [
|
|
18
|
+
[1, 0, 0],
|
|
19
|
+
[0, 0, -1],
|
|
20
|
+
[0, 1, 0]
|
|
21
|
+
];
|
|
22
|
+
const v = [1, 2, 3];
|
|
23
|
+
const out = applyMatrix3(M, v);
|
|
24
|
+
assert.deepEqual(out, [1, -3, 2]);
|
|
25
|
+
});
|
|
26
|
+
test('handles a general matrix-vector multiplication', () => {
|
|
27
|
+
const M = [
|
|
28
|
+
[2, 3, 5],
|
|
29
|
+
[7, 11, 13],
|
|
30
|
+
[17, 19, 23]
|
|
31
|
+
];
|
|
32
|
+
const v = [29, 31, 37];
|
|
33
|
+
const out = applyMatrix3(M, v);
|
|
34
|
+
const expected = [
|
|
35
|
+
2 * 29 + 3 * 31 + 5 * 37,
|
|
36
|
+
7 * 29 + 11 * 31 + 13 * 37,
|
|
37
|
+
17 * 29 + 19 * 31 + 23 * 37
|
|
38
|
+
];
|
|
39
|
+
assert.deepEqual(out, expected);
|
|
40
|
+
});
|
|
41
|
+
test('is linear: M*(u+v) = M*u + M*v', () => {
|
|
42
|
+
const M = [
|
|
43
|
+
[1.5, -2, 0.25],
|
|
44
|
+
[0, 3, 4],
|
|
45
|
+
[-1, 0.5, 2]
|
|
46
|
+
];
|
|
47
|
+
const u = [1, 2, 3];
|
|
48
|
+
const v = [-4, 5, -6];
|
|
49
|
+
const uPlusV = [u[0] + v[0], u[1] + v[1], u[2] + v[2]];
|
|
50
|
+
const left = applyMatrix3(M, uPlusV);
|
|
51
|
+
const rightU = applyMatrix3(M, u);
|
|
52
|
+
const rightV = applyMatrix3(M, v);
|
|
53
|
+
const right = [
|
|
54
|
+
rightU[0] + rightV[0],
|
|
55
|
+
rightU[1] + rightV[1],
|
|
56
|
+
rightU[2] + rightV[2]
|
|
57
|
+
];
|
|
58
|
+
vecRelClose(left, right);
|
|
59
|
+
});
|
|
60
|
+
test('is homogeneous: M*(k*v) = k*(M*v)', () => {
|
|
61
|
+
const M = [
|
|
62
|
+
[0.1, 0.2, 0.3],
|
|
63
|
+
[0.4, 0.5, 0.6],
|
|
64
|
+
[0.7, 0.8, 0.9]
|
|
65
|
+
];
|
|
66
|
+
const v = [1.1, -2.2, 3.3];
|
|
67
|
+
const k = -7.5;
|
|
68
|
+
const kv = [k * v[0], k * v[1], k * v[2]];
|
|
69
|
+
const left = applyMatrix3(M, kv);
|
|
70
|
+
const right0 = applyMatrix3(M, v);
|
|
71
|
+
const right = [
|
|
72
|
+
k * right0[0],
|
|
73
|
+
k * right0[1],
|
|
74
|
+
k * right0[2]
|
|
75
|
+
];
|
|
76
|
+
vecRelClose(left, right);
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
//# sourceMappingURL=apply-matrix-3.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-matrix-3.spec.js","sourceRoot":"","sources":["../../../../src/categories/helpers/__tests__/apply-matrix-3.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"det-3.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/helpers/__tests__/det-3.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import test, { describe } from 'node:test';
|
|
3
|
+
import { absClose, relClose } from 'packages/equations/src/__tests__/helpers';
|
|
4
|
+
import { det3 } from '../det-3';
|
|
5
|
+
describe('det3', () => {
|
|
6
|
+
test('returns 1 for the identity matrix', () => {
|
|
7
|
+
const I = [
|
|
8
|
+
[1, 0, 0],
|
|
9
|
+
[0, 1, 0],
|
|
10
|
+
[0, 0, 1]
|
|
11
|
+
];
|
|
12
|
+
assert.equal(det3(I), 1);
|
|
13
|
+
});
|
|
14
|
+
test('matches the documented example (det = 1)', () => {
|
|
15
|
+
const A = [
|
|
16
|
+
[1, 2, 3],
|
|
17
|
+
[0, 1, 4],
|
|
18
|
+
[5, 6, 0]
|
|
19
|
+
];
|
|
20
|
+
assert.equal(det3(A), 1);
|
|
21
|
+
});
|
|
22
|
+
test('returns 0 for a singular matrix (dependent rows)', () => {
|
|
23
|
+
const A = [
|
|
24
|
+
[1, 2, 3],
|
|
25
|
+
[2, 4, 6], // 2x row0
|
|
26
|
+
[7, 8, 9]
|
|
27
|
+
];
|
|
28
|
+
assert.equal(det3(A), 0);
|
|
29
|
+
});
|
|
30
|
+
test('changes sign when two rows are swapped', () => {
|
|
31
|
+
const A = [
|
|
32
|
+
[2, 3, 5],
|
|
33
|
+
[7, 11, 13],
|
|
34
|
+
[17, 19, 23]
|
|
35
|
+
];
|
|
36
|
+
const B = [
|
|
37
|
+
[7, 11, 13], // swap row0 and row1
|
|
38
|
+
[2, 3, 5],
|
|
39
|
+
[17, 19, 23]
|
|
40
|
+
];
|
|
41
|
+
const detA = det3(A);
|
|
42
|
+
const detB = det3(B);
|
|
43
|
+
relClose(detB, -detA);
|
|
44
|
+
});
|
|
45
|
+
test('scales by k^3 when the entire matrix is scaled by k', () => {
|
|
46
|
+
const A = [
|
|
47
|
+
[1.5, -2, 0.25],
|
|
48
|
+
[0, 3, 4],
|
|
49
|
+
[-1, 0.5, 2]
|
|
50
|
+
];
|
|
51
|
+
const k = -3.5;
|
|
52
|
+
const kA = [
|
|
53
|
+
[k * A[0][0], k * A[0][1], k * A[0][2]],
|
|
54
|
+
[k * A[1][0], k * A[1][1], k * A[1][2]],
|
|
55
|
+
[k * A[2][0], k * A[2][1], k * A[2][2]]
|
|
56
|
+
];
|
|
57
|
+
const detA = det3(A);
|
|
58
|
+
const detKA = det3(kA);
|
|
59
|
+
relClose(detKA, detA * k * k * k);
|
|
60
|
+
});
|
|
61
|
+
test('returns +1 for a simple rotation matrix about X by 90°', () => {
|
|
62
|
+
// R1(π/2)
|
|
63
|
+
const c = Math.cos(Math.PI / 2);
|
|
64
|
+
const s = Math.sin(Math.PI / 2);
|
|
65
|
+
const R = [
|
|
66
|
+
[1, 0, 0],
|
|
67
|
+
[0, c, -s],
|
|
68
|
+
[0, s, c]
|
|
69
|
+
];
|
|
70
|
+
absClose(det3(R), 1, 1e-12);
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=det-3.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"det-3.spec.js","sourceRoot":"","sources":["../../../../src/categories/helpers/__tests__/det-3.spec.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IACpB,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,GAAkB;YACvB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SACV,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,GAAkB;YACvB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SACV,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,GAAkB;YACvB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU;YACrB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SACV,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,GAAkB;YACvB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;YACX,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACb,CAAC;QAEF,MAAM,CAAC,GAAkB;YACvB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,qBAAqB;YAClC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACb,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAErB,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,GAAkB;YACvB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC;YACf,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;SACb,CAAC;QAEF,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;QAEf,MAAM,EAAE,GAAkB;YACxB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACxC,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAEvB,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAClE,UAAU;QACV,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAEhC,MAAM,CAAC,GAAkB;YACvB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SACV,CAAC;QAEF,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mat-mul3.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/helpers/__tests__/mat-mul3.spec.ts"],"names":[],"mappings":""}
|