@interstellar-tools/equations 0.49.0 → 0.50.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/categories/angle/compute-angle.d.ts +1 -1
- package/dist/categories/angle/compute-angle.js +4 -4
- package/dist/categories/angle/compute-angle.js.map +1 -1
- package/dist/categories/anomalies/mean-to-eccentric-anomaly.d.ts +1 -1
- package/dist/categories/anomalies/mean-to-eccentric-anomaly.js +4 -4
- package/dist/categories/anomalies/mean-to-eccentric-anomaly.js.map +1 -1
- package/dist/categories/anomalies/true-to-mean-anomaly.d.ts +1 -1
- package/dist/categories/anomalies/true-to-mean-anomaly.js +2 -2
- package/dist/categories/anomalies/true-to-mean-anomaly.js.map +1 -1
- package/dist/categories/cartography/body-fixed-from-inertial-dcm-iau.js +3 -3
- package/dist/categories/cartography/body-fixed-from-inertial-dcm-iau.js.map +1 -1
- package/dist/categories/gravity/acceleration-on1-by2.js +1 -1
- package/dist/categories/gravity/acceleration-on1-by2.js.map +1 -1
- package/dist/categories/gravity/force-on1-by2.js +1 -1
- package/dist/categories/gravity/force-on1-by2.js.map +1 -1
- package/dist/categories/kepler/solve-kepler-high-eccentricity.d.ts +1 -1
- package/dist/categories/kepler/solve-kepler-high-eccentricity.js +2 -2
- package/dist/categories/kepler/solve-kepler-high-eccentricity.js.map +1 -1
- package/dist/categories/kepler/solve-kepler.d.ts +1 -1
- package/dist/categories/kepler/solve-kepler.js +5 -5
- package/dist/categories/kepler/solve-kepler.js.map +1 -1
- package/dist/index.d.ts +49 -49
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +49 -49
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
- package/dist/__tests__/helpers/index.d.ts +0 -9
- package/dist/__tests__/helpers/index.d.ts.map +0 -1
- package/dist/__tests__/helpers/index.js +0 -45
- package/dist/__tests__/helpers/index.js.map +0 -1
- package/dist/categories/angle/__tests__/compute-angle.int.spec.d.ts +0 -2
- package/dist/categories/angle/__tests__/compute-angle.int.spec.d.ts.map +0 -1
- package/dist/categories/angle/__tests__/compute-angle.int.spec.js +0 -62
- package/dist/categories/angle/__tests__/compute-angle.int.spec.js.map +0 -1
- package/dist/categories/angle/__tests__/wrap-angle.spec.d.ts +0 -2
- package/dist/categories/angle/__tests__/wrap-angle.spec.d.ts.map +0 -1
- package/dist/categories/angle/__tests__/wrap-angle.spec.js +0 -60
- package/dist/categories/angle/__tests__/wrap-angle.spec.js.map +0 -1
- package/dist/categories/anomalies/__tests__/eccentric-to-true-anomaly.spec.d.ts +0 -2
- package/dist/categories/anomalies/__tests__/eccentric-to-true-anomaly.spec.d.ts.map +0 -1
- package/dist/categories/anomalies/__tests__/eccentric-to-true-anomaly.spec.js +0 -33
- package/dist/categories/anomalies/__tests__/eccentric-to-true-anomaly.spec.js.map +0 -1
- package/dist/categories/anomalies/__tests__/mean-to-eccentric-anomaly.spec.d.ts +0 -2
- package/dist/categories/anomalies/__tests__/mean-to-eccentric-anomaly.spec.d.ts.map +0 -1
- package/dist/categories/anomalies/__tests__/mean-to-eccentric-anomaly.spec.js +0 -197
- package/dist/categories/anomalies/__tests__/mean-to-eccentric-anomaly.spec.js.map +0 -1
- package/dist/categories/anomalies/__tests__/true-to-mean-anomaly.spec.d.ts +0 -2
- package/dist/categories/anomalies/__tests__/true-to-mean-anomaly.spec.d.ts.map +0 -1
- package/dist/categories/anomalies/__tests__/true-to-mean-anomaly.spec.js +0 -46
- package/dist/categories/anomalies/__tests__/true-to-mean-anomaly.spec.js.map +0 -1
- package/dist/categories/cartography/__tests__/body-fixed-from-inertial-dcm-iau.int.spec.d.ts +0 -2
- package/dist/categories/cartography/__tests__/body-fixed-from-inertial-dcm-iau.int.spec.d.ts.map +0 -1
- package/dist/categories/cartography/__tests__/body-fixed-from-inertial-dcm-iau.int.spec.js +0 -56
- package/dist/categories/cartography/__tests__/body-fixed-from-inertial-dcm-iau.int.spec.js.map +0 -1
- package/dist/categories/cartography/__tests__/eccentricity-squared-oblate-spheroid.spec.d.ts +0 -2
- package/dist/categories/cartography/__tests__/eccentricity-squared-oblate-spheroid.spec.d.ts.map +0 -1
- package/dist/categories/cartography/__tests__/eccentricity-squared-oblate-spheroid.spec.js +0 -60
- package/dist/categories/cartography/__tests__/eccentricity-squared-oblate-spheroid.spec.js.map +0 -1
- package/dist/categories/cartography/__tests__/flattening-oblate-spheroid.spec.d.ts +0 -2
- package/dist/categories/cartography/__tests__/flattening-oblate-spheroid.spec.d.ts.map +0 -1
- package/dist/categories/cartography/__tests__/flattening-oblate-spheroid.spec.js +0 -60
- package/dist/categories/cartography/__tests__/flattening-oblate-spheroid.spec.js.map +0 -1
- package/dist/categories/cartography/__tests__/is-on-triaxial-ellipsoid-surface.spec.d.ts +0 -2
- package/dist/categories/cartography/__tests__/is-on-triaxial-ellipsoid-surface.spec.d.ts.map +0 -1
- package/dist/categories/cartography/__tests__/is-on-triaxial-ellipsoid-surface.spec.js +0 -73
- package/dist/categories/cartography/__tests__/is-on-triaxial-ellipsoid-surface.spec.js.map +0 -1
- package/dist/categories/cartography/__tests__/planetocentric-latitude.spec.d.ts +0 -2
- package/dist/categories/cartography/__tests__/planetocentric-latitude.spec.d.ts.map +0 -1
- package/dist/categories/cartography/__tests__/planetocentric-latitude.spec.js +0 -69
- package/dist/categories/cartography/__tests__/planetocentric-latitude.spec.js.map +0 -1
- package/dist/categories/cartography/__tests__/planetographic-latitude-oblate.spec.d.ts +0 -2
- package/dist/categories/cartography/__tests__/planetographic-latitude-oblate.spec.d.ts.map +0 -1
- package/dist/categories/cartography/__tests__/planetographic-latitude-oblate.spec.js +0 -103
- package/dist/categories/cartography/__tests__/planetographic-latitude-oblate.spec.js.map +0 -1
- package/dist/categories/gravity/__tests__/gravitational-acceleration-on1-by2.int.spec.d.ts +0 -2
- package/dist/categories/gravity/__tests__/gravitational-acceleration-on1-by2.int.spec.d.ts.map +0 -1
- package/dist/categories/gravity/__tests__/gravitational-acceleration-on1-by2.int.spec.js +0 -87
- package/dist/categories/gravity/__tests__/gravitational-acceleration-on1-by2.int.spec.js.map +0 -1
- package/dist/categories/gravity/__tests__/gravitational-force-on1-by2.int.spec.d.ts +0 -2
- package/dist/categories/gravity/__tests__/gravitational-force-on1-by2.int.spec.d.ts.map +0 -1
- package/dist/categories/gravity/__tests__/gravitational-force-on1-by2.int.spec.js +0 -107
- package/dist/categories/gravity/__tests__/gravitational-force-on1-by2.int.spec.js.map +0 -1
- package/dist/categories/gravity/__tests__/gravitational-force.spec.d.ts +0 -2
- package/dist/categories/gravity/__tests__/gravitational-force.spec.d.ts.map +0 -1
- package/dist/categories/gravity/__tests__/gravitational-force.spec.js +0 -106
- package/dist/categories/gravity/__tests__/gravitational-force.spec.js.map +0 -1
- package/dist/categories/gravity/__tests__/gravitational-parameters.spec.d.ts +0 -2
- package/dist/categories/gravity/__tests__/gravitational-parameters.spec.d.ts.map +0 -1
- package/dist/categories/gravity/__tests__/gravitational-parameters.spec.js +0 -75
- package/dist/categories/gravity/__tests__/gravitational-parameters.spec.js.map +0 -1
- package/dist/categories/helpers/__tests__/apply-matrix-3.spec.d.ts +0 -2
- package/dist/categories/helpers/__tests__/apply-matrix-3.spec.d.ts.map +0 -1
- package/dist/categories/helpers/__tests__/apply-matrix-3.spec.js +0 -79
- package/dist/categories/helpers/__tests__/apply-matrix-3.spec.js.map +0 -1
- package/dist/categories/helpers/__tests__/det-3.spec.d.ts +0 -2
- package/dist/categories/helpers/__tests__/det-3.spec.d.ts.map +0 -1
- package/dist/categories/helpers/__tests__/det-3.spec.js +0 -73
- package/dist/categories/helpers/__tests__/det-3.spec.js.map +0 -1
- package/dist/categories/helpers/__tests__/mat-mul3.spec.d.ts +0 -2
- package/dist/categories/helpers/__tests__/mat-mul3.spec.d.ts.map +0 -1
- package/dist/categories/helpers/__tests__/mat-mul3.spec.js +0 -86
- package/dist/categories/helpers/__tests__/mat-mul3.spec.js.map +0 -1
- package/dist/categories/helpers/__tests__/misc.spec.d.ts +0 -2
- package/dist/categories/helpers/__tests__/misc.spec.d.ts.map +0 -1
- package/dist/categories/helpers/__tests__/misc.spec.js +0 -101
- package/dist/categories/helpers/__tests__/misc.spec.js.map +0 -1
- package/dist/categories/helpers/__tests__/radians.spec.d.ts +0 -2
- package/dist/categories/helpers/__tests__/radians.spec.d.ts.map +0 -1
- package/dist/categories/helpers/__tests__/radians.spec.js +0 -37
- package/dist/categories/helpers/__tests__/radians.spec.js.map +0 -1
- package/dist/categories/helpers/__tests__/rot-1.spec.d.ts +0 -2
- package/dist/categories/helpers/__tests__/rot-1.spec.d.ts.map +0 -1
- package/dist/categories/helpers/__tests__/rot-1.spec.js +0 -59
- package/dist/categories/helpers/__tests__/rot-1.spec.js.map +0 -1
- package/dist/categories/helpers/__tests__/rot-3.spec.d.ts +0 -2
- package/dist/categories/helpers/__tests__/rot-3.spec.d.ts.map +0 -1
- package/dist/categories/helpers/__tests__/rot-3.spec.js +0 -65
- package/dist/categories/helpers/__tests__/rot-3.spec.js.map +0 -1
- package/dist/categories/kepler/__tests__/solve-kepler-bisection.spec.d.ts +0 -2
- package/dist/categories/kepler/__tests__/solve-kepler-bisection.spec.d.ts.map +0 -1
- package/dist/categories/kepler/__tests__/solve-kepler-bisection.spec.js +0 -86
- package/dist/categories/kepler/__tests__/solve-kepler-bisection.spec.js.map +0 -1
- package/dist/categories/kepler/__tests__/solve-kepler-high-eccentricity.spec.d.ts +0 -2
- package/dist/categories/kepler/__tests__/solve-kepler-high-eccentricity.spec.d.ts.map +0 -1
- package/dist/categories/kepler/__tests__/solve-kepler-high-eccentricity.spec.js +0 -81
- package/dist/categories/kepler/__tests__/solve-kepler-high-eccentricity.spec.js.map +0 -1
- package/dist/categories/kepler/__tests__/solve-kepler-newton-raphson.spec.d.ts +0 -2
- package/dist/categories/kepler/__tests__/solve-kepler-newton-raphson.spec.d.ts.map +0 -1
- package/dist/categories/kepler/__tests__/solve-kepler-newton-raphson.spec.js +0 -50
- package/dist/categories/kepler/__tests__/solve-kepler-newton-raphson.spec.js.map +0 -1
- package/dist/categories/kepler/__tests__/solve-kepler.int.spec.d.ts +0 -2
- package/dist/categories/kepler/__tests__/solve-kepler.int.spec.d.ts.map +0 -1
- package/dist/categories/kepler/__tests__/solve-kepler.int.spec.js +0 -76
- package/dist/categories/kepler/__tests__/solve-kepler.int.spec.js.map +0 -1
- package/dist/categories/manoeuvres/__tests__/combine-burns-delta-v.spec.d.ts +0 -2
- package/dist/categories/manoeuvres/__tests__/combine-burns-delta-v.spec.d.ts.map +0 -1
- package/dist/categories/manoeuvres/__tests__/combine-burns-delta-v.spec.js +0 -103
- package/dist/categories/manoeuvres/__tests__/combine-burns-delta-v.spec.js.map +0 -1
- package/dist/categories/manoeuvres/__tests__/gravity-assist-turning-angle.spec.d.ts +0 -2
- package/dist/categories/manoeuvres/__tests__/gravity-assist-turning-angle.spec.d.ts.map +0 -1
- package/dist/categories/manoeuvres/__tests__/gravity-assist-turning-angle.spec.js +0 -89
- package/dist/categories/manoeuvres/__tests__/gravity-assist-turning-angle.spec.js.map +0 -1
- package/dist/categories/manoeuvres/__tests__/hohmann-transfer.spec.d.ts +0 -2
- package/dist/categories/manoeuvres/__tests__/hohmann-transfer.spec.d.ts.map +0 -1
- package/dist/categories/manoeuvres/__tests__/hohmann-transfer.spec.js +0 -101
- package/dist/categories/manoeuvres/__tests__/hohmann-transfer.spec.js.map +0 -1
- package/dist/categories/manoeuvres/__tests__/oberth-energy-gain.spec.d.ts +0 -2
- package/dist/categories/manoeuvres/__tests__/oberth-energy-gain.spec.d.ts.map +0 -1
- package/dist/categories/manoeuvres/__tests__/oberth-energy-gain.spec.js +0 -71
- package/dist/categories/manoeuvres/__tests__/oberth-energy-gain.spec.js.map +0 -1
- package/dist/categories/manoeuvres/__tests__/plane-change-delta-v.spec.d.ts +0 -2
- package/dist/categories/manoeuvres/__tests__/plane-change-delta-v.spec.d.ts.map +0 -1
- package/dist/categories/manoeuvres/__tests__/plane-change-delta-v.spec.js +0 -90
- package/dist/categories/manoeuvres/__tests__/plane-change-delta-v.spec.js.map +0 -1
- package/dist/categories/manoeuvres/__tests__/rocket-delta-v-from-isp.spec.d.ts +0 -2
- package/dist/categories/manoeuvres/__tests__/rocket-delta-v-from-isp.spec.d.ts.map +0 -1
- package/dist/categories/manoeuvres/__tests__/rocket-delta-v-from-isp.spec.js +0 -84
- package/dist/categories/manoeuvres/__tests__/rocket-delta-v-from-isp.spec.js.map +0 -1
- package/dist/categories/manoeuvres/__tests__/rocket-delta-v-from-ve.spec.d.ts +0 -2
- package/dist/categories/manoeuvres/__tests__/rocket-delta-v-from-ve.spec.d.ts.map +0 -1
- package/dist/categories/manoeuvres/__tests__/rocket-delta-v-from-ve.spec.js +0 -65
- package/dist/categories/manoeuvres/__tests__/rocket-delta-v-from-ve.spec.js.map +0 -1
- package/dist/categories/orbits/__tests__/atmospheric-drag-acceleration.spec.d.ts +0 -2
- package/dist/categories/orbits/__tests__/atmospheric-drag-acceleration.spec.d.ts.map +0 -1
- package/dist/categories/orbits/__tests__/atmospheric-drag-acceleration.spec.js +0 -71
- package/dist/categories/orbits/__tests__/atmospheric-drag-acceleration.spec.js.map +0 -1
- package/dist/categories/orbits/__tests__/characteristic-energy-c3.spec.d.ts +0 -2
- package/dist/categories/orbits/__tests__/characteristic-energy-c3.spec.d.ts.map +0 -1
- package/dist/categories/orbits/__tests__/characteristic-energy-c3.spec.js +0 -36
- package/dist/categories/orbits/__tests__/characteristic-energy-c3.spec.js.map +0 -1
- package/dist/categories/orbits/__tests__/circular-speed.spec.d.ts +0 -2
- package/dist/categories/orbits/__tests__/circular-speed.spec.d.ts.map +0 -1
- package/dist/categories/orbits/__tests__/circular-speed.spec.js +0 -69
- package/dist/categories/orbits/__tests__/circular-speed.spec.js.map +0 -1
- package/dist/categories/orbits/__tests__/cw-hill-derivatives.spec.d.ts +0 -2
- package/dist/categories/orbits/__tests__/cw-hill-derivatives.spec.d.ts.map +0 -1
- package/dist/categories/orbits/__tests__/cw-hill-derivatives.spec.js +0 -64
- package/dist/categories/orbits/__tests__/cw-hill-derivatives.spec.js.map +0 -1
- package/dist/categories/orbits/__tests__/escape-speed.spec.d.ts +0 -2
- package/dist/categories/orbits/__tests__/escape-speed.spec.d.ts.map +0 -1
- package/dist/categories/orbits/__tests__/escape-speed.spec.js +0 -79
- package/dist/categories/orbits/__tests__/escape-speed.spec.js.map +0 -1
- package/dist/categories/orbits/__tests__/flight-path-angle-from-true-anomaly.spec.d.ts +0 -2
- package/dist/categories/orbits/__tests__/flight-path-angle-from-true-anomaly.spec.d.ts.map +0 -1
- package/dist/categories/orbits/__tests__/flight-path-angle-from-true-anomaly.spec.js +0 -92
- package/dist/categories/orbits/__tests__/flight-path-angle-from-true-anomaly.spec.js.map +0 -1
- package/dist/categories/orbits/__tests__/hyperbolic-periapsis-speed.spec.d.ts +0 -2
- package/dist/categories/orbits/__tests__/hyperbolic-periapsis-speed.spec.d.ts.map +0 -1
- package/dist/categories/orbits/__tests__/hyperbolic-periapsis-speed.spec.js +0 -64
- package/dist/categories/orbits/__tests__/hyperbolic-periapsis-speed.spec.js.map +0 -1
- package/dist/categories/orbits/__tests__/j2-argument-of-perigee-rate.spec.d.ts +0 -2
- package/dist/categories/orbits/__tests__/j2-argument-of-perigee-rate.spec.d.ts.map +0 -1
- package/dist/categories/orbits/__tests__/j2-argument-of-perigee-rate.spec.js +0 -104
- package/dist/categories/orbits/__tests__/j2-argument-of-perigee-rate.spec.js.map +0 -1
- package/dist/categories/orbits/__tests__/j2-nodal-precession-rate.spec.d.ts +0 -2
- package/dist/categories/orbits/__tests__/j2-nodal-precession-rate.spec.d.ts.map +0 -1
- package/dist/categories/orbits/__tests__/j2-nodal-precession-rate.spec.js +0 -99
- package/dist/categories/orbits/__tests__/j2-nodal-precession-rate.spec.js.map +0 -1
- package/dist/categories/orbits/__tests__/kepler-period.spec.d.ts +0 -2
- package/dist/categories/orbits/__tests__/kepler-period.spec.d.ts.map +0 -1
- package/dist/categories/orbits/__tests__/kepler-period.spec.js +0 -72
- package/dist/categories/orbits/__tests__/kepler-period.spec.js.map +0 -1
- package/dist/categories/orbits/__tests__/mean-motion.spec.d.ts +0 -2
- package/dist/categories/orbits/__tests__/mean-motion.spec.d.ts.map +0 -1
- package/dist/categories/orbits/__tests__/mean-motion.spec.js +0 -48
- package/dist/categories/orbits/__tests__/mean-motion.spec.js.map +0 -1
- package/dist/categories/orbits/__tests__/peri-apoapsis-radii.spec.d.ts +0 -2
- package/dist/categories/orbits/__tests__/peri-apoapsis-radii.spec.d.ts.map +0 -1
- package/dist/categories/orbits/__tests__/peri-apoapsis-radii.spec.js +0 -74
- package/dist/categories/orbits/__tests__/peri-apoapsis-radii.spec.js.map +0 -1
- package/dist/categories/orbits/__tests__/specific-angular-momentum-from-elements.spec.d.ts +0 -2
- package/dist/categories/orbits/__tests__/specific-angular-momentum-from-elements.spec.d.ts.map +0 -1
- package/dist/categories/orbits/__tests__/specific-angular-momentum-from-elements.spec.js +0 -86
- package/dist/categories/orbits/__tests__/specific-angular-momentum-from-elements.spec.js.map +0 -1
- package/dist/categories/orbits/__tests__/specific-angular-momentum.spec.d.ts +0 -2
- package/dist/categories/orbits/__tests__/specific-angular-momentum.spec.d.ts.map +0 -1
- package/dist/categories/orbits/__tests__/specific-angular-momentum.spec.js +0 -85
- package/dist/categories/orbits/__tests__/specific-angular-momentum.spec.js.map +0 -1
- package/dist/categories/orbits/__tests__/specific-mechanical-energy.spec.d.ts +0 -2
- package/dist/categories/orbits/__tests__/specific-mechanical-energy.spec.d.ts.map +0 -1
- package/dist/categories/orbits/__tests__/specific-mechanical-energy.spec.js +0 -81
- package/dist/categories/orbits/__tests__/specific-mechanical-energy.spec.js.map +0 -1
- package/dist/categories/orbits/__tests__/sphere-of-influence-radius.spec.d.ts +0 -2
- package/dist/categories/orbits/__tests__/sphere-of-influence-radius.spec.d.ts.map +0 -1
- package/dist/categories/orbits/__tests__/sphere-of-influence-radius.spec.js +0 -62
- package/dist/categories/orbits/__tests__/sphere-of-influence-radius.spec.js.map +0 -1
- package/dist/categories/orbits/__tests__/vis-viva-speed.spec.d.ts +0 -2
- package/dist/categories/orbits/__tests__/vis-viva-speed.spec.d.ts.map +0 -1
- package/dist/categories/orbits/__tests__/vis-viva-speed.spec.js +0 -80
- package/dist/categories/orbits/__tests__/vis-viva-speed.spec.js.map +0 -1
package/dist/categories/cartography/__tests__/eccentricity-squared-oblate-spheroid.spec.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"eccentricity-squared-oblate-spheroid.spec.js","sourceRoot":"","sources":["../../../../src/categories/cartography/__tests__/eccentricity-squared-oblate-spheroid.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"flattening-oblate-spheroid.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/cartography/__tests__/flattening-oblate-spheroid.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert/strict';
|
|
2
|
-
import test, { describe } from 'node:test';
|
|
3
|
-
import { flatteningOblateSpheroid } from '../flattening-oblate-spheroid';
|
|
4
|
-
import { relClose } from 'packages/equations/src/__tests__/helpers';
|
|
5
|
-
describe('flatteningOblateSpheroid', () => {
|
|
6
|
-
test('computes f = (a - c) / a for typical Earth-like radii (WGS84-ish)', () => {
|
|
7
|
-
const a = 6378137.0; // m (equatorial)
|
|
8
|
-
const c = 6356752.314245; // m (polar)
|
|
9
|
-
const f = flatteningOblateSpheroid(a, c);
|
|
10
|
-
const expected = (a - c) / a;
|
|
11
|
-
relClose(f, expected);
|
|
12
|
-
// sanity: Earth flattening is ~1/298.257... ≈ 0.0033528 (ballpark)
|
|
13
|
-
assert.ok(f > 0 && f < 0.01, `unexpected flattening magnitude: ${f}`);
|
|
14
|
-
});
|
|
15
|
-
test('returns 0 for a perfect sphere (a === c)', () => {
|
|
16
|
-
const a = 10;
|
|
17
|
-
const c = 10;
|
|
18
|
-
const f = flatteningOblateSpheroid(a, c);
|
|
19
|
-
// exactly 0 with identical numbers; tolerant check is fine
|
|
20
|
-
relClose(f, 0);
|
|
21
|
-
});
|
|
22
|
-
test('increases as c decreases for fixed a (more flattened => larger f)', () => {
|
|
23
|
-
const a = 10;
|
|
24
|
-
const fLessFlat = flatteningOblateSpheroid(a, 9.9);
|
|
25
|
-
const fMoreFlat = flatteningOblateSpheroid(a, 9.0);
|
|
26
|
-
assert.ok(fMoreFlat > fLessFlat, `expected f to increase with flattening: ${fLessFlat} -> ${fMoreFlat}`);
|
|
27
|
-
});
|
|
28
|
-
test('is dimensionless and within [0, 1) for physically valid oblate spheroids (a >= c > 0)', () => {
|
|
29
|
-
const a = 10;
|
|
30
|
-
const c = 7;
|
|
31
|
-
const f = flatteningOblateSpheroid(a, c);
|
|
32
|
-
assert.ok(f >= 0, `expected f >= 0, got ${f}`);
|
|
33
|
-
assert.ok(f < 1, `expected f < 1, got ${f}`);
|
|
34
|
-
});
|
|
35
|
-
test('throws TypeError when a is not finite (NaN)', () => {
|
|
36
|
-
assert.throws(() => flatteningOblateSpheroid(Number.NaN, 1), (err) => err instanceof TypeError &&
|
|
37
|
-
err.message === 'a must be finite. Received: NaN');
|
|
38
|
-
});
|
|
39
|
-
test('throws TypeError when c is not finite (Infinity)', () => {
|
|
40
|
-
assert.throws(() => flatteningOblateSpheroid(1, Number.POSITIVE_INFINITY), (err) => err instanceof TypeError &&
|
|
41
|
-
err.message === 'c must be finite. Received: Infinity');
|
|
42
|
-
});
|
|
43
|
-
test('throws RangeError when a <= 0', () => {
|
|
44
|
-
assert.throws(() => flatteningOblateSpheroid(0, 1), (err) => err instanceof RangeError &&
|
|
45
|
-
err.message === 'a must be > 0. Received: 0');
|
|
46
|
-
});
|
|
47
|
-
test('throws RangeError when c <= 0', () => {
|
|
48
|
-
assert.throws(() => flatteningOblateSpheroid(1, 0), (err) => err instanceof RangeError &&
|
|
49
|
-
err.message === 'c must be > 0. Received: 0');
|
|
50
|
-
});
|
|
51
|
-
test('for prolate inputs (c > a), flattening becomes negative (still computed)', () => {
|
|
52
|
-
// The function intentionally doesn't enforce a >= c; it only enforces positivity.
|
|
53
|
-
// This test documents that behavior.
|
|
54
|
-
const a = 10;
|
|
55
|
-
const c = 11;
|
|
56
|
-
const f = flatteningOblateSpheroid(a, c);
|
|
57
|
-
assert.ok(f < 0, `expected f < 0 for c > a, got ${f}`);
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
//# sourceMappingURL=flattening-oblate-spheroid.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"flattening-oblate-spheroid.spec.js","sourceRoot":"","sources":["../../../../src/categories/cartography/__tests__/flattening-oblate-spheroid.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/categories/cartography/__tests__/is-on-triaxial-ellipsoid-surface.spec.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"is-on-triaxial-ellipsoid-surface.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/cartography/__tests__/is-on-triaxial-ellipsoid-surface.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert/strict';
|
|
2
|
-
import test, { describe } from 'node:test';
|
|
3
|
-
import { isOnTriaxialEllipsoidSurface } from '../is-on-triaxial-ellipsoid-surface';
|
|
4
|
-
describe('isOnTriaxialEllipsoidSurface', () => {
|
|
5
|
-
test('returns true for axis points on the surface: (a,0,0), (0,b,0), (0,0,c)', () => {
|
|
6
|
-
const a = 3;
|
|
7
|
-
const b = 2;
|
|
8
|
-
const c = 1;
|
|
9
|
-
assert.equal(isOnTriaxialEllipsoidSurface(a, 0, 0, a, b, c), true);
|
|
10
|
-
assert.equal(isOnTriaxialEllipsoidSurface(0, b, 0, a, b, c), true);
|
|
11
|
-
assert.equal(isOnTriaxialEllipsoidSurface(0, 0, c, a, b, c), true);
|
|
12
|
-
});
|
|
13
|
-
test('returns true for a known on-surface point (scaled direction vector)', () => {
|
|
14
|
-
// Pick a direction (u,v,w), then scale so that x²/a² + y²/b² + z²/c² = 1.
|
|
15
|
-
const a = 3;
|
|
16
|
-
const b = 2;
|
|
17
|
-
const c = 1;
|
|
18
|
-
const u = 0.3;
|
|
19
|
-
const v = -0.4;
|
|
20
|
-
const w = 0.5;
|
|
21
|
-
// Scale factor s such that:
|
|
22
|
-
// (s*u)²/a² + (s*v)²/b² + (s*w)²/c² = 1 => s = 1 / sqrt( u²/a² + v²/b² + w²/c² )
|
|
23
|
-
const denom = (u * u) / (a * a) + (v * v) / (b * b) + (w * w) / (c * c);
|
|
24
|
-
const s = 1 / Math.sqrt(denom);
|
|
25
|
-
const x = s * u;
|
|
26
|
-
const y = s * v;
|
|
27
|
-
const z = s * w;
|
|
28
|
-
assert.equal(isOnTriaxialEllipsoidSurface(x, y, z, a, b, c), true);
|
|
29
|
-
});
|
|
30
|
-
test('returns false for an interior point (0,0,0)', () => {
|
|
31
|
-
assert.equal(isOnTriaxialEllipsoidSurface(0, 0, 0, 3, 2, 1), false);
|
|
32
|
-
});
|
|
33
|
-
test('returns false for an exterior point (2a,0,0)', () => {
|
|
34
|
-
const a = 3;
|
|
35
|
-
assert.equal(isOnTriaxialEllipsoidSurface(2 * a, 0, 0, a, 2, 1), false);
|
|
36
|
-
});
|
|
37
|
-
test('eps controls tolerance (near-surface point passes only with looser eps)', () => {
|
|
38
|
-
const a = 3;
|
|
39
|
-
const b = 2;
|
|
40
|
-
const c = 1;
|
|
41
|
-
// Slightly off the +X axis surface point
|
|
42
|
-
const x = a * 1.0000001;
|
|
43
|
-
// With default eps=1e-12, should be false
|
|
44
|
-
assert.equal(isOnTriaxialEllipsoidSurface(x, 0, 0, a, b, c), false);
|
|
45
|
-
// With looser eps, should be true
|
|
46
|
-
assert.equal(isOnTriaxialEllipsoidSurface(x, 0, 0, a, b, c, 1e-6), true);
|
|
47
|
-
});
|
|
48
|
-
test('throws TypeError when any input is not finite', () => {
|
|
49
|
-
assert.throws(() => isOnTriaxialEllipsoidSurface(Number.NaN, 0, 0, 3, 2, 1), (err) => err instanceof TypeError &&
|
|
50
|
-
err.message === 'x must be finite. Received: NaN');
|
|
51
|
-
assert.throws(() => isOnTriaxialEllipsoidSurface(0, Number.POSITIVE_INFINITY, 0, 3, 2, 1), (err) => err instanceof TypeError &&
|
|
52
|
-
err.message === 'y must be finite. Received: Infinity');
|
|
53
|
-
assert.throws(() => isOnTriaxialEllipsoidSurface(0, 0, 0, 3, 2, 1, Number.NEGATIVE_INFINITY), (err) => err instanceof TypeError &&
|
|
54
|
-
err.message === 'eps must be finite. Received: -Infinity');
|
|
55
|
-
});
|
|
56
|
-
test('throws RangeError when a <= 0', () => {
|
|
57
|
-
assert.throws(() => isOnTriaxialEllipsoidSurface(0, 0, 0, 0, 2, 1), (err) => err instanceof RangeError &&
|
|
58
|
-
err.message === 'a must be > 0. Received: 0');
|
|
59
|
-
});
|
|
60
|
-
test('throws RangeError when b <= 0', () => {
|
|
61
|
-
assert.throws(() => isOnTriaxialEllipsoidSurface(0, 0, 0, 3, 0, 1), (err) => err instanceof RangeError &&
|
|
62
|
-
err.message === 'b must be > 0. Received: 0');
|
|
63
|
-
});
|
|
64
|
-
test('throws RangeError when c <= 0', () => {
|
|
65
|
-
assert.throws(() => isOnTriaxialEllipsoidSurface(0, 0, 0, 3, 2, 0), (err) => err instanceof RangeError &&
|
|
66
|
-
err.message === 'c must be > 0. Received: 0');
|
|
67
|
-
});
|
|
68
|
-
test('throws RangeError when eps < 0', () => {
|
|
69
|
-
assert.throws(() => isOnTriaxialEllipsoidSurface(0, 0, 0, 3, 2, 1, -1e-12), (err) => err instanceof RangeError &&
|
|
70
|
-
err.message === 'eps must be >= 0. Received: -1e-12');
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
//# sourceMappingURL=is-on-triaxial-ellipsoid-surface.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"is-on-triaxial-ellipsoid-surface.spec.js","sourceRoot":"","sources":["../../../../src/categories/cartography/__tests__/is-on-triaxial-ellipsoid-surface.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"planetocentric-latitude.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/cartography/__tests__/planetocentric-latitude.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert/strict';
|
|
2
|
-
import test, { describe } from 'node:test';
|
|
3
|
-
import { planetocentricLatitude } from '../planetocentric-latitude';
|
|
4
|
-
import { absClose, relClose } from 'packages/equations/src/__tests__/helpers';
|
|
5
|
-
describe('planetocentricLatitude', () => {
|
|
6
|
-
test('returns 0 on the equatorial plane (z=0, x/y not both 0)', () => {
|
|
7
|
-
const phi1 = planetocentricLatitude(1, 0, 0);
|
|
8
|
-
const phi2 = planetocentricLatitude(0, 2, 0);
|
|
9
|
-
const phi3 = planetocentricLatitude(3, 4, 0);
|
|
10
|
-
absClose(phi1, 0, 1e-12);
|
|
11
|
-
absClose(phi2, 0, 1e-12);
|
|
12
|
-
absClose(phi3, 0, 1e-12);
|
|
13
|
-
});
|
|
14
|
-
test('returns +π/2 on +Z axis and -π/2 on -Z axis', () => {
|
|
15
|
-
absClose(planetocentricLatitude(0, 0, 1), Math.PI / 2, 1e-12);
|
|
16
|
-
absClose(planetocentricLatitude(0, 0, 10), Math.PI / 2, 1e-12);
|
|
17
|
-
absClose(planetocentricLatitude(0, 0, -1), -Math.PI / 2, 1e-12);
|
|
18
|
-
absClose(planetocentricLatitude(0, 0, -10), -Math.PI / 2, 1e-12);
|
|
19
|
-
});
|
|
20
|
-
test('matches atan2(z, hypot(x,y)) identity for a generic point', () => {
|
|
21
|
-
const x = 3;
|
|
22
|
-
const y = -4;
|
|
23
|
-
const z = 5;
|
|
24
|
-
const phi = planetocentricLatitude(x, y, z);
|
|
25
|
-
const expected = Math.atan2(z, Math.hypot(x, y));
|
|
26
|
-
relClose(phi, expected);
|
|
27
|
-
});
|
|
28
|
-
test('is invariant under scaling of (x,y,z) by a positive factor', () => {
|
|
29
|
-
const x = 1.2;
|
|
30
|
-
const y = -3.4;
|
|
31
|
-
const z = 5.6;
|
|
32
|
-
const phi = planetocentricLatitude(x, y, z);
|
|
33
|
-
const phiScaled = planetocentricLatitude(10 * x, 10 * y, 10 * z);
|
|
34
|
-
relClose(phiScaled, phi);
|
|
35
|
-
});
|
|
36
|
-
test('returns within [-π/2, +π/2] for finite inputs', () => {
|
|
37
|
-
const samples = [
|
|
38
|
-
[1, 0, 0],
|
|
39
|
-
[0, 1, 0],
|
|
40
|
-
[1, 1, 1],
|
|
41
|
-
[1, 1, -1],
|
|
42
|
-
[3, -4, 5],
|
|
43
|
-
[3, -4, -5]
|
|
44
|
-
];
|
|
45
|
-
for (const [x, y, z] of samples) {
|
|
46
|
-
const phi = planetocentricLatitude(x, y, z);
|
|
47
|
-
assert.ok(phi >= -Math.PI / 2 - 1e-15, `phi < -π/2: ${phi}`);
|
|
48
|
-
assert.ok(phi <= Math.PI / 2 + 1e-15, `phi > +π/2: ${phi}`);
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
test('handles origin: atan2(0,0) returns 0 in JS', () => {
|
|
52
|
-
// This documents JS behavior; mathematically latitude at origin is undefined,
|
|
53
|
-
// but this function will return 0 due to atan2(0,0) === 0.
|
|
54
|
-
absClose(planetocentricLatitude(0, 0, 0), 0, 0);
|
|
55
|
-
});
|
|
56
|
-
test('throws TypeError when x is not finite', () => {
|
|
57
|
-
assert.throws(() => planetocentricLatitude(Number.NaN, 0, 0), (err) => err instanceof TypeError &&
|
|
58
|
-
err.message === 'x must be finite. Received: NaN');
|
|
59
|
-
});
|
|
60
|
-
test('throws TypeError when y is not finite', () => {
|
|
61
|
-
assert.throws(() => planetocentricLatitude(0, Number.POSITIVE_INFINITY, 0), (err) => err instanceof TypeError &&
|
|
62
|
-
err.message === 'y must be finite. Received: Infinity');
|
|
63
|
-
});
|
|
64
|
-
test('throws TypeError when z is not finite', () => {
|
|
65
|
-
assert.throws(() => planetocentricLatitude(0, 0, Number.NEGATIVE_INFINITY), (err) => err instanceof TypeError &&
|
|
66
|
-
err.message === 'z must be finite. Received: -Infinity');
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
//# sourceMappingURL=planetocentric-latitude.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"planetocentric-latitude.spec.js","sourceRoot":"","sources":["../../../../src/categories/cartography/__tests__/planetocentric-latitude.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"planetographic-latitude-oblate.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/cartography/__tests__/planetographic-latitude-oblate.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert/strict';
|
|
2
|
-
import test, { describe } from 'node:test';
|
|
3
|
-
import { planetographicLatitudeOblate } from '../planetographic-latitude-oblate';
|
|
4
|
-
import { absClose, relClose } from 'packages/equations/src/__tests__/helpers';
|
|
5
|
-
describe('planetographicLatitudeOblate', () => {
|
|
6
|
-
test('reduces to planetocentric latitude when a === c (sphere)', () => {
|
|
7
|
-
const a = 10;
|
|
8
|
-
const c = 10;
|
|
9
|
-
const x = 3;
|
|
10
|
-
const y = 4;
|
|
11
|
-
const z = 5;
|
|
12
|
-
const phiG = planetographicLatitudeOblate(x, y, z, a, c);
|
|
13
|
-
const expected = Math.atan2(z, Math.hypot(x, y)); // oneMinusE2 = 1
|
|
14
|
-
relClose(phiG, expected);
|
|
15
|
-
});
|
|
16
|
-
test('returns 0 on the equatorial plane (z=0, x/y not both 0)', () => {
|
|
17
|
-
const a = 6378137.0;
|
|
18
|
-
const c = 6356752.314245;
|
|
19
|
-
absClose(planetographicLatitudeOblate(1, 0, 0, a, c), 0, 1e-12);
|
|
20
|
-
absClose(planetographicLatitudeOblate(0, 2, 0, a, c), 0, 1e-12);
|
|
21
|
-
absClose(planetographicLatitudeOblate(3, 4, 0, a, c), 0, 1e-12);
|
|
22
|
-
});
|
|
23
|
-
test('returns +π/2 on +Z axis and -π/2 on -Z axis (for valid ellipsoid)', () => {
|
|
24
|
-
const a = 10;
|
|
25
|
-
const c = 9;
|
|
26
|
-
absClose(planetographicLatitudeOblate(0, 0, 1, a, c), Math.PI / 2, 1e-12);
|
|
27
|
-
absClose(planetographicLatitudeOblate(0, 0, -1, a, c), -Math.PI / 2, 1e-12);
|
|
28
|
-
});
|
|
29
|
-
test('matches the explicit formula atan2(z/(c^2/a^2), hypot(x,y))', () => {
|
|
30
|
-
const a = 10;
|
|
31
|
-
const c = 9;
|
|
32
|
-
const x = 1.2;
|
|
33
|
-
const y = -3.4;
|
|
34
|
-
const z = 5.6;
|
|
35
|
-
const phi = planetographicLatitudeOblate(x, y, z, a, c);
|
|
36
|
-
const oneMinusE2 = (c * c) / (a * a); // c²/a²
|
|
37
|
-
const expected = Math.atan2(z / oneMinusE2, Math.hypot(x, y));
|
|
38
|
-
relClose(phi, expected);
|
|
39
|
-
});
|
|
40
|
-
test('is invariant under scaling of (x,y,z) by a positive factor', () => {
|
|
41
|
-
const a = 10;
|
|
42
|
-
const c = 9;
|
|
43
|
-
const x = 1.2;
|
|
44
|
-
const y = -3.4;
|
|
45
|
-
const z = 5.6;
|
|
46
|
-
const phi1 = planetographicLatitudeOblate(x, y, z, a, c);
|
|
47
|
-
const phi2 = planetographicLatitudeOblate(10 * x, 10 * y, 10 * z, a, c);
|
|
48
|
-
relClose(phi2, phi1);
|
|
49
|
-
});
|
|
50
|
-
test('for an oblate spheroid (a > c), |φg| > |φc| when z ≠ 0 (same Cartesian point)', () => {
|
|
51
|
-
const a = 10;
|
|
52
|
-
const c = 9;
|
|
53
|
-
const x = 3;
|
|
54
|
-
const y = 4;
|
|
55
|
-
const z = 1;
|
|
56
|
-
const phiC = Math.atan2(z, Math.hypot(x, y)); // planetocentric latitude
|
|
57
|
-
const phiG = planetographicLatitudeOblate(x, y, z, a, c);
|
|
58
|
-
assert.ok(Math.abs(phiG) > Math.abs(phiC), `expected |phiG| > |phiC| for a>c; got phiC=${phiC}, phiG=${phiG}`);
|
|
59
|
-
});
|
|
60
|
-
test('returns within [-π/2, +π/2] for finite inputs', () => {
|
|
61
|
-
const a = 10;
|
|
62
|
-
const c = 9;
|
|
63
|
-
const samples = [
|
|
64
|
-
[1, 0, 0],
|
|
65
|
-
[0, 1, 0],
|
|
66
|
-
[1, 1, 1],
|
|
67
|
-
[1, 1, -1],
|
|
68
|
-
[3, -4, 5],
|
|
69
|
-
[3, -4, -5]
|
|
70
|
-
];
|
|
71
|
-
for (const [x, y, z] of samples) {
|
|
72
|
-
const phi = planetographicLatitudeOblate(x, y, z, a, c);
|
|
73
|
-
assert.ok(phi >= -Math.PI / 2 - 1e-15, `phi < -π/2: ${phi}`);
|
|
74
|
-
assert.ok(phi <= Math.PI / 2 + 1e-15, `phi > +π/2: ${phi}`);
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
test('handles origin: atan2(0,0) returns 0 in JS (documents behavior)', () => {
|
|
78
|
-
const a = 10;
|
|
79
|
-
const c = 9;
|
|
80
|
-
absClose(planetographicLatitudeOblate(0, 0, 0, a, c), 0, 0);
|
|
81
|
-
});
|
|
82
|
-
test('throws TypeError when any input is not finite', () => {
|
|
83
|
-
const a = 10;
|
|
84
|
-
const c = 9;
|
|
85
|
-
assert.throws(() => planetographicLatitudeOblate(Number.NaN, 0, 0, a, c), (err) => err instanceof TypeError &&
|
|
86
|
-
err.message === 'x must be finite. Received: NaN');
|
|
87
|
-
assert.throws(() => planetographicLatitudeOblate(0, Number.POSITIVE_INFINITY, 0, a, c), (err) => err instanceof TypeError &&
|
|
88
|
-
err.message === 'y must be finite. Received: Infinity');
|
|
89
|
-
assert.throws(() => planetographicLatitudeOblate(0, 0, Number.NEGATIVE_INFINITY, a, c), (err) => err instanceof TypeError &&
|
|
90
|
-
err.message === 'z must be finite. Received: -Infinity');
|
|
91
|
-
assert.throws(() => planetographicLatitudeOblate(0, 0, 0, Number.NaN, c), (err) => err instanceof TypeError &&
|
|
92
|
-
err.message === 'a must be finite. Received: NaN');
|
|
93
|
-
assert.throws(() => planetographicLatitudeOblate(0, 0, 0, a, Number.POSITIVE_INFINITY), (err) => err instanceof TypeError &&
|
|
94
|
-
err.message === 'c must be finite. Received: Infinity');
|
|
95
|
-
});
|
|
96
|
-
test('throws RangeError when a <= 0 or c <= 0', () => {
|
|
97
|
-
assert.throws(() => planetographicLatitudeOblate(0, 0, 0, 0, 1), (err) => err instanceof RangeError &&
|
|
98
|
-
err.message === 'a must be > 0. Received: 0');
|
|
99
|
-
assert.throws(() => planetographicLatitudeOblate(0, 0, 0, 1, 0), (err) => err instanceof RangeError &&
|
|
100
|
-
err.message === 'c must be > 0. Received: 0');
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
//# sourceMappingURL=planetographic-latitude-oblate.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"planetographic-latitude-oblate.spec.js","sourceRoot":"","sources":["../../../../src/categories/cartography/__tests__/planetographic-latitude-oblate.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/categories/gravity/__tests__/gravitational-acceleration-on1-by2.int.spec.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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,87 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert/strict';
|
|
2
|
-
import test, { describe } from 'node:test';
|
|
3
|
-
import { accelerationOn1By2 } from '../acceleration-on1-by2';
|
|
4
|
-
import { relClose, vecRelClose } from 'packages/equations/src/__tests__/helpers';
|
|
5
|
-
import { G_SI } from '@interstellar-tools/constants';
|
|
6
|
-
import { norm, scale, sub } from '../../helpers/misc';
|
|
7
|
-
describe('accelerationOn1By2', () => {
|
|
8
|
-
test('1D sanity (+x): ||a|| = G*m2/r² and points +x', () => {
|
|
9
|
-
const G = 1;
|
|
10
|
-
const m2 = 3;
|
|
11
|
-
const r1 = [0, 0, 0];
|
|
12
|
-
const r2 = [10, 0, 0];
|
|
13
|
-
const a = accelerationOn1By2(m2, r1, r2, G);
|
|
14
|
-
// Expected magnitude: 1*3/10² = 0.03, direction +x
|
|
15
|
-
relClose(norm(a), 0.03, 1e-14);
|
|
16
|
-
vecRelClose(a, [0.03, 0, 0], 1e-14);
|
|
17
|
-
});
|
|
18
|
-
test('1D sanity (-x): points toward body 2 at negative x', () => {
|
|
19
|
-
const G = 1;
|
|
20
|
-
const m2 = 3;
|
|
21
|
-
const r1 = [0, 0, 0];
|
|
22
|
-
const r2 = [-10, 0, 0];
|
|
23
|
-
const a = accelerationOn1By2(m2, r1, r2, G);
|
|
24
|
-
relClose(norm(a), 0.03, 1e-14);
|
|
25
|
-
vecRelClose(a, [-0.03, 0, 0], 1e-14);
|
|
26
|
-
});
|
|
27
|
-
test('direction equals r-hat for arbitrary 3D positions', () => {
|
|
28
|
-
const G = 2.5;
|
|
29
|
-
const m2 = 11;
|
|
30
|
-
const r1 = [0.2, -3, 5.5];
|
|
31
|
-
const r2 = [4.2, 1, -1];
|
|
32
|
-
const a = accelerationOn1By2(m2, r1, r2, G);
|
|
33
|
-
const dr = sub(r2, r1);
|
|
34
|
-
const r = Math.hypot(...dr);
|
|
35
|
-
const rhat = [dr[0] / r, dr[1] / r, dr[2] / r];
|
|
36
|
-
const ahat = scale(a, 1 / norm(a));
|
|
37
|
-
vecRelClose(ahat, rhat, 1e-12);
|
|
38
|
-
});
|
|
39
|
-
test('inverse-square scaling: doubling r → quarter acceleration', () => {
|
|
40
|
-
const G = 10;
|
|
41
|
-
const m2 = 5;
|
|
42
|
-
const r1 = [0, 0, 0];
|
|
43
|
-
const r2a = [2, 0, 0]; // r = 2
|
|
44
|
-
const r2b = [4, 0, 0]; // r = 4 (double → quarter a)
|
|
45
|
-
const aA = accelerationOn1By2(m2, r1, r2a, G);
|
|
46
|
-
const aB = accelerationOn1By2(m2, r1, r2b, G);
|
|
47
|
-
relClose(norm(aB), norm(aA) / 4, 1e-14);
|
|
48
|
-
});
|
|
49
|
-
test('linearity: scaling m2 or G scales a accordingly', () => {
|
|
50
|
-
const G = 3;
|
|
51
|
-
const m2 = 5;
|
|
52
|
-
const r1 = [1, 2, 3];
|
|
53
|
-
const r2 = [4, -1, 0];
|
|
54
|
-
const a = accelerationOn1By2(m2, r1, r2, G);
|
|
55
|
-
const a_m2x2 = accelerationOn1By2(2 * m2, r1, r2, G);
|
|
56
|
-
const a_Gx2 = accelerationOn1By2(m2, r1, r2, 2 * G);
|
|
57
|
-
vecRelClose(a_m2x2, scale(a, 2));
|
|
58
|
-
vecRelClose(a_Gx2, scale(a, 2));
|
|
59
|
-
});
|
|
60
|
-
test('real-world sanity: Earth due to Sun at 1 AU (~5.93e-3 m/s²)', () => {
|
|
61
|
-
const mSun = 1.9885e30; // kg
|
|
62
|
-
const rEarth = [0, 0, 0];
|
|
63
|
-
const rSun = [1.495978707e11, 0, 0]; // m
|
|
64
|
-
const a = accelerationOn1By2(mSun, rEarth, rSun, G_SI);
|
|
65
|
-
// Closed-form expectation GM_sun / r²
|
|
66
|
-
const dr = sub(rSun, rEarth);
|
|
67
|
-
const r = Math.hypot(...dr);
|
|
68
|
-
const expected = (G_SI * mSun) / (r * r);
|
|
69
|
-
relClose(norm(a), expected, 1e-12);
|
|
70
|
-
// Also within ~0.5% of commonly cited value
|
|
71
|
-
const ref = 5.93e-3;
|
|
72
|
-
assert.ok(Math.abs(norm(a) - ref) / ref < 5e-3, `|a| ${norm(a)} differs from ~${ref}`);
|
|
73
|
-
});
|
|
74
|
-
test('error propagation: invalid inputs cause throws', () => {
|
|
75
|
-
const r1 = [0, 0, 0];
|
|
76
|
-
const r2 = [1, 0, 0];
|
|
77
|
-
// negative / non-finite m2
|
|
78
|
-
assert.throws(() => accelerationOn1By2(-1, r1, r2, 1), /non-negative|finite/);
|
|
79
|
-
assert.throws(() => accelerationOn1By2(Number.NaN, r1, r2, 1), /finite/);
|
|
80
|
-
// coincident positions
|
|
81
|
-
assert.throws(() => accelerationOn1By2(1, r1, r1, 1), /singular \(r = 0\)/);
|
|
82
|
-
// invalid G
|
|
83
|
-
assert.throws(() => accelerationOn1By2(1, r1, r2, 0), /positive/);
|
|
84
|
-
assert.throws(() => accelerationOn1By2(1, r1, r2, Number.NaN), /finite/);
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
//# sourceMappingURL=gravitational-acceleration-on1-by2.int.spec.js.map
|
package/dist/categories/gravity/__tests__/gravitational-acceleration-on1-by2.int.spec.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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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"}
|
|
@@ -1 +0,0 @@
|
|
|
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":""}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert/strict';
|
|
2
|
-
import test, { describe } from 'node:test';
|
|
3
|
-
import { relClose, vecRelClose } from 'packages/equations/src/__tests__/helpers';
|
|
4
|
-
import { G_SI } from '@interstellar-tools/constants';
|
|
5
|
-
import { forceOn1By2 } from '../force-on1-by2';
|
|
6
|
-
import { norm, scale, sub } from '../../helpers/misc';
|
|
7
|
-
describe('forceOn1By2', () => {
|
|
8
|
-
test('1D sanity (+x): |F| = G*m1*m2/r² and points +x', () => {
|
|
9
|
-
const G = 1;
|
|
10
|
-
const m1 = 2;
|
|
11
|
-
const m2 = 3;
|
|
12
|
-
const r1 = [0, 0, 0];
|
|
13
|
-
const r2 = [10, 0, 0];
|
|
14
|
-
const F = forceOn1By2(m1, m2, r1, r2, G);
|
|
15
|
-
// Expected magnitude and direction
|
|
16
|
-
const expectedMag = (G * m1 * m2) / 10 ** 2; // 0.06
|
|
17
|
-
relClose(norm(F), expectedMag, 1e-14);
|
|
18
|
-
vecRelClose(F, [expectedMag, 0, 0], 1e-14);
|
|
19
|
-
});
|
|
20
|
-
test('1D sanity (-x): points toward body 2 (at -x)', () => {
|
|
21
|
-
const G = 1;
|
|
22
|
-
const m1 = 2;
|
|
23
|
-
const m2 = 3;
|
|
24
|
-
const r1 = [0, 0, 0];
|
|
25
|
-
const r2 = [-10, 0, 0];
|
|
26
|
-
const F = forceOn1By2(m1, m2, r1, r2, G);
|
|
27
|
-
relClose(norm(F), 0.06, 1e-14);
|
|
28
|
-
vecRelClose(F, [-0.06, 0, 0], 1e-14);
|
|
29
|
-
});
|
|
30
|
-
test('direction equals r-hat for arbitrary 3D positions', () => {
|
|
31
|
-
const G = 2.5;
|
|
32
|
-
const m1 = 7;
|
|
33
|
-
const m2 = 11;
|
|
34
|
-
const r1 = [0.2, -3, 5.5];
|
|
35
|
-
const r2 = [4.2, 1, -1];
|
|
36
|
-
const F = forceOn1By2(m1, m2, r1, r2, G);
|
|
37
|
-
const dr = sub(r2, r1);
|
|
38
|
-
const r = Math.hypot(...dr);
|
|
39
|
-
const rhat = [dr[0] / r, dr[1] / r, dr[2] / r];
|
|
40
|
-
// Normalize F and compare to rhat
|
|
41
|
-
const Fhat = scale(F, 1 / norm(F));
|
|
42
|
-
vecRelClose(Fhat, rhat, 1e-12);
|
|
43
|
-
});
|
|
44
|
-
test('Newton’s 3rd law: F_1<-2 = - F_2<-1', () => {
|
|
45
|
-
const G = 9.87;
|
|
46
|
-
const m1 = 7;
|
|
47
|
-
const m2 = 11;
|
|
48
|
-
const r1 = [0, -2, 5];
|
|
49
|
-
const r2 = [3, 1, -1];
|
|
50
|
-
const F12 = forceOn1By2(m1, m2, r1, r2, G);
|
|
51
|
-
const F21 = forceOn1By2(m2, m1, r2, r1, G);
|
|
52
|
-
vecRelClose(F12, [-F21[0], -F21[1], -F21[2]]);
|
|
53
|
-
});
|
|
54
|
-
test('inverse-square scaling: doubling r → quarter force', () => {
|
|
55
|
-
const G = 10;
|
|
56
|
-
const m1 = 2;
|
|
57
|
-
const m2 = 5;
|
|
58
|
-
const r1 = [0, 0, 0];
|
|
59
|
-
const r2a = [2, 0, 0]; // r = 2
|
|
60
|
-
const r2b = [4, 0, 0]; // r = 4 (double → quarter force)
|
|
61
|
-
const Fa = forceOn1By2(m1, m2, r1, r2a, G);
|
|
62
|
-
const Fb = forceOn1By2(m1, m2, r1, r2b, G);
|
|
63
|
-
relClose(norm(Fb), norm(Fa) / 4, 1e-14);
|
|
64
|
-
});
|
|
65
|
-
test('linearity: scaling m1, m2, or G scales F accordingly', () => {
|
|
66
|
-
const G = 3;
|
|
67
|
-
const m1 = 2;
|
|
68
|
-
const m2 = 5;
|
|
69
|
-
const r1 = [1, 2, 3];
|
|
70
|
-
const r2 = [4, -1, 0];
|
|
71
|
-
const F = forceOn1By2(m1, m2, r1, r2, G);
|
|
72
|
-
const F_m1x2 = forceOn1By2(2 * m1, m2, r1, r2, G);
|
|
73
|
-
const F_m2x2 = forceOn1By2(m1, 2 * m2, r1, r2, G);
|
|
74
|
-
const F_Gx2 = forceOn1By2(m1, m2, r1, r2, 2 * G);
|
|
75
|
-
// Doubling any of m1, m2, or G doubles the force vector
|
|
76
|
-
vecRelClose(F_m1x2, scale(F, 2));
|
|
77
|
-
vecRelClose(F_m2x2, scale(F, 2));
|
|
78
|
-
vecRelClose(F_Gx2, scale(F, 2));
|
|
79
|
-
});
|
|
80
|
-
test('real-world sanity: Earth–Sun at ~1 AU (~3.54e22 N)', () => {
|
|
81
|
-
const mEarth = 5.972e24; // kg
|
|
82
|
-
const mSun = 1.9885e30; // kg
|
|
83
|
-
const rEarth = [0, 0, 0];
|
|
84
|
-
const rSun = [1.495978707e11, 0, 0]; // m
|
|
85
|
-
const F = forceOn1By2(mEarth, mSun, rEarth, rSun, G_SI);
|
|
86
|
-
const r = Math.hypot(rSun[0] - rEarth[0], rSun[1] - rEarth[1], rSun[2] - rEarth[2]);
|
|
87
|
-
const expectedMag = (G_SI * mEarth * mSun) / (r * r);
|
|
88
|
-
relClose(norm(F), expectedMag, 1e-12);
|
|
89
|
-
// also within ~0.5% of the commonly quoted magnitude
|
|
90
|
-
const ref = 3.542e22;
|
|
91
|
-
assert.ok(Math.abs(norm(F) - ref) / ref < 5e-3, `|F| ${norm(F)} differs from ~${ref}`);
|
|
92
|
-
});
|
|
93
|
-
test('error propagation: invalid inputs cause throws', () => {
|
|
94
|
-
const r1 = [0, 0, 0];
|
|
95
|
-
const r2 = [1, 0, 0];
|
|
96
|
-
// negative / non-finite masses
|
|
97
|
-
assert.throws(() => forceOn1By2(-1, 1, r1, r2, 1), /non-negative|finite/);
|
|
98
|
-
assert.throws(() => forceOn1By2(1, -1, r1, r2, 1), /non-negative|finite/);
|
|
99
|
-
assert.throws(() => forceOn1By2(Number.NaN, 1, r1, r2, 1), /finite/);
|
|
100
|
-
// coincident positions
|
|
101
|
-
assert.throws(() => forceOn1By2(1, 1, r1, r1, 1), /singular \(r = 0\)/);
|
|
102
|
-
// invalid G
|
|
103
|
-
assert.throws(() => forceOn1By2(1, 1, r1, r2, 0), /positive/);
|
|
104
|
-
assert.throws(() => forceOn1By2(1, 1, r1, r2, Number.NaN), /finite/);
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
//# sourceMappingURL=gravitational-force-on1-by2.int.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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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"}
|