@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
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert/strict';
|
|
2
|
-
import test, { describe } from 'node:test';
|
|
3
|
-
import { absClose, relClose } from 'packages/equations/src/__tests__/helpers';
|
|
4
|
-
import { rad, toRad } from '../radians';
|
|
5
|
-
describe('radians', () => {
|
|
6
|
-
/* ---------------------------------- toRad --------------------------------- */
|
|
7
|
-
test('toRad converts 180° to π', () => {
|
|
8
|
-
const x = toRad(180);
|
|
9
|
-
absClose(x, Math.PI, 1e-12);
|
|
10
|
-
});
|
|
11
|
-
test('toRad converts 90° to π/2', () => {
|
|
12
|
-
const x = toRad(90);
|
|
13
|
-
absClose(x, Math.PI / 2, 1e-12);
|
|
14
|
-
});
|
|
15
|
-
test('toRad converts -90° to -π/2', () => {
|
|
16
|
-
const x = toRad(-90);
|
|
17
|
-
absClose(x, -Math.PI / 2, 1e-12);
|
|
18
|
-
});
|
|
19
|
-
test('toRad is linear: toRad(a + b) = toRad(a) + toRad(b)', () => {
|
|
20
|
-
const a = 12.34;
|
|
21
|
-
const b = -56.78;
|
|
22
|
-
const left = toRad(a + b);
|
|
23
|
-
const right = (toRad(a) + toRad(b));
|
|
24
|
-
relClose(left, right);
|
|
25
|
-
});
|
|
26
|
-
/* ----------------------------------- rad ---------------------------------- */
|
|
27
|
-
test('rad is an identity at runtime (returns the same numeric value)', () => {
|
|
28
|
-
const x = 1.2345;
|
|
29
|
-
const y = rad(x);
|
|
30
|
-
assert.equal(y, x);
|
|
31
|
-
});
|
|
32
|
-
test('rad works with Math constants (π branded as Radians)', () => {
|
|
33
|
-
const x = rad(Math.PI);
|
|
34
|
-
absClose(x, Math.PI, 0);
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
//# sourceMappingURL=radians.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"radians.spec.js","sourceRoot":"","sources":["../../../../src/categories/helpers/__tests__/radians.spec.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGxC,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,gFAAgF;IAEhF,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACrB,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;QACpB,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACrB,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,GAAG,KAAK,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QAEjB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAW,CAAC;QAE9C,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,gFAAgF;IAEhF,IAAI,CAAC,gEAAgE,EAAE,GAAG,EAAE;QAC1E,MAAM,CAAC,GAAG,MAAM,CAAC;QACjB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAEjB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,GAAY,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rot-1.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/helpers/__tests__/rot-1.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert/strict';
|
|
2
|
-
import test, { describe } from 'node:test';
|
|
3
|
-
import { rot1 } from '../rot-1';
|
|
4
|
-
import { absClose, matRelClose } from 'packages/equations/src/__tests__/helpers';
|
|
5
|
-
import { applyMatrix3 } from '../apply-matrix-3';
|
|
6
|
-
import { matMul3 } from '../mat-mul3';
|
|
7
|
-
import { transpose3 } from '../transpose-3';
|
|
8
|
-
import { det3 } from '../det-3';
|
|
9
|
-
const I3 = [
|
|
10
|
-
[1, 0, 0],
|
|
11
|
-
[0, 1, 0],
|
|
12
|
-
[0, 0, 1]
|
|
13
|
-
];
|
|
14
|
-
describe('rot1', () => {
|
|
15
|
-
test('returns identity at theta = 0', () => {
|
|
16
|
-
const R = rot1(0);
|
|
17
|
-
matRelClose(R, I3, 1e-12);
|
|
18
|
-
});
|
|
19
|
-
test('rotates Y to +Z by +90° about +X (right-handed active rotation)', () => {
|
|
20
|
-
const R = rot1((Math.PI / 2));
|
|
21
|
-
const yAxis = [0, 1, 0];
|
|
22
|
-
const out = applyMatrix3(R, yAxis);
|
|
23
|
-
// Expect [0, 0, 1]
|
|
24
|
-
absClose(out[0], 0, 1e-12);
|
|
25
|
-
absClose(out[1], 0, 1e-12);
|
|
26
|
-
absClose(out[2], 1, 1e-12);
|
|
27
|
-
});
|
|
28
|
-
test('rotates Z to -Y by +90° about +X', () => {
|
|
29
|
-
const R = rot1((Math.PI / 2));
|
|
30
|
-
const zAxis = [0, 0, 1];
|
|
31
|
-
const out = applyMatrix3(R, zAxis);
|
|
32
|
-
// Expect [0, -1, 0]
|
|
33
|
-
absClose(out[0], 0, 1e-12);
|
|
34
|
-
absClose(out[1], -1, 1e-12);
|
|
35
|
-
absClose(out[2], 0, 1e-12);
|
|
36
|
-
});
|
|
37
|
-
test('is orthonormal: RᵀR ≈ I', () => {
|
|
38
|
-
const R = rot1(1.234);
|
|
39
|
-
const RtR = matMul3(transpose3(R), R);
|
|
40
|
-
matRelClose(RtR, I3, 1e-12);
|
|
41
|
-
});
|
|
42
|
-
test('has determinant +1 (proper rotation)', () => {
|
|
43
|
-
const R = rot1(0.789);
|
|
44
|
-
absClose(det3(R), 1, 1e-12, `det(R) expected ~1`);
|
|
45
|
-
});
|
|
46
|
-
test('inverse equals rotation by -theta: R(theta) * R(-theta) ≈ I', () => {
|
|
47
|
-
const theta = 0.456;
|
|
48
|
-
const R = rot1(theta);
|
|
49
|
-
const Rinv = rot1(-0.456);
|
|
50
|
-
matRelClose(matMul3(R, Rinv), I3, 1e-12);
|
|
51
|
-
});
|
|
52
|
-
test('throws TypeError when theta is not finite', () => {
|
|
53
|
-
assert.throws(() => rot1(Number.NaN), (err) => err instanceof TypeError &&
|
|
54
|
-
err.message === 'theta must be finite. Received: NaN');
|
|
55
|
-
assert.throws(() => rot1(Number.POSITIVE_INFINITY), (err) => err instanceof TypeError &&
|
|
56
|
-
err.message === 'theta must be finite. Received: Infinity');
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
//# sourceMappingURL=rot-1.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rot-1.spec.js","sourceRoot":"","sources":["../../../../src/categories/helpers/__tests__/rot-1.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rot-3.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/helpers/__tests__/rot-3.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert/strict';
|
|
2
|
-
import test, { describe } from 'node:test';
|
|
3
|
-
import { rot3 } from '../rot-3';
|
|
4
|
-
import { absClose, matRelClose, relClose } from 'packages/equations/src/__tests__/helpers';
|
|
5
|
-
import { applyMatrix3 } from '../apply-matrix-3';
|
|
6
|
-
import { matMul3 } from '../mat-mul3';
|
|
7
|
-
import { det3 } from '../det-3';
|
|
8
|
-
import { transpose3 } from '../transpose-3';
|
|
9
|
-
const I3 = [
|
|
10
|
-
[1, 0, 0],
|
|
11
|
-
[0, 1, 0],
|
|
12
|
-
[0, 0, 1]
|
|
13
|
-
];
|
|
14
|
-
describe('rot3', () => {
|
|
15
|
-
test('returns identity at theta = 0', () => {
|
|
16
|
-
const R = rot3(0);
|
|
17
|
-
matRelClose(R, I3, 1e-12);
|
|
18
|
-
});
|
|
19
|
-
test('rotates +X to +Y by +90° about +Z (right-handed active rotation)', () => {
|
|
20
|
-
const R = rot3((Math.PI / 2));
|
|
21
|
-
const xAxis = [1, 0, 0];
|
|
22
|
-
const out = applyMatrix3(R, xAxis);
|
|
23
|
-
// Expect [0, 1, 0]
|
|
24
|
-
absClose(out[0], 0, 1e-12);
|
|
25
|
-
absClose(out[1], 1, 1e-12);
|
|
26
|
-
absClose(out[2], 0, 1e-12);
|
|
27
|
-
});
|
|
28
|
-
test('rotates +Y to -X by +90° about +Z', () => {
|
|
29
|
-
const R = rot3((Math.PI / 2));
|
|
30
|
-
const yAxis = [0, 1, 0];
|
|
31
|
-
const out = applyMatrix3(R, yAxis);
|
|
32
|
-
// Expect [-1, 0, 0]
|
|
33
|
-
absClose(out[0], -1, 1e-12);
|
|
34
|
-
absClose(out[1], 0, 1e-12);
|
|
35
|
-
absClose(out[2], 0, 1e-12);
|
|
36
|
-
});
|
|
37
|
-
test('leaves Z component unchanged (rotation about Z)', () => {
|
|
38
|
-
const R = rot3(1.234);
|
|
39
|
-
const v = [1, 2, 3];
|
|
40
|
-
const out = applyMatrix3(R, v);
|
|
41
|
-
relClose(out[2], v[2]); // z unchanged
|
|
42
|
-
});
|
|
43
|
-
test('is orthonormal: RᵀR ≈ I', () => {
|
|
44
|
-
const R = rot3(2.345);
|
|
45
|
-
const RtR = matMul3(transpose3(R), R);
|
|
46
|
-
matRelClose(RtR, I3, 1e-12);
|
|
47
|
-
});
|
|
48
|
-
test('has determinant +1 (proper rotation)', () => {
|
|
49
|
-
const R = rot3(0.789);
|
|
50
|
-
absClose(det3(R), 1, 1e-12, `det(R) expected ~1`);
|
|
51
|
-
});
|
|
52
|
-
test('inverse equals rotation by -theta: R(theta) * R(-theta) ≈ I', () => {
|
|
53
|
-
const theta = 0.456;
|
|
54
|
-
const R = rot3(theta);
|
|
55
|
-
const Rinv = rot3(-0.456);
|
|
56
|
-
matRelClose(matMul3(R, Rinv), I3, 1e-12);
|
|
57
|
-
});
|
|
58
|
-
test('throws TypeError when theta is not finite', () => {
|
|
59
|
-
assert.throws(() => rot3(Number.NaN), (err) => err instanceof TypeError &&
|
|
60
|
-
err.message === 'theta must be finite. Received: NaN');
|
|
61
|
-
assert.throws(() => rot3(Number.POSITIVE_INFINITY), (err) => err instanceof TypeError &&
|
|
62
|
-
err.message === 'theta must be finite. Received: Infinity');
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
//# sourceMappingURL=rot-3.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rot-3.spec.js","sourceRoot":"","sources":["../../../../src/categories/helpers/__tests__/rot-3.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"solve-kepler-bisection.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/kepler/__tests__/solve-kepler-bisection.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert/strict';
|
|
2
|
-
import test, { describe } from 'node:test';
|
|
3
|
-
import { solveKeplerBisection } from '../solve-kepler-bisection';
|
|
4
|
-
import { angleClose } from 'packages/equations/src/__tests__/helpers';
|
|
5
|
-
import { TWO_PI } from '@interstellar-tools/constants';
|
|
6
|
-
import { norm2pi, residual } from '../../helpers/misc';
|
|
7
|
-
describe('solveKeplerBisection', () => {
|
|
8
|
-
test('basic correctness: residual close to 0 (e=0.5, M=1.234)', () => {
|
|
9
|
-
const e = 0.5;
|
|
10
|
-
const M = 1.234;
|
|
11
|
-
const tol = 1e-12;
|
|
12
|
-
const E = solveKeplerBisection(M, e, 200, tol);
|
|
13
|
-
assert.ok(E >= 0 && E < TWO_PI, 'E not in [0, 2π)');
|
|
14
|
-
assert.ok(Math.abs(residual(E, e, M)) < tol, 'residual not within tolerance');
|
|
15
|
-
});
|
|
16
|
-
test('circular case e=0 → E = M (mod 2π)', () => {
|
|
17
|
-
const e = 0;
|
|
18
|
-
const M = (7 * Math.PI); // maps to π
|
|
19
|
-
const E = solveKeplerBisection(M, e, 50, 1e-12);
|
|
20
|
-
angleClose(E, norm2pi(M), 1e-12);
|
|
21
|
-
});
|
|
22
|
-
test('near-parabolic (e≈1): convergence and residual check', () => {
|
|
23
|
-
const e = 0.999;
|
|
24
|
-
const M = (0.9 * Math.PI);
|
|
25
|
-
const E = solveKeplerBisection(M, e, 500, 1e-12);
|
|
26
|
-
assert.ok(E >= 0 && E < TWO_PI);
|
|
27
|
-
assert.ok(Math.abs(residual(E, e, M)) < 1e-12);
|
|
28
|
-
});
|
|
29
|
-
test('normalizes M to [0, 2π): negative M and large M match normalized result', () => {
|
|
30
|
-
const e = 0.3;
|
|
31
|
-
const M1 = (-3 * Math.PI); // ≡ π (mod 2π)
|
|
32
|
-
const M2 = (13 * Math.PI); // ≡ π (mod 2π)
|
|
33
|
-
const E1 = solveKeplerBisection(M1, e, 200, 1e-12);
|
|
34
|
-
const E2 = solveKeplerBisection(M2, e, 200, 1e-12);
|
|
35
|
-
const Enorm = solveKeplerBisection(Math.PI, e, 200, 1e-12);
|
|
36
|
-
angleClose(E1, Enorm, 1e-12);
|
|
37
|
-
angleClose(E2, Enorm, 1e-12);
|
|
38
|
-
});
|
|
39
|
-
test('early exit at endpoints: M≈0 and M≈2π both return ~0', () => {
|
|
40
|
-
const e = 0.42;
|
|
41
|
-
const tol = 1e-12;
|
|
42
|
-
const M0 = 1e-13; // |F(0)| < tol
|
|
43
|
-
const E0 = solveKeplerBisection(M0, e, 5, tol);
|
|
44
|
-
angleClose(E0, 0, 1e-12);
|
|
45
|
-
const M2pi = (2 * Math.PI - 1e-13); // |F(2π)| < tol ⇒ returns 0
|
|
46
|
-
const E2 = solveKeplerBisection(M2pi, e, 5, tol);
|
|
47
|
-
angleClose(E2, 0, 1e-12);
|
|
48
|
-
});
|
|
49
|
-
test('monotonic mapping: if M1 < M2 then E1 < E2 (same e)', () => {
|
|
50
|
-
const e = 0.7;
|
|
51
|
-
const M1 = 0.1;
|
|
52
|
-
const M2 = 3.0;
|
|
53
|
-
const E1 = solveKeplerBisection(M1, e, 300, 1e-12);
|
|
54
|
-
const E2 = solveKeplerBisection(M2, e, 300, 1e-12);
|
|
55
|
-
assert.ok(E1 < E2, `Expected E1 < E2 but got E1=${E1}, E2=${E2}`);
|
|
56
|
-
});
|
|
57
|
-
test('input validation: TypeError for non-number M', () => {
|
|
58
|
-
assert.throws(() => solveKeplerBisection('1.0', 0.2, 100, 1e-9), TypeError);
|
|
59
|
-
});
|
|
60
|
-
test('input validation: RangeError for non-finite M', () => {
|
|
61
|
-
assert.throws(() => solveKeplerBisection(NaN, 0.2, 100, 1e-9), RangeError);
|
|
62
|
-
assert.throws(() => solveKeplerBisection(Infinity, 0.2, 100, 1e-9), RangeError);
|
|
63
|
-
});
|
|
64
|
-
test('input validation: e out of domain throws RangeError', () => {
|
|
65
|
-
assert.throws(() => solveKeplerBisection(1, -0.1, 100, 1e-9), RangeError);
|
|
66
|
-
assert.throws(() => solveKeplerBisection(1, 1, 100, 1e-9), RangeError);
|
|
67
|
-
assert.throws(() => solveKeplerBisection(1, 1.2, 100, 1e-9), RangeError);
|
|
68
|
-
});
|
|
69
|
-
test('input validation: maxIter and tolerance must be positive finite', () => {
|
|
70
|
-
assert.throws(() => solveKeplerBisection(1, 0.1, 0, 1e-9), RangeError);
|
|
71
|
-
assert.throws(() => solveKeplerBisection(1, 0.1, -5, 1e-9), RangeError);
|
|
72
|
-
assert.throws(() => solveKeplerBisection(1, 0.1, '100', 1e-9), RangeError);
|
|
73
|
-
assert.throws(() => solveKeplerBisection(1, 0.1, 100, 0), RangeError);
|
|
74
|
-
assert.throws(() => solveKeplerBisection(1, 0.1, 100, '1e-9'), RangeError);
|
|
75
|
-
});
|
|
76
|
-
test('consistency across tolerances: tighter tol refines E (residual non-increasing)', () => {
|
|
77
|
-
const e = 0.45;
|
|
78
|
-
const M = 2.2;
|
|
79
|
-
const E1 = solveKeplerBisection(M, e, 100, 1e-6);
|
|
80
|
-
const E2 = solveKeplerBisection(M, e, 200, 1e-12);
|
|
81
|
-
const r1 = Math.abs(residual(E1, e, M));
|
|
82
|
-
const r2 = Math.abs(residual(E2, e, M));
|
|
83
|
-
assert.ok(r2 <= r1 + 1e-15, `expected residual to not increase: r1=${r1}, r2=${r2}`);
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
//# sourceMappingURL=solve-kepler-bisection.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"solve-kepler-bisection.spec.js","sourceRoot":"","sources":["../../../../src/categories/kepler/__tests__/solve-kepler-bisection.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"solve-kepler-high-eccentricity.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/kepler/__tests__/solve-kepler-high-eccentricity.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert/strict';
|
|
2
|
-
import test, { describe } from 'node:test';
|
|
3
|
-
import { solveKeplerHighEccentricity } from '../solve-kepler-high-eccentricity';
|
|
4
|
-
const EPSILON = 1e-9;
|
|
5
|
-
const assertApproxEqual = (actual, expected) => {
|
|
6
|
-
assert.ok(Math.abs(actual - expected) < EPSILON, `Expected ~${expected}, got ${actual}`);
|
|
7
|
-
};
|
|
8
|
-
// **Define test cases based on Halley's Comet & Comet Hale-Bopp**
|
|
9
|
-
const testCases = [
|
|
10
|
-
{
|
|
11
|
-
name: "Halley's Comet (Typical Case)",
|
|
12
|
-
M: (38.38 * Math.PI) / 180, // Mean anomaly converted to radians
|
|
13
|
-
e: 0.96714,
|
|
14
|
-
expected: 1.63500444611954 // Placeholder expected value (needs verification)
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
name: 'Comet Hale-Bopp (Extreme Eccentricity)',
|
|
18
|
-
M: (180 * Math.PI) / 180,
|
|
19
|
-
e: 0.9951,
|
|
20
|
-
expected: Math.PI // Placeholder expected value (Kepler's equation should return π for M=π)
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
name: "Halley's Comet (Small M)",
|
|
24
|
-
M: 0.01, // Small anomaly case
|
|
25
|
-
e: 0.96714,
|
|
26
|
-
expected: 0.238206497655823 // Placeholder expected value (needs verification)
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
name: 'Comet Hale-Bopp (Large M)',
|
|
30
|
-
M: 5, // Large anomaly case
|
|
31
|
-
e: 0.9951,
|
|
32
|
-
expected: 4.1553401654182 // Placeholder expected value (needs verification)
|
|
33
|
-
}
|
|
34
|
-
];
|
|
35
|
-
describe('solveKeplerHighEccentricity (Real Data Tests)', () => {
|
|
36
|
-
for (const { name, M, e, expected } of testCases) {
|
|
37
|
-
test(name, () => {
|
|
38
|
-
const result = solveKeplerHighEccentricity(M, e);
|
|
39
|
-
assertApproxEqual(result, expected);
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
describe('solveKeplerHighEccentricity (General Behavior Tests)', () => {
|
|
44
|
-
test('converges for typical values', () => {
|
|
45
|
-
const M = Math.PI / 4; // 45 degrees in radians
|
|
46
|
-
const e = 0.95; // High eccentricity
|
|
47
|
-
const result = solveKeplerHighEccentricity(M, e);
|
|
48
|
-
assertApproxEqual(result, 1.7242367109653982);
|
|
49
|
-
});
|
|
50
|
-
test('works for small M values', () => {
|
|
51
|
-
const M = 0.01;
|
|
52
|
-
const e = 0.99;
|
|
53
|
-
const result = solveKeplerHighEccentricity(M, e);
|
|
54
|
-
assertApproxEqual(result, 0.3422703164917758);
|
|
55
|
-
});
|
|
56
|
-
test('handles M = 0 case correctly', () => {
|
|
57
|
-
const M = 0;
|
|
58
|
-
const e = 0.98;
|
|
59
|
-
const result = solveKeplerHighEccentricity(M, e);
|
|
60
|
-
assertApproxEqual(result, 0); // Eccentric anomaly should also be zero
|
|
61
|
-
});
|
|
62
|
-
test('handles large M values', () => {
|
|
63
|
-
const M = 5; // Large mean anomaly
|
|
64
|
-
const e = 0.95;
|
|
65
|
-
const result = solveKeplerHighEccentricity(M, e);
|
|
66
|
-
assertApproxEqual(result, 4.181000769932799);
|
|
67
|
-
});
|
|
68
|
-
test('ensures correct output for extremely large M', () => {
|
|
69
|
-
const M = 10 * Math.PI; // Large anomaly
|
|
70
|
-
const e = 0.97;
|
|
71
|
-
const result = solveKeplerHighEccentricity(M, e, Math.max(50, Math.floor(M)));
|
|
72
|
-
assertApproxEqual(result, 0);
|
|
73
|
-
});
|
|
74
|
-
test('does not exceed max iterations', () => {
|
|
75
|
-
const M = 3;
|
|
76
|
-
const e = 0.999; // Extremely high eccentricity
|
|
77
|
-
const result = solveKeplerHighEccentricity(M, e, Math.max(50, Math.floor(M)), 1e-9);
|
|
78
|
-
assert.ok(result !== null); // Ensure it still produces a valid number
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
//# sourceMappingURL=solve-kepler-high-eccentricity.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"solve-kepler-high-eccentricity.spec.js","sourceRoot":"","sources":["../../../../src/categories/kepler/__tests__/solve-kepler-high-eccentricity.spec.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAGhF,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAE,QAAgB,EAAE,EAAE;IAC7D,MAAM,CAAC,EAAE,CACP,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,OAAO,EACrC,aAAa,QAAQ,SAAS,MAAM,EAAE,CACvC,CAAC;AACJ,CAAC,CAAC;AACF,kEAAkE;AAClE,MAAM,SAAS,GAAG;IAChB;QACE,IAAI,EAAE,+BAA+B;QACrC,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,oCAAoC;QAChE,CAAC,EAAE,OAAO;QACV,QAAQ,EAAE,gBAAgB,CAAC,kDAAkD;KAC9E;IACD;QACE,IAAI,EAAE,wCAAwC;QAC9C,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG;QACxB,CAAC,EAAE,MAAM;QACT,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,yEAAyE;KAC5F;IACD;QACE,IAAI,EAAE,0BAA0B;QAChC,CAAC,EAAE,IAAI,EAAE,qBAAqB;QAC9B,CAAC,EAAE,OAAO;QACV,QAAQ,EAAE,iBAAiB,CAAC,kDAAkD;KAC/E;IACD;QACE,IAAI,EAAE,2BAA2B;QACjC,CAAC,EAAE,CAAC,EAAE,qBAAqB;QAC3B,CAAC,EAAE,MAAM;QACT,QAAQ,EAAE,eAAe,CAAC,kDAAkD;KAC7E;CACF,CAAC;AAEF,QAAQ,CAAC,+CAA+C,EAAE,GAAG,EAAE;IAC7D,KAAK,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,SAAS,EAAE,CAAC;QACjD,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;YACd,MAAM,MAAM,GAAG,2BAA2B,CAAC,CAAY,EAAE,CAAC,CAAC,CAAC;YAE5D,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sDAAsD,EAAE,GAAG,EAAE;IACpE,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACxC,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,wBAAwB;QAC/C,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,oBAAoB;QACpC,MAAM,MAAM,GAAG,2BAA2B,CAAC,CAAY,EAAE,CAAC,CAAC,CAAC;QAE5D,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,GAAG,IAAI,CAAC;QACf,MAAM,CAAC,GAAG,IAAI,CAAC;QACf,MAAM,MAAM,GAAG,2BAA2B,CAAC,CAAY,EAAE,CAAC,CAAC,CAAC;QAE5D,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACxC,MAAM,CAAC,GAAG,CAAC,CAAC;QACZ,MAAM,CAAC,GAAG,IAAI,CAAC;QACf,MAAM,MAAM,GAAG,2BAA2B,CAAC,CAAY,EAAE,CAAC,CAAC,CAAC;QAE5D,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,wCAAwC;IACxE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAClC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,qBAAqB;QAClC,MAAM,CAAC,GAAG,IAAI,CAAC;QACf,MAAM,MAAM,GAAG,2BAA2B,CAAC,CAAY,EAAE,CAAC,CAAC,CAAC;QAE5D,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,gBAAgB;QACxC,MAAM,CAAC,GAAG,IAAI,CAAC;QACf,MAAM,MAAM,GAAG,2BAA2B,CACxC,CAAY,EACZ,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAC5B,CAAC;QAEF,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,GAAG,CAAC,CAAC;QACZ,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,8BAA8B;QAC/C,MAAM,MAAM,GAAG,2BAA2B,CACxC,CAAY,EACZ,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAC3B,IAAI,CACL,CAAC;QAEF,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,0CAA0C;IACxE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"solve-kepler-newton-raphson.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/kepler/__tests__/solve-kepler-newton-raphson.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert/strict';
|
|
2
|
-
import test, { describe } from 'node:test';
|
|
3
|
-
import { solveKeplerNewtonRaphson } from '../solve-kepler-newton-raphson';
|
|
4
|
-
const EPSILON = 1e-9;
|
|
5
|
-
const assertApproxEqual = (actual, expected) => {
|
|
6
|
-
assert.ok(Math.abs(actual - expected) < EPSILON, `Expected ~${expected}, got ${actual}`);
|
|
7
|
-
};
|
|
8
|
-
describe('solveKeplerNewtonRaphson', () => {
|
|
9
|
-
test('converges for typical values', () => {
|
|
10
|
-
const M = Math.PI / 4; // 45 degrees in radians
|
|
11
|
-
const e = 0.1; // Low eccentricity
|
|
12
|
-
const result = solveKeplerNewtonRaphson(M, e, 50, 1e-9);
|
|
13
|
-
assertApproxEqual(result, 0.8612648849); // Expected numerical result
|
|
14
|
-
});
|
|
15
|
-
test('works for small M values', () => {
|
|
16
|
-
const M = 0.01;
|
|
17
|
-
const e = 0.2;
|
|
18
|
-
const result = solveKeplerNewtonRaphson(M, e, 50, 1e-9);
|
|
19
|
-
assertApproxEqual(result, 0.0124999186);
|
|
20
|
-
});
|
|
21
|
-
test('handles M = 0 case correctly', () => {
|
|
22
|
-
const M = 0;
|
|
23
|
-
const e = 0.5;
|
|
24
|
-
const result = solveKeplerNewtonRaphson(M, e, 50, 1e-9);
|
|
25
|
-
assertApproxEqual(result, 0); // Eccentric anomaly should also be zero
|
|
26
|
-
});
|
|
27
|
-
test('handles high eccentricity values correctly', () => {
|
|
28
|
-
const M = Math.PI / 3;
|
|
29
|
-
const e = 0.95;
|
|
30
|
-
const result = solveKeplerNewtonRaphson(M, e, 50, 1e-9);
|
|
31
|
-
assertApproxEqual(result, 1.9349139832);
|
|
32
|
-
});
|
|
33
|
-
test('ensures correct output for nearly parabolic orbits', () => {
|
|
34
|
-
const M = Math.PI / 6;
|
|
35
|
-
const e = 0.97; // Nearly parabolic
|
|
36
|
-
const result = solveKeplerNewtonRaphson(M, e, 50, 1e-9);
|
|
37
|
-
assertApproxEqual(result, 1.4904711747);
|
|
38
|
-
});
|
|
39
|
-
test('throws RangeError for invalid eccentricities', () => {
|
|
40
|
-
assert.throws(() => solveKeplerNewtonRaphson((Math.PI / 4), -0.1, 50, 1e-9), RangeError);
|
|
41
|
-
assert.throws(() => solveKeplerNewtonRaphson((Math.PI / 4), 1.2, 50, 1e-9), RangeError);
|
|
42
|
-
});
|
|
43
|
-
test('returns NaN if the method does not converge', () => {
|
|
44
|
-
const M = 3;
|
|
45
|
-
const e = 0.9999; // Extremely high eccentricity
|
|
46
|
-
const result = solveKeplerNewtonRaphson(M, e, 5, 1e-9); // Very low maxIter
|
|
47
|
-
assert.ok(Number.isNaN(result));
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
//# sourceMappingURL=solve-kepler-newton-raphson.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"solve-kepler-newton-raphson.spec.js","sourceRoot":"","sources":["../../../../src/categories/kepler/__tests__/solve-kepler-newton-raphson.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"solve-kepler.int.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/kepler/__tests__/solve-kepler.int.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert/strict';
|
|
2
|
-
import test, { describe } from 'node:test';
|
|
3
|
-
import { solveKepler } from '../solve-kepler';
|
|
4
|
-
const EPSILON = 1e-8; // Floating-point tolerance
|
|
5
|
-
const assertApproxEqual = (actual, expected) => {
|
|
6
|
-
assert.ok(Math.abs(actual - expected) < EPSILON, `Expected ~${expected}, got ${actual}`);
|
|
7
|
-
};
|
|
8
|
-
describe('solveKepler', () => {
|
|
9
|
-
test('Circular Orbit (e = 0)', () => {
|
|
10
|
-
const M = Math.PI / 4; // 45 degrees
|
|
11
|
-
const e = 0.0; // Circular orbit
|
|
12
|
-
const result = solveKepler(M, e);
|
|
13
|
-
assertApproxEqual(result, M); // E = M for circular orbits
|
|
14
|
-
});
|
|
15
|
-
test('Small Eccentricity (e = 0.1)', () => {
|
|
16
|
-
const M = Math.PI / 4;
|
|
17
|
-
const e = 0.1;
|
|
18
|
-
const expectedE = 0.8612648848681754;
|
|
19
|
-
const result = solveKepler(M, e);
|
|
20
|
-
assertApproxEqual(result, expectedE);
|
|
21
|
-
});
|
|
22
|
-
test('Moderate Eccentricity (e = 0.5)', () => {
|
|
23
|
-
const M = Math.PI / 2;
|
|
24
|
-
const e = 0.5;
|
|
25
|
-
const expectedE = 2.02097993808977;
|
|
26
|
-
const result = solveKepler(M, e);
|
|
27
|
-
assertApproxEqual(result, expectedE);
|
|
28
|
-
});
|
|
29
|
-
test('High Eccentricity (e = 0.8)', () => {
|
|
30
|
-
const M = Math.PI / 6;
|
|
31
|
-
const e = 0.8;
|
|
32
|
-
const expectedE = 1.2929083458551878;
|
|
33
|
-
const result = solveKepler(M, e);
|
|
34
|
-
assertApproxEqual(result, expectedE);
|
|
35
|
-
});
|
|
36
|
-
test('Nearly Parabolic Orbit (e = 0.99)', () => {
|
|
37
|
-
const M = Math.PI / 4;
|
|
38
|
-
const e = 0.99;
|
|
39
|
-
const expectedE = 1.758085607716896;
|
|
40
|
-
const result = solveKepler(M, e);
|
|
41
|
-
assertApproxEqual(result, expectedE);
|
|
42
|
-
});
|
|
43
|
-
test('Mean Anomaly at 0', () => {
|
|
44
|
-
const M = 0;
|
|
45
|
-
const e = 0.5;
|
|
46
|
-
const result = solveKepler(M, e);
|
|
47
|
-
assertApproxEqual(result, 0); // E = 0 when M = 0
|
|
48
|
-
});
|
|
49
|
-
test('Mean Anomaly at π', () => {
|
|
50
|
-
const M = Math.PI;
|
|
51
|
-
const e = 0.5;
|
|
52
|
-
const expectedE = Math.PI; // At M = π, E should also be π
|
|
53
|
-
const result = solveKepler(M, e);
|
|
54
|
-
assert.equal(result, expectedE);
|
|
55
|
-
});
|
|
56
|
-
test('Mean Anomaly at 2π', () => {
|
|
57
|
-
const M = 2 * Math.PI;
|
|
58
|
-
const e = 0.5;
|
|
59
|
-
const result = solveKepler(M, e);
|
|
60
|
-
assertApproxEqual(result, 0); // Should wrap to 0
|
|
61
|
-
});
|
|
62
|
-
test('Convergence with max iterations', () => {
|
|
63
|
-
const M = Math.PI / 3;
|
|
64
|
-
const e = 0.7;
|
|
65
|
-
const result = solveKepler(M, e, 100); // Force more iterations
|
|
66
|
-
assert.ok(result >= 0 && result < 2 * Math.PI, `Expected result in range [0, 2π], got ${result}`);
|
|
67
|
-
});
|
|
68
|
-
test('Invalid Eccentricity (e < 0) Throws Error', () => {
|
|
69
|
-
assert.throws(() => solveKepler((Math.PI / 4), -0.1), RangeError);
|
|
70
|
-
});
|
|
71
|
-
test('Invalid Eccentricity (e >= 1) Throws Error', () => {
|
|
72
|
-
assert.throws(() => solveKepler((Math.PI / 4), 1), RangeError);
|
|
73
|
-
assert.throws(() => solveKepler((Math.PI / 4), 1.1), RangeError);
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
//# sourceMappingURL=solve-kepler.int.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"solve-kepler.int.spec.js","sourceRoot":"","sources":["../../../../src/categories/kepler/__tests__/solve-kepler.int.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"combine-burns-delta-v.spec.d.ts","sourceRoot":"","sources":["../../../../src/categories/manoeuvres/__tests__/combine-burns-delta-v.spec.ts"],"names":[],"mappings":""}
|