@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,46 @@
|
|
|
1
|
+
import { Matrix3x3Type } from '@interstellar-tools/types';
|
|
2
|
+
/**
|
|
3
|
+
* Multiply two **3×3 matrices** (row-major).
|
|
4
|
+
*
|
|
5
|
+
* Computes:
|
|
6
|
+
* $$
|
|
7
|
+
* \mathbf{C} = \mathbf{A}\mathbf{B}
|
|
8
|
+
* $$
|
|
9
|
+
*
|
|
10
|
+
* Using standard matrix multiplication:
|
|
11
|
+
* $$
|
|
12
|
+
* C_{r,c} = \sum_{k=0}^{2} A_{r,k}\,B_{k,c}
|
|
13
|
+
* $$
|
|
14
|
+
*
|
|
15
|
+
* Layout:
|
|
16
|
+
* - Matrices are treated as **row-major**: `M[row][col]`.
|
|
17
|
+
*
|
|
18
|
+
* Common usage:
|
|
19
|
+
* - Compose rotations / direction cosine matrices (DCMs), e.g. `R = R3 * R1 * R3`.
|
|
20
|
+
* - Compose linear transforms in 3D geometry and mapping pipelines.
|
|
21
|
+
*
|
|
22
|
+
* @param A - Left matrix (3×3, row-major).
|
|
23
|
+
* @param B - Right matrix (3×3, row-major).
|
|
24
|
+
* @returns The product matrix `A * B` (3×3, row-major).
|
|
25
|
+
* @group Helpers
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* const A: Matrix3x3Type = [
|
|
30
|
+
* [1, 2, 3],
|
|
31
|
+
* [0, 1, 4],
|
|
32
|
+
* [5, 6, 0]
|
|
33
|
+
* ];
|
|
34
|
+
*
|
|
35
|
+
* const B: Matrix3x3Type = [
|
|
36
|
+
* [-2, 1, 0],
|
|
37
|
+
* [3, 0, 0],
|
|
38
|
+
* [4, 5, 1]
|
|
39
|
+
* ];
|
|
40
|
+
*
|
|
41
|
+
* const C = matMul3(A, B);
|
|
42
|
+
* // C is A*B
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export declare const matMul3: (A: Matrix3x3Type, B: Matrix3x3Type) => Matrix3x3Type;
|
|
46
|
+
//# sourceMappingURL=mat-mul3.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mat-mul3.d.ts","sourceRoot":"","sources":["../../../src/categories/helpers/mat-mul3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,eAAO,MAAM,OAAO,GAAI,GAAG,aAAa,EAAE,GAAG,aAAa,KAAG,aAS5D,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multiply two **3×3 matrices** (row-major).
|
|
3
|
+
*
|
|
4
|
+
* Computes:
|
|
5
|
+
* $$
|
|
6
|
+
* \mathbf{C} = \mathbf{A}\mathbf{B}
|
|
7
|
+
* $$
|
|
8
|
+
*
|
|
9
|
+
* Using standard matrix multiplication:
|
|
10
|
+
* $$
|
|
11
|
+
* C_{r,c} = \sum_{k=0}^{2} A_{r,k}\,B_{k,c}
|
|
12
|
+
* $$
|
|
13
|
+
*
|
|
14
|
+
* Layout:
|
|
15
|
+
* - Matrices are treated as **row-major**: `M[row][col]`.
|
|
16
|
+
*
|
|
17
|
+
* Common usage:
|
|
18
|
+
* - Compose rotations / direction cosine matrices (DCMs), e.g. `R = R3 * R1 * R3`.
|
|
19
|
+
* - Compose linear transforms in 3D geometry and mapping pipelines.
|
|
20
|
+
*
|
|
21
|
+
* @param A - Left matrix (3×3, row-major).
|
|
22
|
+
* @param B - Right matrix (3×3, row-major).
|
|
23
|
+
* @returns The product matrix `A * B` (3×3, row-major).
|
|
24
|
+
* @group Helpers
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* const A: Matrix3x3Type = [
|
|
29
|
+
* [1, 2, 3],
|
|
30
|
+
* [0, 1, 4],
|
|
31
|
+
* [5, 6, 0]
|
|
32
|
+
* ];
|
|
33
|
+
*
|
|
34
|
+
* const B: Matrix3x3Type = [
|
|
35
|
+
* [-2, 1, 0],
|
|
36
|
+
* [3, 0, 0],
|
|
37
|
+
* [4, 5, 1]
|
|
38
|
+
* ];
|
|
39
|
+
*
|
|
40
|
+
* const C = matMul3(A, B);
|
|
41
|
+
* // C is A*B
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export const matMul3 = (A, B) => {
|
|
45
|
+
const m = (r, c) => A[r][0] * B[0][c] + A[r][1] * B[1][c] + A[r][2] * B[2][c];
|
|
46
|
+
return [
|
|
47
|
+
[m(0, 0), m(0, 1), m(0, 2)],
|
|
48
|
+
[m(1, 0), m(1, 1), m(1, 2)],
|
|
49
|
+
[m(2, 0), m(2, 1), m(2, 2)]
|
|
50
|
+
];
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=mat-mul3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mat-mul3.js","sourceRoot":"","sources":["../../../src/categories/helpers/mat-mul3.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAgB,EAAE,CAAgB,EAAiB,EAAE;IAC3E,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CACjC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5D,OAAO;QACL,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACnB,CAAC;AACb,CAAC,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import type { Vector3DTupleType } from '@interstellar-tools/types';
|
|
2
|
+
/**
|
|
3
|
+
* Compute the **Euclidean norm** (length / magnitude) of a 3D vector.
|
|
4
|
+
*
|
|
5
|
+
* $$
|
|
6
|
+
* \lVert \mathbf{v} \rVert = \sqrt{x^2 + y^2 + z^2}
|
|
7
|
+
* $$
|
|
8
|
+
*
|
|
9
|
+
* Uses `Math.hypot` for numerical stability.
|
|
10
|
+
*
|
|
11
|
+
* @param v - 3D vector `[x, y, z]`.
|
|
12
|
+
* @returns Vector magnitude (same units as the components of `v`).
|
|
13
|
+
* @group Helpers
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* norm([3, 4, 12]); // 13
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare const norm: (v: Vector3DTupleType) => number;
|
|
21
|
+
/**
|
|
22
|
+
* Scale a 3D vector by a scalar.
|
|
23
|
+
*
|
|
24
|
+
* Computes:
|
|
25
|
+
* $$
|
|
26
|
+
* s\mathbf{v} = [sx, sy, sz]
|
|
27
|
+
* $$
|
|
28
|
+
*
|
|
29
|
+
* @param v - 3D vector `[x, y, z]`.
|
|
30
|
+
* @param s - Scalar multiplier.
|
|
31
|
+
* @returns Scaled vector `s * v`.
|
|
32
|
+
* @group Helpers
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* scale([1, -2, 3], 10); // [10, -20, 30]
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export declare const scale: (v: Vector3DTupleType, s: number) => Vector3DTupleType;
|
|
40
|
+
/**
|
|
41
|
+
* Subtract two 3D vectors (`a - b`).
|
|
42
|
+
*
|
|
43
|
+
* @param a - Minuend vector.
|
|
44
|
+
* @param b - Subtrahend vector.
|
|
45
|
+
* @returns Difference vector `a - b`.
|
|
46
|
+
* @group Helpers
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```ts
|
|
50
|
+
* sub([3, 2, 1], [1, 1, 1]); // [2, 1, 0]
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare const sub: (a: Vector3DTupleType, b: Vector3DTupleType) => Vector3DTupleType;
|
|
54
|
+
/**
|
|
55
|
+
* Compute the **dot product** of two 3D vectors.
|
|
56
|
+
*
|
|
57
|
+
* $$
|
|
58
|
+
* \mathbf{a}\cdot\mathbf{b} = a_x b_x + a_y b_y + a_z b_z
|
|
59
|
+
* $$
|
|
60
|
+
*
|
|
61
|
+
* @param a - First vector.
|
|
62
|
+
* @param b - Second vector.
|
|
63
|
+
* @returns Dot product (units: product of the input component units).
|
|
64
|
+
* @group Helpers
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```ts
|
|
68
|
+
* dot([1, 2, 3], [4, 5, 6]); // 32
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export declare const dot: (a: Vector3DTupleType, b: Vector3DTupleType) => number;
|
|
72
|
+
/**
|
|
73
|
+
* Normalize an angle to the range **[0, 2π)**.
|
|
74
|
+
*
|
|
75
|
+
* This is commonly used to keep anomalies / angles within a canonical interval.
|
|
76
|
+
*
|
|
77
|
+
* @param x - Angle in radians (or any unit, as long as `TWO_PI` matches that unit).
|
|
78
|
+
* @returns Equivalent angle in the range `[0, 2π)`.
|
|
79
|
+
* @group Helpers
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```ts
|
|
83
|
+
* norm2pi(7); // ~0.7168 (if radians)
|
|
84
|
+
* norm2pi(-Math.PI / 2); // 3π/2
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
export declare const norm2pi: (x: number) => number;
|
|
88
|
+
/**
|
|
89
|
+
* Compute the **Kepler equation residual** for an elliptical orbit:
|
|
90
|
+
*
|
|
91
|
+
* $$
|
|
92
|
+
* E - e\sin(E) = M
|
|
93
|
+
* $$
|
|
94
|
+
*
|
|
95
|
+
* This function returns:
|
|
96
|
+
* $$
|
|
97
|
+
* r(E) = E - e\sin(E) - \mathrm{wrap}_{2\pi}(M)
|
|
98
|
+
* $$
|
|
99
|
+
*
|
|
100
|
+
* where `wrap_{2π}` normalizes `M` into `[0, 2π)` to keep the residual well-behaved.
|
|
101
|
+
*
|
|
102
|
+
* Common usage: root-finding / iteration (Newton–Raphson, Halley, etc.) to solve for
|
|
103
|
+
* eccentric anomaly `E` given eccentricity `e` and mean anomaly `M`.
|
|
104
|
+
*
|
|
105
|
+
* @param E - Eccentric anomaly `E` (radians).
|
|
106
|
+
* @param e - Eccentricity `e` (dimensionless).
|
|
107
|
+
* @param M - Mean anomaly `M` (radians).
|
|
108
|
+
* @returns Residual value `E - e*sin(E) - M_wrapped`.
|
|
109
|
+
* @group Kepler
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```ts
|
|
113
|
+
* // If E solves Kepler's equation, residual(E,e,M) ≈ 0
|
|
114
|
+
* const r = residual(1.0, 0.1, 0.9);
|
|
115
|
+
* ```
|
|
116
|
+
*/
|
|
117
|
+
export declare const residual: (E: number, e: number, M: number) => number;
|
|
118
|
+
//# sourceMappingURL=misc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../../src/categories/helpers/misc.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnE;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,IAAI,GAAI,GAAG,iBAAiB,WAExC,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,KAAK,GAAI,GAAG,iBAAiB,EAAE,GAAG,MAAM,KAAG,iBAEvD,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,GAAG,GACd,GAAG,iBAAiB,EACpB,GAAG,iBAAiB,KACnB,iBAEF,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,GAAG,GAAI,GAAG,iBAAiB,EAAE,GAAG,iBAAiB,WAE7D,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,OAAO,GAAI,GAAG,MAAM,KAAG,MAEnC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,QAAQ,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,WAIvD,CAAC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { TWO_PI } from '@interstellar-tools/constants';
|
|
2
|
+
/**
|
|
3
|
+
* Compute the **Euclidean norm** (length / magnitude) of a 3D vector.
|
|
4
|
+
*
|
|
5
|
+
* $$
|
|
6
|
+
* \lVert \mathbf{v} \rVert = \sqrt{x^2 + y^2 + z^2}
|
|
7
|
+
* $$
|
|
8
|
+
*
|
|
9
|
+
* Uses `Math.hypot` for numerical stability.
|
|
10
|
+
*
|
|
11
|
+
* @param v - 3D vector `[x, y, z]`.
|
|
12
|
+
* @returns Vector magnitude (same units as the components of `v`).
|
|
13
|
+
* @group Helpers
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* norm([3, 4, 12]); // 13
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export const norm = (v) => {
|
|
21
|
+
return Math.hypot(v[0], v[1], v[2]);
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Scale a 3D vector by a scalar.
|
|
25
|
+
*
|
|
26
|
+
* Computes:
|
|
27
|
+
* $$
|
|
28
|
+
* s\mathbf{v} = [sx, sy, sz]
|
|
29
|
+
* $$
|
|
30
|
+
*
|
|
31
|
+
* @param v - 3D vector `[x, y, z]`.
|
|
32
|
+
* @param s - Scalar multiplier.
|
|
33
|
+
* @returns Scaled vector `s * v`.
|
|
34
|
+
* @group Helpers
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts
|
|
38
|
+
* scale([1, -2, 3], 10); // [10, -20, 30]
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export const scale = (v, s) => {
|
|
42
|
+
return [v[0] * s, v[1] * s, v[2] * s];
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Subtract two 3D vectors (`a - b`).
|
|
46
|
+
*
|
|
47
|
+
* @param a - Minuend vector.
|
|
48
|
+
* @param b - Subtrahend vector.
|
|
49
|
+
* @returns Difference vector `a - b`.
|
|
50
|
+
* @group Helpers
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```ts
|
|
54
|
+
* sub([3, 2, 1], [1, 1, 1]); // [2, 1, 0]
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export const sub = (a, b) => {
|
|
58
|
+
return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Compute the **dot product** of two 3D vectors.
|
|
62
|
+
*
|
|
63
|
+
* $$
|
|
64
|
+
* \mathbf{a}\cdot\mathbf{b} = a_x b_x + a_y b_y + a_z b_z
|
|
65
|
+
* $$
|
|
66
|
+
*
|
|
67
|
+
* @param a - First vector.
|
|
68
|
+
* @param b - Second vector.
|
|
69
|
+
* @returns Dot product (units: product of the input component units).
|
|
70
|
+
* @group Helpers
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```ts
|
|
74
|
+
* dot([1, 2, 3], [4, 5, 6]); // 32
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export const dot = (a, b) => {
|
|
78
|
+
return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Normalize an angle to the range **[0, 2π)**.
|
|
82
|
+
*
|
|
83
|
+
* This is commonly used to keep anomalies / angles within a canonical interval.
|
|
84
|
+
*
|
|
85
|
+
* @param x - Angle in radians (or any unit, as long as `TWO_PI` matches that unit).
|
|
86
|
+
* @returns Equivalent angle in the range `[0, 2π)`.
|
|
87
|
+
* @group Helpers
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```ts
|
|
91
|
+
* norm2pi(7); // ~0.7168 (if radians)
|
|
92
|
+
* norm2pi(-Math.PI / 2); // 3π/2
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
export const norm2pi = (x) => {
|
|
96
|
+
return ((x % TWO_PI) + TWO_PI) % TWO_PI;
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* Compute the **Kepler equation residual** for an elliptical orbit:
|
|
100
|
+
*
|
|
101
|
+
* $$
|
|
102
|
+
* E - e\sin(E) = M
|
|
103
|
+
* $$
|
|
104
|
+
*
|
|
105
|
+
* This function returns:
|
|
106
|
+
* $$
|
|
107
|
+
* r(E) = E - e\sin(E) - \mathrm{wrap}_{2\pi}(M)
|
|
108
|
+
* $$
|
|
109
|
+
*
|
|
110
|
+
* where `wrap_{2π}` normalizes `M` into `[0, 2π)` to keep the residual well-behaved.
|
|
111
|
+
*
|
|
112
|
+
* Common usage: root-finding / iteration (Newton–Raphson, Halley, etc.) to solve for
|
|
113
|
+
* eccentric anomaly `E` given eccentricity `e` and mean anomaly `M`.
|
|
114
|
+
*
|
|
115
|
+
* @param E - Eccentric anomaly `E` (radians).
|
|
116
|
+
* @param e - Eccentricity `e` (dimensionless).
|
|
117
|
+
* @param M - Mean anomaly `M` (radians).
|
|
118
|
+
* @returns Residual value `E - e*sin(E) - M_wrapped`.
|
|
119
|
+
* @group Kepler
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```ts
|
|
123
|
+
* // If E solves Kepler's equation, residual(E,e,M) ≈ 0
|
|
124
|
+
* const r = residual(1.0, 0.1, 0.9);
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
export const residual = (E, e, M) => {
|
|
128
|
+
const Mm = norm2pi(M);
|
|
129
|
+
return E - e * Math.sin(E) - Mm;
|
|
130
|
+
};
|
|
131
|
+
//# sourceMappingURL=misc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"misc.js","sourceRoot":"","sources":["../../../src/categories/helpers/misc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAGvD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAoB,EAAE,EAAE;IAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAoB,EAAE,CAAS,EAAqB,EAAE;IAC1E,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CACjB,CAAoB,EACpB,CAAoB,EACD,EAAE;IACrB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAoB,EAAE,CAAoB,EAAE,EAAE;IAChE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAS,EAAU,EAAE;IAC3C,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC1C,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,EAAE;IAC1D,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAEtB,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAClC,CAAC,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { Radians } from '@interstellar-tools/types';
|
|
2
|
+
/**
|
|
3
|
+
* Convert **degrees → radians**.
|
|
4
|
+
*
|
|
5
|
+
* Uses the standard relation:
|
|
6
|
+
* $$
|
|
7
|
+
* \pi\ \text{rad} = 180^\circ
|
|
8
|
+
* $$
|
|
9
|
+
*
|
|
10
|
+
* @param deg - Angle in **degrees**.
|
|
11
|
+
* @returns Angle in **radians** (branded as {@link Radians}).
|
|
12
|
+
* @group Helpers
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* const halfTurn = toRad(180); // π (Radians)
|
|
17
|
+
* const rightAngle = toRad(90); // π/2 (Radians)
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare const toRad: (deg: number) => Radians;
|
|
21
|
+
/**
|
|
22
|
+
* Brand a numeric value as {@link Radians}.
|
|
23
|
+
*
|
|
24
|
+
* This is a **type-level** helper only: it does not change the runtime value, but it
|
|
25
|
+
* prevents accidentally mixing degree-values with radian-values at compile time.
|
|
26
|
+
*
|
|
27
|
+
* Use this when you already have a value in radians (e.g., from `Math.atan2`, `Math.PI`,
|
|
28
|
+
* or your own radian-based computations) and want to pass it to APIs that require `Radians`.
|
|
29
|
+
*
|
|
30
|
+
* @param x - Angle value already expressed in **radians**.
|
|
31
|
+
* @returns The same numeric value, branded as {@link Radians}.
|
|
32
|
+
* @group Helpers
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* const theta = rad(Math.PI / 3);
|
|
37
|
+
* // theta has type Radians
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export declare const rad: (x: number) => Radians;
|
|
41
|
+
//# sourceMappingURL=radians.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radians.d.ts","sourceRoot":"","sources":["../../../src/categories/helpers/radians.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,KAAK,GAAI,KAAK,MAAM,KAAgC,OAAO,CAAC;AAEzE;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,GAAG,GAAI,GAAG,MAAM,KAAG,OAAuB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert **degrees → radians**.
|
|
3
|
+
*
|
|
4
|
+
* Uses the standard relation:
|
|
5
|
+
* $$
|
|
6
|
+
* \pi\ \text{rad} = 180^\circ
|
|
7
|
+
* $$
|
|
8
|
+
*
|
|
9
|
+
* @param deg - Angle in **degrees**.
|
|
10
|
+
* @returns Angle in **radians** (branded as {@link Radians}).
|
|
11
|
+
* @group Helpers
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* const halfTurn = toRad(180); // π (Radians)
|
|
16
|
+
* const rightAngle = toRad(90); // π/2 (Radians)
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export const toRad = (deg) => ((deg * Math.PI) / 180);
|
|
20
|
+
/**
|
|
21
|
+
* Brand a numeric value as {@link Radians}.
|
|
22
|
+
*
|
|
23
|
+
* This is a **type-level** helper only: it does not change the runtime value, but it
|
|
24
|
+
* prevents accidentally mixing degree-values with radian-values at compile time.
|
|
25
|
+
*
|
|
26
|
+
* Use this when you already have a value in radians (e.g., from `Math.atan2`, `Math.PI`,
|
|
27
|
+
* or your own radian-based computations) and want to pass it to APIs that require `Radians`.
|
|
28
|
+
*
|
|
29
|
+
* @param x - Angle value already expressed in **radians**.
|
|
30
|
+
* @returns The same numeric value, branded as {@link Radians}.
|
|
31
|
+
* @group Helpers
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* const theta = rad(Math.PI / 3);
|
|
36
|
+
* // theta has type Radians
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export const rad = (x) => x;
|
|
40
|
+
//# sourceMappingURL=radians.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radians.js","sourceRoot":"","sources":["../../../src/categories/helpers/radians.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAY,CAAC;AAEzE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC,CAAY,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Matrix3x3Type, Radians } from '@interstellar-tools/types';
|
|
2
|
+
/**
|
|
3
|
+
* Construct a **right-handed rotation matrix about the x-axis** (often written **R₁**).
|
|
4
|
+
*
|
|
5
|
+
* This returns the 3×3 direction cosine matrix (DCM) for an active rotation by angle `theta`
|
|
6
|
+
* around the **+X** axis, using the common aerospace convention:
|
|
7
|
+
*
|
|
8
|
+
* $$
|
|
9
|
+
* \mathbf{R}_1(\theta)=
|
|
10
|
+
* \begin{bmatrix}
|
|
11
|
+
* 1 & 0 & 0 \\
|
|
12
|
+
* 0 & \cos\theta & -\sin\theta \\
|
|
13
|
+
* 0 & \sin\theta & \cos\theta
|
|
14
|
+
* \end{bmatrix}
|
|
15
|
+
* $$
|
|
16
|
+
*
|
|
17
|
+
* ::: info Notes:
|
|
18
|
+
*
|
|
19
|
+
* - `theta` is in **radians**.
|
|
20
|
+
* - Matrix layout is **row-major**: `M[row][col]`.
|
|
21
|
+
* - Useful for composing 3-1-3 / 3-2-1 sequences (e.g., IAU body orientation) and for
|
|
22
|
+
* general 3D frame transforms in mapping pipelines.
|
|
23
|
+
*
|
|
24
|
+
* :::
|
|
25
|
+
*
|
|
26
|
+
* @param theta - Rotation angle ($ \theta $) in **radians** (finite).
|
|
27
|
+
* @returns 3×3 rotation matrix ($ \mathbf{R}_1(\theta) $) (row-major).
|
|
28
|
+
* @throws {TypeError} If `theta` is not a finite number.
|
|
29
|
+
* @group Helpers
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* // Rotate a vector about +X by 90°:
|
|
34
|
+
* const R = rot1(Math.PI / 2);
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare const rot1: (theta: Radians) => Matrix3x3Type;
|
|
38
|
+
//# sourceMappingURL=rot-1.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rot-1.d.ts","sourceRoot":"","sources":["../../../src/categories/helpers/rot-1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,eAAO,MAAM,IAAI,GAAI,OAAO,OAAO,KAAG,aAYrC,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Construct a **right-handed rotation matrix about the x-axis** (often written **R₁**).
|
|
3
|
+
*
|
|
4
|
+
* This returns the 3×3 direction cosine matrix (DCM) for an active rotation by angle `theta`
|
|
5
|
+
* around the **+X** axis, using the common aerospace convention:
|
|
6
|
+
*
|
|
7
|
+
* $$
|
|
8
|
+
* \mathbf{R}_1(\theta)=
|
|
9
|
+
* \begin{bmatrix}
|
|
10
|
+
* 1 & 0 & 0 \\
|
|
11
|
+
* 0 & \cos\theta & -\sin\theta \\
|
|
12
|
+
* 0 & \sin\theta & \cos\theta
|
|
13
|
+
* \end{bmatrix}
|
|
14
|
+
* $$
|
|
15
|
+
*
|
|
16
|
+
* ::: info Notes:
|
|
17
|
+
*
|
|
18
|
+
* - `theta` is in **radians**.
|
|
19
|
+
* - Matrix layout is **row-major**: `M[row][col]`.
|
|
20
|
+
* - Useful for composing 3-1-3 / 3-2-1 sequences (e.g., IAU body orientation) and for
|
|
21
|
+
* general 3D frame transforms in mapping pipelines.
|
|
22
|
+
*
|
|
23
|
+
* :::
|
|
24
|
+
*
|
|
25
|
+
* @param theta - Rotation angle ($ \theta $) in **radians** (finite).
|
|
26
|
+
* @returns 3×3 rotation matrix ($ \mathbf{R}_1(\theta) $) (row-major).
|
|
27
|
+
* @throws {TypeError} If `theta` is not a finite number.
|
|
28
|
+
* @group Helpers
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* // Rotate a vector about +X by 90°:
|
|
33
|
+
* const R = rot1(Math.PI / 2);
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export const rot1 = (theta) => {
|
|
37
|
+
if (!Number.isFinite(theta))
|
|
38
|
+
throw new TypeError(`theta must be finite. Received: ${theta}`);
|
|
39
|
+
const c = Math.cos(theta);
|
|
40
|
+
const s = Math.sin(theta);
|
|
41
|
+
return [
|
|
42
|
+
[1, 0, 0],
|
|
43
|
+
[0, c, -s],
|
|
44
|
+
[0, s, c]
|
|
45
|
+
];
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=rot-1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rot-1.js","sourceRoot":"","sources":["../../../src/categories/helpers/rot-1.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAc,EAAiB,EAAE;IACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QACzB,MAAM,IAAI,SAAS,CAAC,mCAAmC,KAAK,EAAE,CAAC,CAAC;IAElE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAE1B,OAAO;QACL,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KACD,CAAC;AACb,CAAC,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Matrix3x3Type, Radians } from '@interstellar-tools/types';
|
|
2
|
+
/**
|
|
3
|
+
* Construct a **right-handed rotation matrix about the z-axis** (often written **R₃**).
|
|
4
|
+
*
|
|
5
|
+
* This returns the 3×3 direction cosine matrix (DCM) for an active rotation by angle `theta`
|
|
6
|
+
* around the **+Z** axis:
|
|
7
|
+
*
|
|
8
|
+
* $$
|
|
9
|
+
* \mathbf{R}_3(\theta)=
|
|
10
|
+
* \begin{bmatrix}
|
|
11
|
+
* \cos\theta & -\sin\theta & 0 \\
|
|
12
|
+
* \sin\theta & \cos\theta & 0 \\
|
|
13
|
+
* 0 & 0 & 1
|
|
14
|
+
* \end{bmatrix}
|
|
15
|
+
* $$
|
|
16
|
+
*
|
|
17
|
+
* ::: info Notes:
|
|
18
|
+
*
|
|
19
|
+
* - `theta` is in **radians**.
|
|
20
|
+
* - Matrix layout is **row-major**: `M[row][col]`.
|
|
21
|
+
* - Common in 3-1-3 / 3-2-1 rotation sequences (e.g., IAU pole + prime meridian rotations)
|
|
22
|
+
* and general 3D coordinate transforms.
|
|
23
|
+
*
|
|
24
|
+
* :::
|
|
25
|
+
*
|
|
26
|
+
* @param theta - Rotation angle ($ \theta $) in **radians** (finite).
|
|
27
|
+
* @returns 3×3 rotation matrix ($ \mathbf{R}_3(\theta) $) (row-major).
|
|
28
|
+
* @throws {TypeError} If `theta` is not a finite number.
|
|
29
|
+
* @group Helpers
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* // Rotate about +Z by 90°:
|
|
34
|
+
* const R = rot3(Math.PI / 2);
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare const rot3: (theta: Radians) => Matrix3x3Type;
|
|
38
|
+
//# sourceMappingURL=rot-3.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rot-3.d.ts","sourceRoot":"","sources":["../../../src/categories/helpers/rot-3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,eAAO,MAAM,IAAI,GAAI,OAAO,OAAO,KAAG,aAYrC,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Construct a **right-handed rotation matrix about the z-axis** (often written **R₃**).
|
|
3
|
+
*
|
|
4
|
+
* This returns the 3×3 direction cosine matrix (DCM) for an active rotation by angle `theta`
|
|
5
|
+
* around the **+Z** axis:
|
|
6
|
+
*
|
|
7
|
+
* $$
|
|
8
|
+
* \mathbf{R}_3(\theta)=
|
|
9
|
+
* \begin{bmatrix}
|
|
10
|
+
* \cos\theta & -\sin\theta & 0 \\
|
|
11
|
+
* \sin\theta & \cos\theta & 0 \\
|
|
12
|
+
* 0 & 0 & 1
|
|
13
|
+
* \end{bmatrix}
|
|
14
|
+
* $$
|
|
15
|
+
*
|
|
16
|
+
* ::: info Notes:
|
|
17
|
+
*
|
|
18
|
+
* - `theta` is in **radians**.
|
|
19
|
+
* - Matrix layout is **row-major**: `M[row][col]`.
|
|
20
|
+
* - Common in 3-1-3 / 3-2-1 rotation sequences (e.g., IAU pole + prime meridian rotations)
|
|
21
|
+
* and general 3D coordinate transforms.
|
|
22
|
+
*
|
|
23
|
+
* :::
|
|
24
|
+
*
|
|
25
|
+
* @param theta - Rotation angle ($ \theta $) in **radians** (finite).
|
|
26
|
+
* @returns 3×3 rotation matrix ($ \mathbf{R}_3(\theta) $) (row-major).
|
|
27
|
+
* @throws {TypeError} If `theta` is not a finite number.
|
|
28
|
+
* @group Helpers
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* // Rotate about +Z by 90°:
|
|
33
|
+
* const R = rot3(Math.PI / 2);
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export const rot3 = (theta) => {
|
|
37
|
+
if (!Number.isFinite(theta))
|
|
38
|
+
throw new TypeError(`theta must be finite. Received: ${theta}`);
|
|
39
|
+
const c = Math.cos(theta);
|
|
40
|
+
const s = Math.sin(theta);
|
|
41
|
+
return [
|
|
42
|
+
[c, -s, 0],
|
|
43
|
+
[s, c, 0],
|
|
44
|
+
[0, 0, 1]
|
|
45
|
+
];
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=rot-3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rot-3.js","sourceRoot":"","sources":["../../../src/categories/helpers/rot-3.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAc,EAAiB,EAAE;IACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QACzB,MAAM,IAAI,SAAS,CAAC,mCAAmC,KAAK,EAAE,CAAC,CAAC;IAElE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAE1B,OAAO;QACL,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KACD,CAAC;AACb,CAAC,CAAC"}
|