@interstellar-tools/equations 0.6.0 → 0.8.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.
Files changed (47) hide show
  1. package/dist/__tests__/compute-angle.int.spec.js +10 -10
  2. package/dist/__tests__/compute-angle.int.spec.js.map +1 -1
  3. package/dist/__tests__/eccentric-to-true-anomaly.spec.js +4 -4
  4. package/dist/__tests__/eccentric-to-true-anomaly.spec.js.map +1 -1
  5. package/dist/__tests__/flight-path-angle-from-true-anomaly.spec.d.ts +2 -0
  6. package/dist/__tests__/flight-path-angle-from-true-anomaly.spec.d.ts.map +1 -0
  7. package/dist/__tests__/flight-path-angle-from-true-anomaly.spec.js +92 -0
  8. package/dist/__tests__/flight-path-angle-from-true-anomaly.spec.js.map +1 -0
  9. package/dist/__tests__/helpers/index.d.ts +3 -0
  10. package/dist/__tests__/helpers/index.d.ts.map +1 -1
  11. package/dist/__tests__/helpers/index.js +13 -0
  12. package/dist/__tests__/helpers/index.js.map +1 -1
  13. package/dist/__tests__/solve-kepler-bisection.spec.js +76 -32
  14. package/dist/__tests__/solve-kepler-bisection.spec.js.map +1 -1
  15. package/dist/__tests__/solve-kepler-high-eccentricity.spec.js.map +1 -1
  16. package/dist/__tests__/solve-kepler-newton-raphson.spec.js +2 -2
  17. package/dist/__tests__/solve-kepler-newton-raphson.spec.js.map +1 -1
  18. package/dist/__tests__/solve-kepler.int.spec.js +3 -3
  19. package/dist/__tests__/solve-kepler.int.spec.js.map +1 -1
  20. package/dist/__tests__/true-to-mean-anomaly.spec.js +7 -7
  21. package/dist/__tests__/true-to-mean-anomaly.spec.js.map +1 -1
  22. package/dist/categories/anomalies/eccentric-to-true-anomaly.d.ts.map +1 -1
  23. package/dist/categories/anomalies/eccentric-to-true-anomaly.js +1 -1
  24. package/dist/categories/anomalies/eccentric-to-true-anomaly.js.map +1 -1
  25. package/dist/categories/anomalies/mean-to-eccentric-anomaly.js.map +1 -1
  26. package/dist/categories/anomalies/true-to-mean-anomaly.d.ts +4 -3
  27. package/dist/categories/anomalies/true-to-mean-anomaly.d.ts.map +1 -1
  28. package/dist/categories/anomalies/true-to-mean-anomaly.js +2 -2
  29. package/dist/categories/anomalies/true-to-mean-anomaly.js.map +1 -1
  30. package/dist/categories/kepler/solve-kepler-bisection.d.ts +17 -57
  31. package/dist/categories/kepler/solve-kepler-bisection.d.ts.map +1 -1
  32. package/dist/categories/kepler/solve-kepler-bisection.js +60 -69
  33. package/dist/categories/kepler/solve-kepler-bisection.js.map +1 -1
  34. package/dist/categories/kepler/solve-kepler-high-eccentricity.js.map +1 -1
  35. package/dist/categories/kepler/solve-kepler-newton-raphson.d.ts +1 -1
  36. package/dist/categories/kepler/solve-kepler-newton-raphson.d.ts.map +1 -1
  37. package/dist/categories/kepler/solve-kepler-newton-raphson.js.map +1 -1
  38. package/dist/categories/kepler/solve-kepler.js.map +1 -1
  39. package/dist/categories/orbits/flight-path-angle-from-true-anomaly.d.ts +30 -0
  40. package/dist/categories/orbits/flight-path-angle-from-true-anomaly.d.ts.map +1 -0
  41. package/dist/categories/orbits/flight-path-angle-from-true-anomaly.js +40 -0
  42. package/dist/categories/orbits/flight-path-angle-from-true-anomaly.js.map +1 -0
  43. package/dist/index.d.ts +1 -0
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +1 -0
  46. package/dist/index.js.map +1 -1
  47. package/package.json +1 -1
@@ -9,34 +9,34 @@ describe('computeAngle', () => {
9
9
  celestialBody: {
10
10
  e: 0.0167,
11
11
  angle: 0,
12
- period: { value: 365.25, unit: 'day' }
12
+ period: { value: 365.25, unit: 'd' }
13
13
  },
14
- timeStep: { value: 1, unit: 'day' }
14
+ timeStep: { value: 1, unit: 'd' }
15
15
  },
16
16
  {
17
17
  celestialBody: {
18
18
  e: 0.1,
19
19
  angle: Math.PI / 3,
20
- period: { value: 687, unit: 'day' }
20
+ period: { value: 687, unit: 'd' }
21
21
  },
22
- timeStep: { value: 1, unit: 'day' }
22
+ timeStep: { value: 1, unit: 'd' }
23
23
  },
24
24
  // Retrograde motion test cases
25
25
  {
26
26
  celestialBody: {
27
27
  e: 0.05,
28
28
  angle: Math.PI / 2,
29
- period: { value: -365.25, unit: 'day' } // Retrograde motion
29
+ period: { value: -365.25, unit: 'd' } // Retrograde motion
30
30
  },
31
- timeStep: { value: 1, unit: 'day' }
31
+ timeStep: { value: 1, unit: 'd' }
32
32
  },
33
33
  {
34
34
  celestialBody: {
35
35
  e: 0.2,
36
36
  angle: -Math.PI / 4,
37
- period: { value: -4332.59, unit: 'day' } // Retrograde motion
37
+ period: { value: -4332.59, unit: 'd' } // Retrograde motion
38
38
  },
39
- timeStep: { value: 10, unit: 'day' }
39
+ timeStep: { value: 10, unit: 'd' }
40
40
  }
41
41
  ];
42
42
  test('computes correct true anomaly', () => {
@@ -51,9 +51,9 @@ describe('computeAngle', () => {
51
51
  e: 0.8,
52
52
  q: 1.2,
53
53
  angle: Math.PI / 4,
54
- period: { value: 2000, unit: 'day' }
54
+ period: { value: 2000, unit: 'd' }
55
55
  }; // Adding 'q' property to classify as comet
56
- const timeStep = { value: 5, unit: 'day' };
56
+ const timeStep = { value: 5, unit: 'd' };
57
57
  const expected = wrapAngle(computeAngle(comet, timeStep));
58
58
  const result = wrapAngle(computeAngle(comet, timeStep));
59
59
  assert.ok(Math.abs(result - expected) < 1e-4, `Expected comet angle ≈ ${expected}, but got ${result}`);
@@ -1 +1 @@
1
- {"version":3,"file":"compute-angle.int.spec.js","sourceRoot":"","sources":["../../src/__tests__/compute-angle.int.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compute-angle.int.spec.js","sourceRoot":"","sources":["../../src/__tests__/compute-angle.int.spec.ts"],"names":[],"mappings":"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"}
@@ -22,12 +22,12 @@ describe('eccentricToTrueAnomaly', () => {
22
22
  assert.strictEqual(eccentricToTrueAnomaly(0, 1), 0); // Parabolic orbit case
23
23
  });
24
24
  test('throws on invalid eccentricity', () => {
25
- assert.throws(() => eccentricToTrueAnomaly(Math.PI / 3, -0.1), RangeError);
26
- assert.throws(() => eccentricToTrueAnomaly(Math.PI / 3, 1.2), RangeError);
25
+ assert.throws(() => eccentricToTrueAnomaly((Math.PI / 3), -0.1), RangeError);
26
+ assert.throws(() => eccentricToTrueAnomaly((Math.PI / 3), 1.2), RangeError);
27
27
  });
28
28
  test('ensures numerical stability near E = π', () => {
29
- assert.strictEqual(eccentricToTrueAnomaly(Math.PI + 1e-11, 0.5), Math.PI);
30
- assert.strictEqual(eccentricToTrueAnomaly(Math.PI - 1e-11, 0.5), Math.PI);
29
+ assert.strictEqual(eccentricToTrueAnomaly((Math.PI + 1e-11), 0.5), Math.PI);
30
+ assert.strictEqual(eccentricToTrueAnomaly((Math.PI - 1e-11), 0.5), Math.PI);
31
31
  });
32
32
  });
33
33
  //# sourceMappingURL=eccentric-to-true-anomaly.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"eccentric-to-true-anomaly.spec.js","sourceRoot":"","sources":["../../src/__tests__/eccentric-to-true-anomaly.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eccentric-to-true-anomaly.spec.js","sourceRoot":"","sources":["../../src/__tests__/eccentric-to-true-anomaly.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=flight-path-angle-from-true-anomaly.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flight-path-angle-from-true-anomaly.spec.d.ts","sourceRoot":"","sources":["../../src/__tests__/flight-path-angle-from-true-anomaly.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,92 @@
1
+ import assert from 'node:assert/strict';
2
+ import test, { describe } from 'node:test';
3
+ import { flightPathAngleFromTrueAnomaly } from '../categories/orbits/flight-path-angle-from-true-anomaly';
4
+ import { absClose } from './helpers';
5
+ const EPS = 1e-12;
6
+ const PI = Math.PI;
7
+ describe('flightPathAngleFromTrueAnomaly', () => {
8
+ test('e = 0 (circular): gamma = 0 for any ν', () => {
9
+ const e = 0;
10
+ const nus = [
11
+ 0,
12
+ (PI / 6),
13
+ (PI / 2),
14
+ PI,
15
+ -1.1
16
+ ];
17
+ for (const nu of nus) {
18
+ const g = flightPathAngleFromTrueAnomaly(nu, e);
19
+ absClose(g, 0, EPS, `gamma(ν=${nu}, e=0) should be 0`);
20
+ }
21
+ });
22
+ test('elliptic examples: tan(γ) ≈ (e sin ν) / (1 + e cos ν)', () => {
23
+ const cases = [
24
+ { nu: 0.7, e: 0.2 },
25
+ { nu: 1.2, e: 0.7 },
26
+ { nu: 2.0, e: 0.5 }
27
+ ];
28
+ for (const { nu, e } of cases) {
29
+ const gamma = flightPathAngleFromTrueAnomaly(nu, e);
30
+ const ratio = (e * Math.sin(nu)) / (1 + e * Math.cos(nu));
31
+ // Avoiding points too close to denom=0 by choice of cases above
32
+ absClose(Math.tan(gamma), ratio, 1e-11, `tan(gamma) mismatch for ν=${nu}, e=${e}`);
33
+ // For 0 ≤ e < 1, |γ| < π/2
34
+ assert.ok(Math.abs(gamma) < PI / 2 - 1e-15, 'elliptic γ must be in (-π/2, π/2)');
35
+ }
36
+ });
37
+ test('sign symmetry: γ(-ν) = -γ(ν) for elliptic case', () => {
38
+ const e = 0.4;
39
+ const nu = 0.8;
40
+ const g1 = flightPathAngleFromTrueAnomaly(nu, e);
41
+ const g2 = flightPathAngleFromTrueAnomaly(-nu, e);
42
+ absClose(g1, -g2, 1e-12);
43
+ });
44
+ test('limits: ν = 0 and ν = π both yield γ = 0 for 0 ≤ e < 1', () => {
45
+ const es = [0, 0.1, 0.5, 0.9];
46
+ for (const e of es) {
47
+ const g0 = flightPathAngleFromTrueAnomaly(0, e);
48
+ absClose(g0, 0);
49
+ const gpi = flightPathAngleFromTrueAnomaly(PI, e);
50
+ absClose(gpi, 0);
51
+ }
52
+ });
53
+ test('parabolic special-case: e = 1 and ν = π returns 0 by design', () => {
54
+ const e = 1;
55
+ const nu = PI;
56
+ const g = flightPathAngleFromTrueAnomaly(nu, e);
57
+ absClose(g, 0);
58
+ });
59
+ test('parabolic (e=1): for general ν, γ ≈ ν/2 (principal value), away from ν=π', () => {
60
+ const e = 1;
61
+ const nus = [0.6, 1.0, -1.2];
62
+ for (const nu of nus) {
63
+ const g = flightPathAngleFromTrueAnomaly(nu, e);
64
+ // Using identity tan γ = sin ν / (1 + cos ν) = tan(ν/2)
65
+ // γ = atan2(sin(ν/2), cos(ν/2)) → principal value ≈ ν/2 for |ν| < π
66
+ absClose(g, nu / 2, 1e-12, `parabolic γ ≈ ν/2 failed for ν=${nu}`);
67
+ }
68
+ });
69
+ test('hyperbolic asymptote: e > 1 and ν = arccos(-1/e) ⇒ γ → +π/2', () => {
70
+ const e = 1.5;
71
+ const nu0 = Math.acos(-1 / e); // 1 + e cos ν0 = 0
72
+ const g = flightPathAngleFromTrueAnomaly(nu0, e);
73
+ absClose(g, PI / 2, 1e-12);
74
+ });
75
+ test('hyperbolic asymptote (negative): e > 1 and ν = -arccos(-1/e) ⇒ γ → -π/2', () => {
76
+ const e = 1.5;
77
+ const nu0 = -Math.acos(-1 / e);
78
+ const g = flightPathAngleFromTrueAnomaly(nu0, e);
79
+ absClose(g, -PI / 2, 1e-12);
80
+ });
81
+ test('input validation: throws on non-finite ν or negative e', () => {
82
+ // non-finite nu
83
+ assert.throws(() => flightPathAngleFromTrueAnomaly(NaN, 0.3), /finite/);
84
+ assert.throws(() => flightPathAngleFromTrueAnomaly(Infinity, 0.3), /finite/);
85
+ // negative e
86
+ assert.throws(() => flightPathAngleFromTrueAnomaly(1, -0.01), /≥ 0/);
87
+ // non-finite e
88
+ assert.throws(() => flightPathAngleFromTrueAnomaly(1, NaN), /finite/);
89
+ assert.throws(() => flightPathAngleFromTrueAnomaly(1, Infinity), /finite/);
90
+ });
91
+ });
92
+ //# sourceMappingURL=flight-path-angle-from-true-anomaly.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flight-path-angle-from-true-anomaly.spec.js","sourceRoot":"","sources":["../../src/__tests__/flight-path-angle-from-true-anomaly.spec.ts"],"names":[],"mappings":"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"}
@@ -6,4 +6,7 @@ export declare const scale: (v: Vector3DTupleType, s: number) => Vector3DTupleTy
6
6
  export declare const sub: (a: Vector3DTupleType, b: Vector3DTupleType) => Vector3DTupleType;
7
7
  export declare const absClose: (a: number, b: number, eps?: number, msg?: string) => void;
8
8
  export declare const dot: (a: Vector3DTupleType, b: Vector3DTupleType) => number;
9
+ export declare const norm2pi: (x: number) => number;
10
+ export declare const angleClose: (a: number, b: number, eps?: number) => void;
11
+ export declare const residual: (E: number, e: number, M: number) => number;
9
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/__tests__/helpers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D,eAAO,MAAM,QAAQ,GACnB,GAAG,MAAM,GAAG,IAAI,EAChB,GAAG,MAAM,EACT,YAAW,EACX,MAAM,MAAM,SAUb,CAAC;AAEF,eAAO,MAAM,WAAW,GACtB,GAAG,iBAAiB,EACpB,GAAG,iBAAiB,EACpB,YAAW,EACX,MAAM,MAAM,SAOb,CAAC;AAEF,eAAO,MAAM,IAAI,GAAI,GAAG,iBAAiB,WAExC,CAAC;AAEF,eAAO,MAAM,KAAK,GAAI,GAAG,iBAAiB,EAAE,GAAG,MAAM,KAAG,iBAEvD,CAAC;AAEF,eAAO,MAAM,GAAG,GACd,GAAG,iBAAiB,EACpB,GAAG,iBAAiB,KACnB,iBAEF,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,YAAW,EAAE,MAAM,MAAM,SAEvE,CAAC;AAEF,eAAO,MAAM,GAAG,GAAI,GAAG,iBAAiB,EAAE,GAAG,iBAAiB,WAE7D,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/__tests__/helpers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D,eAAO,MAAM,QAAQ,GACnB,GAAG,MAAM,GAAG,IAAI,EAChB,GAAG,MAAM,EACT,YAAW,EACX,MAAM,MAAM,SAUb,CAAC;AAEF,eAAO,MAAM,WAAW,GACtB,GAAG,iBAAiB,EACpB,GAAG,iBAAiB,EACpB,YAAW,EACX,MAAM,MAAM,SAOb,CAAC;AAEF,eAAO,MAAM,IAAI,GAAI,GAAG,iBAAiB,WAExC,CAAC;AAEF,eAAO,MAAM,KAAK,GAAI,GAAG,iBAAiB,EAAE,GAAG,MAAM,KAAG,iBAEvD,CAAC;AAEF,eAAO,MAAM,GAAG,GACd,GAAG,iBAAiB,EACpB,GAAG,iBAAiB,KACnB,iBAEF,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,YAAW,EAAE,MAAM,MAAM,SAEvE,CAAC;AAEF,eAAO,MAAM,GAAG,GAAI,GAAG,iBAAiB,EAAE,GAAG,iBAAiB,WAE7D,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,GAAG,MAAM,KAAG,MAEnC,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,YAAW,SAI3D,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,WAGvD,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { TWO_PI } from '@interstellar-tools/constants';
1
2
  import assert from 'node:assert/strict';
2
3
  export const relClose = (a, b, eps = 1e-12, msg) => {
3
4
  if (a === null) {
@@ -28,4 +29,16 @@ export const absClose = (a, b, eps = 1e-12, msg) => {
28
29
  export const dot = (a, b) => {
29
30
  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
30
31
  };
32
+ export const norm2pi = (x) => {
33
+ return ((x % TWO_PI) + TWO_PI) % TWO_PI;
34
+ };
35
+ export const angleClose = (a, b, eps = 1e-12) => {
36
+ const da = Math.abs(norm2pi(a) - norm2pi(b));
37
+ const d = Math.min(da, TWO_PI - da);
38
+ assert.ok(d <= eps, `angles not close: |Δ|=${d} > ${eps}`);
39
+ };
40
+ export const residual = (E, e, M) => {
41
+ const Mm = norm2pi(M);
42
+ return E - e * Math.sin(E) - Mm;
43
+ };
31
44
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/__tests__/helpers/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/__tests__/helpers/index.ts"],"names":[],"mappings":"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"}
@@ -1,41 +1,85 @@
1
1
  import assert from 'node:assert/strict';
2
2
  import test, { describe } from 'node:test';
3
3
  import { solveKeplerBisection } from '../categories/kepler/solve-kepler-bisection';
4
+ import { angleClose, norm2pi, residual } from './helpers';
5
+ import { TWO_PI } from '@interstellar-tools/constants';
4
6
  describe('solveKeplerBisection', () => {
5
- test("Solves Kepler's equation for small eccentricities", () => {
6
- const M = Math.PI / 4; // 45 degrees in radians
7
- const e = 0.1;
8
- const expected = solveKeplerBisection(M, e, 50, 1e-9);
9
- const result = solveKeplerBisection(M, e, 50, 1e-9);
10
- assert.ok(Math.abs(result - expected) < 1e-9, `Expected ${expected}, got ${result}`);
11
- });
12
- test("Solves Kepler's equation for moderate eccentricities", () => {
13
- const M = Math.PI / 2; // 90 degrees in radians
7
+ test('basic correctness: residual close to 0 (e=0.5, M=1.234)', () => {
14
8
  const e = 0.5;
15
- const expected = solveKeplerBisection(M, e, 50, 1e-9);
16
- const result = solveKeplerBisection(M, e, 50, 1e-9);
17
- assert.ok(Math.abs(result - expected) < 1e-9, `Expected ${expected}, got ${result}`);
18
- });
19
- test("Solves Kepler's equation for high eccentricities", () => {
20
- const M = Math.PI / 3; // 60 degrees in radians
21
- const e = 0.9;
22
- const expected = solveKeplerBisection(M, e, 50, 1e-9);
23
- const result = solveKeplerBisection(M, e, 50, 1e-9);
24
- assert.ok(Math.abs(result - expected) < 1e-9, `Expected ${expected}, got ${result}`);
25
- });
26
- test('Ensures solution falls within expected bounds', () => {
27
- const M = Math.PI / 6;
28
- const e = 0.4;
29
- const result = solveKeplerBisection(M, e, 50, 1e-9);
30
- assert.ok(result >= 0 && result <= Math.PI, `Eccentric anomaly ${result} out of bounds`);
31
- });
32
- test('Handles convergence within the given tolerance', () => {
33
- const M = Math.PI / 2;
9
+ const M = 1.234;
10
+ const tol = 1e-12;
11
+ const E = solveKeplerBisection(M, e, 200, tol);
12
+ assert.ok(E >= 0 && E < TWO_PI, 'E not in [0, 2π)');
13
+ assert.ok(Math.abs(residual(E, e, M)) < tol, 'residual not within tolerance');
14
+ });
15
+ test('circular case e=0 → E = M (mod 2π)', () => {
16
+ const e = 0;
17
+ const M = (7 * Math.PI); // maps to π
18
+ const E = solveKeplerBisection(M, e, 50, 1e-12);
19
+ angleClose(E, norm2pi(M), 1e-12);
20
+ });
21
+ test('near-parabolic (e≈1): convergence and residual check', () => {
22
+ const e = 0.999;
23
+ const M = (0.9 * Math.PI);
24
+ const E = solveKeplerBisection(M, e, 500, 1e-12);
25
+ assert.ok(E >= 0 && E < TWO_PI);
26
+ assert.ok(Math.abs(residual(E, e, M)) < 1e-12);
27
+ });
28
+ test('normalizes M to [0, 2π): negative M and large M match normalized result', () => {
29
+ const e = 0.3;
30
+ const M1 = (-3 * Math.PI); // ≡ π (mod 2π)
31
+ const M2 = (13 * Math.PI); // ≡ π (mod 2π)
32
+ const E1 = solveKeplerBisection(M1, e, 200, 1e-12);
33
+ const E2 = solveKeplerBisection(M2, e, 200, 1e-12);
34
+ const Enorm = solveKeplerBisection(Math.PI, e, 200, 1e-12);
35
+ angleClose(E1, Enorm, 1e-12);
36
+ angleClose(E2, Enorm, 1e-12);
37
+ });
38
+ test('early exit at endpoints: M≈0 and M≈2π both return ~0', () => {
39
+ const e = 0.42;
40
+ const tol = 1e-12;
41
+ const M0 = 1e-13; // |F(0)| < tol
42
+ const E0 = solveKeplerBisection(M0, e, 5, tol);
43
+ angleClose(E0, 0, 1e-12);
44
+ const M2pi = (2 * Math.PI - 1e-13); // |F(2π)| < tol ⇒ returns 0
45
+ const E2 = solveKeplerBisection(M2pi, e, 5, tol);
46
+ angleClose(E2, 0, 1e-12);
47
+ });
48
+ test('monotonic mapping: if M1 < M2 then E1 < E2 (same e)', () => {
34
49
  const e = 0.7;
35
- const tolerance = 1e-12;
36
- const result = solveKeplerBisection(M, e, 50, tolerance);
37
- const F = result - e * Math.sin(result) - M;
38
- assert.ok(Math.abs(F) < tolerance, `Convergence issue: Residual ${F}`);
50
+ const M1 = 0.1;
51
+ const M2 = 3.0;
52
+ const E1 = solveKeplerBisection(M1, e, 300, 1e-12);
53
+ const E2 = solveKeplerBisection(M2, e, 300, 1e-12);
54
+ assert.ok(E1 < E2, `Expected E1 < E2 but got E1=${E1}, E2=${E2}`);
55
+ });
56
+ test('input validation: TypeError for non-number M', () => {
57
+ assert.throws(() => solveKeplerBisection('1.0', 0.2, 100, 1e-9), TypeError);
58
+ });
59
+ test('input validation: RangeError for non-finite M', () => {
60
+ assert.throws(() => solveKeplerBisection(NaN, 0.2, 100, 1e-9), RangeError);
61
+ assert.throws(() => solveKeplerBisection(Infinity, 0.2, 100, 1e-9), RangeError);
62
+ });
63
+ test('input validation: e out of domain throws RangeError', () => {
64
+ assert.throws(() => solveKeplerBisection(1, -0.1, 100, 1e-9), RangeError);
65
+ assert.throws(() => solveKeplerBisection(1, 1, 100, 1e-9), RangeError);
66
+ assert.throws(() => solveKeplerBisection(1, 1.2, 100, 1e-9), RangeError);
67
+ });
68
+ test('input validation: maxIter and tolerance must be positive finite', () => {
69
+ assert.throws(() => solveKeplerBisection(1, 0.1, 0, 1e-9), RangeError);
70
+ assert.throws(() => solveKeplerBisection(1, 0.1, -5, 1e-9), RangeError);
71
+ assert.throws(() => solveKeplerBisection(1, 0.1, '100', 1e-9), RangeError);
72
+ assert.throws(() => solveKeplerBisection(1, 0.1, 100, 0), RangeError);
73
+ assert.throws(() => solveKeplerBisection(1, 0.1, 100, '1e-9'), RangeError);
74
+ });
75
+ test('consistency across tolerances: tighter tol refines E (residual non-increasing)', () => {
76
+ const e = 0.45;
77
+ const M = 2.2;
78
+ const E1 = solveKeplerBisection(M, e, 100, 1e-6);
79
+ const E2 = solveKeplerBisection(M, e, 200, 1e-12);
80
+ const r1 = Math.abs(residual(E1, e, M));
81
+ const r2 = Math.abs(residual(E2, e, M));
82
+ assert.ok(r2 <= r1 + 1e-15, `expected residual to not increase: r1=${r1}, r2=${r2}`);
39
83
  });
40
84
  });
41
85
  //# sourceMappingURL=solve-kepler-bisection.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"solve-kepler-bisection.spec.js","sourceRoot":"","sources":["../../src/__tests__/solve-kepler-bisection.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solve-kepler-bisection.spec.js","sourceRoot":"","sources":["../../src/__tests__/solve-kepler-bisection.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"solve-kepler-high-eccentricity.spec.js","sourceRoot":"","sources":["../../src/__tests__/solve-kepler-high-eccentricity.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solve-kepler-high-eccentricity.spec.js","sourceRoot":"","sources":["../../src/__tests__/solve-kepler-high-eccentricity.spec.ts"],"names":[],"mappings":"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"}
@@ -37,8 +37,8 @@ describe('solveKeplerNewtonRaphson', () => {
37
37
  assertApproxEqual(result, 1.4904711747);
38
38
  });
39
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);
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
42
  });
43
43
  test('returns NaN if the method does not converge', () => {
44
44
  const M = 3;
@@ -1 +1 @@
1
- {"version":3,"file":"solve-kepler-newton-raphson.spec.js","sourceRoot":"","sources":["../../src/__tests__/solve-kepler-newton-raphson.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solve-kepler-newton-raphson.spec.js","sourceRoot":"","sources":["../../src/__tests__/solve-kepler-newton-raphson.spec.ts"],"names":[],"mappings":"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"}
@@ -66,11 +66,11 @@ describe('solveKepler', () => {
66
66
  assert.ok(result >= 0 && result < 2 * Math.PI, `Expected result in range [0, 2π], got ${result}`);
67
67
  });
68
68
  test('Invalid Eccentricity (e < 0) Throws Error', () => {
69
- assert.throws(() => solveKepler(Math.PI / 4, -0.1), RangeError);
69
+ assert.throws(() => solveKepler((Math.PI / 4), -0.1), RangeError);
70
70
  });
71
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);
72
+ assert.throws(() => solveKepler((Math.PI / 4), 1), RangeError);
73
+ assert.throws(() => solveKepler((Math.PI / 4), 1.1), RangeError);
74
74
  });
75
75
  });
76
76
  //# sourceMappingURL=solve-kepler.int.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"solve-kepler.int.spec.js","sourceRoot":"","sources":["../../src/__tests__/solve-kepler.int.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solve-kepler.int.spec.js","sourceRoot":"","sources":["../../src/__tests__/solve-kepler.int.spec.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ describe('trueToMeanAnomaly', () => {
8
8
  assert.ok(Math.abs(actual - expected) < EPSILON, `Expected ~${expected}, got ${actual}`);
9
9
  };
10
10
  test('Circular Orbit (e = 0)', () => {
11
- const result = trueToMeanAnomaly(Math.PI / 3, 0); // e = 0 (should be identity)
11
+ const result = trueToMeanAnomaly((Math.PI / 3), 0); // e = 0 (should be identity)
12
12
  assertApproxEqual(result, wrapAngle(Math.PI / 3));
13
13
  });
14
14
  test('Zero True Anomaly (V = 0)', () => {
@@ -16,7 +16,7 @@ describe('trueToMeanAnomaly', () => {
16
16
  assertApproxEqual(result, 0);
17
17
  });
18
18
  test('True Anomaly at π/2 (90°)', () => {
19
- const result = trueToMeanAnomaly(Math.PI / 2, 0.5);
19
+ const result = trueToMeanAnomaly((Math.PI / 2), 0.5);
20
20
  const expectedM = 0.6141848493043778; // Corrected expected value
21
21
  assertApproxEqual(result, expectedM);
22
22
  });
@@ -26,20 +26,20 @@ describe('trueToMeanAnomaly', () => {
26
26
  assertApproxEqual(result, expectedM);
27
27
  });
28
28
  test('True Anomaly at 3π/2 (270°)', () => {
29
- const result = trueToMeanAnomaly((3 * Math.PI) / 2, 0.5);
29
+ const result = trueToMeanAnomaly(((3 * Math.PI) / 2), 0.5);
30
30
  const expectedM = -0.6141848493043782; // Corrected expected value
31
31
  assertApproxEqual(result, expectedM);
32
32
  });
33
33
  test('True Anomaly at 2π (Periapsis)', () => {
34
- const result = trueToMeanAnomaly(2 * Math.PI, 0.5);
34
+ const result = trueToMeanAnomaly((2 * Math.PI), 0.5);
35
35
  assertApproxEqual(result, 0); // Should return to zero
36
36
  });
37
37
  test('Eccentricity Out of Bounds Throws Error', () => {
38
- assert.throws(() => trueToMeanAnomaly(Math.PI / 3, -0.1), RangeError);
39
- assert.throws(() => trueToMeanAnomaly(Math.PI / 3, 1.1), RangeError);
38
+ assert.throws(() => trueToMeanAnomaly((Math.PI / 3), -0.1), RangeError);
39
+ assert.throws(() => trueToMeanAnomaly((Math.PI / 3), 1.1), RangeError);
40
40
  });
41
41
  test('Large Eccentricity (e close to 1)', () => {
42
- const result = trueToMeanAnomaly(Math.PI / 4, 0.99);
42
+ const result = trueToMeanAnomaly((Math.PI / 4), 0.99);
43
43
  assert.ok(result >= 0 && result < 2 * Math.PI, `Expected result in range [0, 2π], got ${result}`);
44
44
  });
45
45
  });
@@ -1 +1 @@
1
- {"version":3,"file":"true-to-mean-anomaly.spec.js","sourceRoot":"","sources":["../../src/__tests__/true-to-mean-anomaly.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"true-to-mean-anomaly.spec.js","sourceRoot":"","sources":["../../src/__tests__/true-to-mean-anomaly.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"eccentric-to-true-anomaly.d.ts","sourceRoot":"","sources":["../../../src/categories/anomalies/eccentric-to-true-anomaly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,sBAAsB,GAAI,GAAG,OAAO,EAAE,GAAG,MAAM,KAAG,OAiC9D,CAAC"}
1
+ {"version":3,"file":"eccentric-to-true-anomaly.d.ts","sourceRoot":"","sources":["../../../src/categories/anomalies/eccentric-to-true-anomaly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,sBAAsB,GAAI,GAAG,OAAO,EAAE,GAAG,MAAM,KAAG,OA+B9D,CAAC"}
@@ -49,7 +49,7 @@ export const eccentricToTrueAnomaly = (E, e) => {
49
49
  }
50
50
  // Handle parabolic orbit (e = 1)
51
51
  if (e === 1) {
52
- return 2 * Math.atan(E / 2); // Special formula for parabolic orbits
52
+ return (2 * Math.atan(E / 2)); // Special formula for parabolic orbits
53
53
  }
54
54
  // Handle numerical instability near E = π
55
55
  const epsilon = 1e-10; // Small threshold for numerical stability
@@ -1 +1 @@
1
- {"version":3,"file":"eccentric-to-true-anomaly.js","sourceRoot":"","sources":["../../../src/categories/anomalies/eccentric-to-true-anomaly.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAU,EAAE,CAAS,EAAW,EAAE;IACvE,8BAA8B;IAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,UAAU,CAClB,yBAAyB,CAAC,6CAA6C,CACxE,CAAC;IACJ,CAAC;IAED,gCAAgC;IAChC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACZ,OAAO,CAAC,CAAC,CAAC,4DAA4D;IACxE,CAAC;IAED,iCAAiC;IACjC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,uCAAuC;IACtE,CAAC;IAED,0CAA0C;IAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,0CAA0C;IAEjE,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,+BAA+B;IACjD,CAAC;IAED,0EAA0E;IAC1E,OAAO,CACL,CAAC;QACD,IAAI,CAAC,KAAK,CACR,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAClC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CACnC,CACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"eccentric-to-true-anomaly.js","sourceRoot":"","sources":["../../../src/categories/anomalies/eccentric-to-true-anomaly.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAU,EAAE,CAAS,EAAW,EAAE;IACvE,8BAA8B;IAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,UAAU,CAClB,yBAAyB,CAAC,6CAA6C,CACxE,CAAC;IACJ,CAAC;IAED,gCAAgC;IAChC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACZ,OAAO,CAAC,CAAC,CAAC,4DAA4D;IACxE,CAAC;IAED,iCAAiC;IACjC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACZ,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAY,CAAC,CAAC,uCAAuC;IACnF,CAAC;IAED,0CAA0C;IAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,0CAA0C;IAEjE,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC,EAAa,CAAC,CAAC,+BAA+B;IAC5D,CAAC;IAED,0EAA0E;IAC1E,OAAO,CAAC,CAAC;QACP,IAAI,CAAC,KAAK,CACR,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAClC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CACnC,CAAY,CAAC;AAClB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mean-to-eccentric-anomaly.js","sourceRoot":"","sources":["../../../src/categories/anomalies/mean-to-eccentric-anomaly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAOnE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,2BAA2B;AAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,0BAA0B;AAC1B,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,IAAuB,EACvB,QAA2B,EAClB,EAAE;IACX,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAElC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,UAAU,CAClB,yBAAyB,CAAC,6CAA6C,CACxE,CAAC;IACJ,CAAC;IAED,iDAAiD;IACjD,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;IAC5D,MAAM,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACnD,6DAA6D;IAC7D,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAEzD,IAAI,QAAQ,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,2DAA2D;IAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,4BAA4B;IACtD,MAAM,iBAAiB,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,6CAA6C;IAC1F,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAC5B,WAAW,EACX,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CACrE,CAAC;IACF,wEAAwE;IACxE,MAAM,KAAK,GAAG,EAAE,CAAC;IAEjB,IAAI,IAAI,GAAG,SAAS,CAAC,EAAE,GAAG,UAAU,GAAG,aAAa,CAAC,CAAC;IAEtD,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QAC1B,IAAI,GAAG,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
1
+ {"version":3,"file":"mean-to-eccentric-anomaly.js","sourceRoot":"","sources":["../../../src/categories/anomalies/mean-to-eccentric-anomaly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAOnE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,2BAA2B;AAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,0BAA0B;AAC1B,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,IAAuB,EACvB,QAA2B,EAClB,EAAE;IACX,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAElC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,UAAU,CAClB,yBAAyB,CAAC,6CAA6C,CACxE,CAAC;IACJ,CAAC;IAED,iDAAiD;IACjD,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;IAC5D,MAAM,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACnD,6DAA6D;IAC7D,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAEzD,IAAI,QAAQ,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAa,CAAC;IACvB,CAAC;IAED,2DAA2D;IAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,4BAA4B;IACtD,MAAM,iBAAiB,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,6CAA6C;IAC1F,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAC5B,WAAW,EACX,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CACrE,CAAC;IACF,wEAAwE;IACxE,MAAM,KAAK,GAAG,EAAE,CAAC;IAEjB,IAAI,IAAI,GAAG,SAAS,CAAC,EAAE,GAAG,UAAU,GAAG,aAAa,CAAC,CAAC;IAEtD,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QAC1B,IAAI,GAAG,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAe,CAAC;AACzB,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { Radians } from '@interstellar-tools/types';
1
2
  /**
2
3
  * Converts **true anomaly** ($\nu$) to **mean anomaly** ($M$) using Kepler's equation.
3
4
  *
@@ -35,10 +36,10 @@
35
36
  *
36
37
  * ---
37
38
  *
38
- * @param {number} V - **True anomaly** ($\nu$) in radians.
39
+ * @param {Radians} V - **True anomaly** ($\nu$) in radians.
39
40
  * @param {number} e - **Eccentricity** of the orbit ($0 \leq e < 1$).
40
41
  *
41
- * @returns {number} The **mean anomaly** ($M$) in radians, wrapped to the range $[0, 2\pi]$.
42
+ * @returns {Radians} The **mean anomaly** ($M$) in radians, wrapped to the range $[0, 2\pi]$.
42
43
  *
43
44
  * @throws {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError | RangeError} If the **eccentricity** ($e$) is outside the valid range $0 \leq e < 1$.
44
45
  *
@@ -70,5 +71,5 @@
70
71
  * @see [Orbital Eccentricity (Wikipedia)](https://en.wikipedia.org/wiki/Orbital_eccentricity)
71
72
  * @group Anomalies
72
73
  */
73
- export declare const trueToMeanAnomaly: (V: number, e: number) => number;
74
+ export declare const trueToMeanAnomaly: (V: Radians, e: number) => Radians;
74
75
  //# sourceMappingURL=true-to-mean-anomaly.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"true-to-mean-anomaly.d.ts","sourceRoot":"","sources":["../../../src/categories/anomalies/true-to-mean-anomaly.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AACH,eAAO,MAAM,iBAAiB,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,KAAG,MAuBxD,CAAC"}
1
+ {"version":3,"file":"true-to-mean-anomaly.d.ts","sourceRoot":"","sources":["../../../src/categories/anomalies/true-to-mean-anomaly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAIpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AACH,eAAO,MAAM,iBAAiB,GAAI,GAAG,OAAO,EAAE,GAAG,MAAM,KAAG,OAuBzD,CAAC"}
@@ -36,10 +36,10 @@ import { wrapAngle } from '../angle/wrap-angle';
36
36
  *
37
37
  * ---
38
38
  *
39
- * @param {number} V - **True anomaly** ($\nu$) in radians.
39
+ * @param {Radians} V - **True anomaly** ($\nu$) in radians.
40
40
  * @param {number} e - **Eccentricity** of the orbit ($0 \leq e < 1$).
41
41
  *
42
- * @returns {number} The **mean anomaly** ($M$) in radians, wrapped to the range $[0, 2\pi]$.
42
+ * @returns {Radians} The **mean anomaly** ($M$) in radians, wrapped to the range $[0, 2\pi]$.
43
43
  *
44
44
  * @throws {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError | RangeError} If the **eccentricity** ($e$) is outside the valid range $0 \leq e < 1$.
45
45
  *
@@ -1 +1 @@
1
- {"version":3,"file":"true-to-mean-anomaly.js","sourceRoot":"","sources":["../../../src/categories/anomalies/true-to-mean-anomaly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE;IAChE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,UAAU,CAClB,wEAAwE,CACzE,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAE5C,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;IAE7C,yDAAyD;IACzD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAChC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IACvC,CAAC;IAED,oDAAoD;IACpD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAE9B,0CAA0C;IAC1C,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC,CAAC"}
1
+ {"version":3,"file":"true-to-mean-anomaly.js","sourceRoot":"","sources":["../../../src/categories/anomalies/true-to-mean-anomaly.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAU,EAAE,CAAS,EAAW,EAAE;IAClE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,UAAU,CAClB,wEAAwE,CACzE,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAE5C,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;IAE7C,yDAAyD;IACzD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAChC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IACvC,CAAC;IAED,oDAAoD;IACpD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAE9B,0CAA0C;IAC1C,OAAO,SAAS,CAAC,CAAC,CAAY,CAAC;AACjC,CAAC,CAAC"}
@@ -1,74 +1,34 @@
1
1
  import { Radians } from '@interstellar-tools/types';
2
2
  /**
3
- * Solves **Kepler's Equation** for the **Eccentric Anomaly** ($E$) using the **bisection method**
4
- * when Newton-Raphson or other iterative solvers fail to converge.
3
+ * Solve **Kepler's equation** for the **eccentric anomaly** ($ E $) via **bisection** (elliptic case: ($ 0 \le e < 1 $)).
5
4
  *
6
- * ---
5
+ * **Equation**
7
6
  *
8
- * **Mathematical Explanation:**
9
- *
10
- * Kepler's equation for eccentric anomaly ($E$) is:
11
7
  * $$
12
- * M = E - e \sin(E)
8
+ * M = E - e\sin E,\qquad F(E)=E-e\sin E - M
13
9
  * $$
14
- * This equation cannot be solved analytically, and numerical methods must be used.
15
- * When standard iterative solvers like **Newton-Raphson** fail due to poor convergence,
16
- * the **bisection method** provides a robust alternative by performing a bracketed search.
17
- *
18
- * ---
19
- *
20
- * **Solving Strategy:**
21
- * 1. **Initialize Bounds:**
22
- * - The valid range for $E$ is **$[0, \pi]$** (as $E$ is symmetric around 0).
23
- * - The midpoint $E_0$ is chosen as:
24
- * $$
25
- * E = \frac{E_{low} + E_{high}}{2}
26
- * $$
27
- *
28
- * 2. **Bisection Iteration:**
29
- * - Compute the function residual:
30
- * $$
31
- * F(E) = E - e \sin(E) - M
32
- * $$
33
- * - If $F(E)$ is sufficiently small (within tolerance), $E$ is returned as the solution.
34
- * - Otherwise, the interval is **halved** by updating either:
35
- * - The lower bound ($E_{low}$) if $F(E) < 0$
36
- * - The upper bound ($E_{high}$) if $F(E) > 0$
37
10
  *
38
- * 3. **Convergence Check:**
39
- * - The iteration stops when:
40
- * $$
41
- * |E_{n+1} - E_n| < \text{tolerance}
42
- * $$
43
- * (default tolerance is **1e-9**).
11
+ * **Bracketing & normalization**
12
+ * - Normalize ($ M $) to ($ [0,2\pi) $).
13
+ * - Use the bracket ($ [0,2\pi] $). Then ($ F(0)=-M\le 0 $) and ($ F(2\pi)=2\pi-M\ge 0 $).
14
+ * - For ($ 0\le e<1 $), ($ F'(E)=1-e\cos E \ge 1-e > 0 $) ⇒ **strictly increasing** ⇒ unique root.
44
15
  *
45
- * ---
16
+ * **Stopping criteria (either)**
17
+ * - **Residual**: ($ |F(E)| < \text{tolerance} $)
18
+ * - **Bracket width**: ($ \tfrac{1}{2}(E_{\text{high}}-E_{\text{low}}) < \text{tolerance} $)
46
19
  *
47
- * **Performance Considerations:**
48
- * - **Always converges**, unlike Newton-Raphson, which can fail for some initial guesses.
49
- * - **Time complexity:** $O(\log N)$ due to the **logarithmic convergence** of bisection.
50
- *
51
- * ---
52
- *
53
- * @param {Radians} M - Mean anomaly ($M$) in **radians**.
54
- * @param {number} e - Orbital eccentricity ($0 \leq e < 1$).
55
- * @param {number} maxIter - Maximum number of **iterations** before failure.
56
- * @param {number} tolerance - Convergence criterion for stopping the iteration.
57
- * @returns {Radians} The **eccentric anomaly** ($E$) in **radians** (best approximation).
58
- *
59
- * ---
20
+ * @param {Radians} M Mean anomaly (radians). Can be any real; will be normalized to ($ [0,2\pi) $).
21
+ * @param {number} e Eccentricity, must satisfy ($ 0 \le e < 1 $) (elliptic).
22
+ * @param {number} maxIter Maximum iterations (must be > 0).
23
+ * @param {number} tolerance Convergence tolerance for both residual and half-interval (must be > 0, radians).
24
+ * @returns {Radians} Eccentric anomaly ($ E $) in **radians**, normalized to ($ [0,2\pi) $).
25
+ * @throws {TypeError|RangeError} If inputs are non-finite or out of domain.
60
26
  *
61
27
  * @example
62
28
  * ```ts
63
- * const M = Math.PI / 3; // 60 degrees in radians
64
- * const e = 0.5; // Orbital eccentricity
65
- * console.log(solveKeplerBisection(M, e, 50, 1e-9)); // Output: Eccentric anomaly in radians
29
+ * const E = solveKeplerBisection((Math.PI/3) as Radians, 0.5, 100, 1e-12);
66
30
  * ```
67
31
  *
68
- * ---
69
- *
70
- * @see [Kepler's Equation (Wikipedia)](https://en.wikipedia.org/wiki/Kepler%27s_equation)
71
- * @see [Bisection Method (Wikipedia)](https://en.wikipedia.org/wiki/Bisection_method)
72
32
  * @group Kepler Solvers
73
33
  */
74
34
  export declare const solveKeplerBisection: (M: Radians, e: number, maxIter: number, tolerance: number) => Radians;
@@ -1 +1 @@
1
- {"version":3,"file":"solve-kepler-bisection.d.ts","sourceRoot":"","sources":["../../../src/categories/kepler/solve-kepler-bisection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AACH,eAAO,MAAM,oBAAoB,GAC/B,GAAG,OAAO,EACV,GAAG,MAAM,EACT,SAAS,MAAM,EACf,WAAW,MAAM,KAChB,OAwBF,CAAC"}
1
+ {"version":3,"file":"solve-kepler-bisection.d.ts","sourceRoot":"","sources":["../../../src/categories/kepler/solve-kepler-bisection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,oBAAoB,GAC/B,GAAG,OAAO,EACV,GAAG,MAAM,EACT,SAAS,MAAM,EACf,WAAW,MAAM,KAChB,OAqEF,CAAC"}
@@ -1,94 +1,85 @@
1
1
  /**
2
- * Solves **Kepler's Equation** for the **Eccentric Anomaly** ($E$) using the **bisection method**
3
- * when Newton-Raphson or other iterative solvers fail to converge.
2
+ * Solve **Kepler's equation** for the **eccentric anomaly** ($ E $) via **bisection** (elliptic case: ($ 0 \le e < 1 $)).
4
3
  *
5
- * ---
4
+ * **Equation**
6
5
  *
7
- * **Mathematical Explanation:**
8
- *
9
- * Kepler's equation for eccentric anomaly ($E$) is:
10
6
  * $$
11
- * M = E - e \sin(E)
7
+ * M = E - e\sin E,\qquad F(E)=E-e\sin E - M
12
8
  * $$
13
- * This equation cannot be solved analytically, and numerical methods must be used.
14
- * When standard iterative solvers like **Newton-Raphson** fail due to poor convergence,
15
- * the **bisection method** provides a robust alternative by performing a bracketed search.
16
- *
17
- * ---
18
- *
19
- * **Solving Strategy:**
20
- * 1. **Initialize Bounds:**
21
- * - The valid range for $E$ is **$[0, \pi]$** (as $E$ is symmetric around 0).
22
- * - The midpoint $E_0$ is chosen as:
23
- * $$
24
- * E = \frac{E_{low} + E_{high}}{2}
25
- * $$
26
- *
27
- * 2. **Bisection Iteration:**
28
- * - Compute the function residual:
29
- * $$
30
- * F(E) = E - e \sin(E) - M
31
- * $$
32
- * - If $F(E)$ is sufficiently small (within tolerance), $E$ is returned as the solution.
33
- * - Otherwise, the interval is **halved** by updating either:
34
- * - The lower bound ($E_{low}$) if $F(E) < 0$
35
- * - The upper bound ($E_{high}$) if $F(E) > 0$
36
- *
37
- * 3. **Convergence Check:**
38
- * - The iteration stops when:
39
- * $$
40
- * |E_{n+1} - E_n| < \text{tolerance}
41
- * $$
42
- * (default tolerance is **1e-9**).
43
9
  *
44
- * ---
10
+ * **Bracketing & normalization**
11
+ * - Normalize ($ M $) to ($ [0,2\pi) $).
12
+ * - Use the bracket ($ [0,2\pi] $). Then ($ F(0)=-M\le 0 $) and ($ F(2\pi)=2\pi-M\ge 0 $).
13
+ * - For ($ 0\le e<1 $), ($ F'(E)=1-e\cos E \ge 1-e > 0 $) ⇒ **strictly increasing** ⇒ unique root.
45
14
  *
46
- * **Performance Considerations:**
47
- * - **Always converges**, unlike Newton-Raphson, which can fail for some initial guesses.
48
- * - **Time complexity:** $O(\log N)$ due to the **logarithmic convergence** of bisection.
15
+ * **Stopping criteria (either)**
16
+ * - **Residual**: ($ |F(E)| < \text{tolerance} $)
17
+ * - **Bracket width**: ($ \tfrac{1}{2}(E_{\text{high}}-E_{\text{low}}) < \text{tolerance} $)
49
18
  *
50
- * ---
51
- *
52
- * @param {Radians} M - Mean anomaly ($M$) in **radians**.
53
- * @param {number} e - Orbital eccentricity ($0 \leq e < 1$).
54
- * @param {number} maxIter - Maximum number of **iterations** before failure.
55
- * @param {number} tolerance - Convergence criterion for stopping the iteration.
56
- * @returns {Radians} The **eccentric anomaly** ($E$) in **radians** (best approximation).
57
- *
58
- * ---
19
+ * @param {Radians} M Mean anomaly (radians). Can be any real; will be normalized to ($ [0,2\pi) $).
20
+ * @param {number} e Eccentricity, must satisfy ($ 0 \le e < 1 $) (elliptic).
21
+ * @param {number} maxIter Maximum iterations (must be > 0).
22
+ * @param {number} tolerance Convergence tolerance for both residual and half-interval (must be > 0, radians).
23
+ * @returns {Radians} Eccentric anomaly ($ E $) in **radians**, normalized to ($ [0,2\pi) $).
24
+ * @throws {TypeError|RangeError} If inputs are non-finite or out of domain.
59
25
  *
60
26
  * @example
61
27
  * ```ts
62
- * const M = Math.PI / 3; // 60 degrees in radians
63
- * const e = 0.5; // Orbital eccentricity
64
- * console.log(solveKeplerBisection(M, e, 50, 1e-9)); // Output: Eccentric anomaly in radians
28
+ * const E = solveKeplerBisection((Math.PI/3) as Radians, 0.5, 100, 1e-12);
65
29
  * ```
66
30
  *
67
- * ---
68
- *
69
- * @see [Kepler's Equation (Wikipedia)](https://en.wikipedia.org/wiki/Kepler%27s_equation)
70
- * @see [Bisection Method (Wikipedia)](https://en.wikipedia.org/wiki/Bisection_method)
71
31
  * @group Kepler Solvers
72
32
  */
73
33
  export const solveKeplerBisection = (M, e, maxIter, tolerance) => {
74
- let E_low = 0;
75
- let E_high = Math.PI;
76
- let E = (E_low + E_high) / 2;
77
- let iter = 0;
78
- while (iter < maxIter) {
79
- const F = E - e * Math.sin(E) - M;
34
+ if (typeof M !== 'number')
35
+ throw new TypeError('M must be a number (radians).');
36
+ if (!Number.isFinite(M))
37
+ throw new RangeError('M must be finite (radians).');
38
+ if (typeof e !== 'number')
39
+ throw new TypeError('e must be a number.');
40
+ if (!Number.isFinite(e) || e < 0 || e >= 1)
41
+ throw new RangeError('e must satisfy 0 ≤ e < 1 (elliptic).');
42
+ if (!Number.isFinite(maxIter) || maxIter <= 0)
43
+ throw new RangeError('maxIter must be a positive number.');
44
+ if (!Number.isFinite(tolerance) || tolerance <= 0)
45
+ throw new RangeError('tolerance must be a finite, positive number (radians).');
46
+ const TWO_PI = 2 * Math.PI;
47
+ // Normalize M to [0, 2π)
48
+ const Mm = ((Number(M) % TWO_PI) + TWO_PI) % TWO_PI;
49
+ // Bracket [0, 2π]
50
+ let Elow = 0;
51
+ let Ehigh = TWO_PI;
52
+ // Early exit if an endpoint already solves it (normalize 2π → 0)
53
+ const Flow = -Mm; // F(0) = -M
54
+ if (Math.abs(Flow) < tolerance)
55
+ return 0;
56
+ const Fhigh = TWO_PI - Mm; // F(2π) = 2π - M
57
+ if (Math.abs(Fhigh) < tolerance)
58
+ return 0; // 2π ≡ 0
59
+ // Bisection
60
+ let E = (Elow + Ehigh) / 2;
61
+ for (let i = 0; i < maxIter; i++) {
62
+ const F = E - e * Math.sin(E) - Mm;
63
+ // Residual stop
80
64
  if (Math.abs(F) < tolerance) {
81
- return E; // Converged
65
+ return (E % TWO_PI);
82
66
  }
67
+ // Update bracket based on sign of F (monotone increasing ⇒ standard rule)
83
68
  if (F > 0) {
84
- E_high = E;
69
+ Ehigh = E;
85
70
  }
86
71
  else {
87
- E_low = E;
72
+ Elow = E;
73
+ }
74
+ // Interval stop
75
+ const halfWidth = (Ehigh - Elow) / 2;
76
+ if (halfWidth < tolerance) {
77
+ const Emid = (Elow + Ehigh) / 2;
78
+ return (Emid % TWO_PI);
88
79
  }
89
- E = (E_low + E_high) / 2;
90
- iter++;
80
+ E = (Elow + Ehigh) / 2;
91
81
  }
92
- return E; // Best approximation
82
+ // Best approximation if maxIter reached
83
+ return (E % TWO_PI);
93
84
  };
94
85
  //# sourceMappingURL=solve-kepler-bisection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"solve-kepler-bisection.js","sourceRoot":"","sources":["../../../src/categories/kepler/solve-kepler-bisection.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,CAAU,EACV,CAAS,EACT,OAAe,EACf,SAAiB,EACR,EAAE;IACX,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IACrB,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,OAAO,IAAI,GAAG,OAAO,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC;YAC5B,OAAO,CAAC,CAAC,CAAC,YAAY;QACxB,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACV,MAAM,GAAG,CAAC,CAAC;QACb,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,CAAC,CAAC;QACZ,CAAC;QAED,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,EAAE,CAAC;IACT,CAAC;IAED,OAAO,CAAC,CAAC,CAAC,qBAAqB;AACjC,CAAC,CAAC"}
1
+ {"version":3,"file":"solve-kepler-bisection.js","sourceRoot":"","sources":["../../../src/categories/kepler/solve-kepler-bisection.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"solve-kepler-high-eccentricity.js","sourceRoot":"","sources":["../../../src/categories/kepler/solve-kepler-high-eccentricity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solve-kepler-high-eccentricity.js","sourceRoot":"","sources":["../../../src/categories/kepler/solve-kepler-high-eccentricity.ts"],"names":[],"mappings":"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"}
@@ -83,5 +83,5 @@ import { Radians } from '@interstellar-tools/types';
83
83
  * @see [Eccentric Anomaly (Wikipedia)](https://en.wikipedia.org/wiki/Mean_anomaly#Eccentric_anomaly)
84
84
  * @group Kepler Solvers
85
85
  */
86
- export declare const solveKeplerNewtonRaphson: (M: Radians, e: number, maxIter: number, tolerance: number) => Radians;
86
+ export declare const solveKeplerNewtonRaphson: (M: Radians, e: number, maxIter: number, tolerance: number) => Radians | number;
87
87
  //# sourceMappingURL=solve-kepler-newton-raphson.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"solve-kepler-newton-raphson.d.ts","sourceRoot":"","sources":["../../../src/categories/kepler/solve-kepler-newton-raphson.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmFG;AACH,eAAO,MAAM,wBAAwB,GACnC,GAAG,OAAO,EACV,GAAG,MAAM,EACT,SAAS,MAAM,EACf,WAAW,MAAM,KAChB,OAwCF,CAAC"}
1
+ {"version":3,"file":"solve-kepler-newton-raphson.d.ts","sourceRoot":"","sources":["../../../src/categories/kepler/solve-kepler-newton-raphson.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmFG;AACH,eAAO,MAAM,wBAAwB,GACnC,GAAG,OAAO,EACV,GAAG,MAAM,EACT,SAAS,MAAM,EACf,WAAW,MAAM,KAChB,OAAO,GAAG,MAwCZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"solve-kepler-newton-raphson.js","sourceRoot":"","sources":["../../../src/categories/kepler/solve-kepler-newton-raphson.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmFG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,CAAU,EACV,CAAS,EACT,OAAe,EACf,SAAiB,EACR,EAAE;IACX,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,UAAU,CAAC,yBAAyB,CAAC,2BAA2B,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,CAAS,CAAC;IAEd,sBAAsB;IACtB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACZ,CAAC,GAAG,CAAC,CAAC;IACR,CAAC;SAAM,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;QACpB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAwB;IAC3C,CAAC;IAED,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,OAAO,IAAI,GAAG,OAAO,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,gBAAgB;QAExC,oDAAoD;QACpD,IAAI,UAAU,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QAE1D,UAAU,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,GAAG,UAAU,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QAEjE,CAAC,IAAI,UAAU,CAAC;QAEhB,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,SAAS,EAAE,CAAC;YACrC,OAAO,CAAC,CAAC,CAAC,YAAY;QACxB,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC;IAED,OAAO,GAAG,CAAC,CAAC,mBAAmB;AACjC,CAAC,CAAC"}
1
+ {"version":3,"file":"solve-kepler-newton-raphson.js","sourceRoot":"","sources":["../../../src/categories/kepler/solve-kepler-newton-raphson.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmFG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,CAAU,EACV,CAAS,EACT,OAAe,EACf,SAAiB,EACC,EAAE;IACpB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,UAAU,CAAC,yBAAyB,CAAC,2BAA2B,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,CAAS,CAAC;IAEd,sBAAsB;IACtB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACZ,CAAC,GAAG,CAAC,CAAC;IACR,CAAC;SAAM,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;QACpB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAwB;IAC3C,CAAC;IAED,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,OAAO,IAAI,GAAG,OAAO,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,gBAAgB;QAExC,oDAAoD;QACpD,IAAI,UAAU,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QAE1D,UAAU,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,GAAG,UAAU,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QAEjE,CAAC,IAAI,UAAU,CAAC;QAEhB,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,SAAS,EAAE,CAAC;YACrC,OAAO,CAAY,CAAC,CAAC,YAAY;QACnC,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC;IAED,OAAO,GAAG,CAAC,CAAC,mBAAmB;AACjC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"solve-kepler.js","sourceRoot":"","sources":["../../../src/categories/kepler/solve-kepler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+EG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,CAAU,EACV,CAAS,EACT,OAAO,GAAG,EAAE,EACZ,SAAS,GAAG,IAAI,EACP,EAAE;IACX,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,UAAU,CAAC,yBAAyB,CAAC,2BAA2B,CAAC,CAAC;IAC9E,CAAC;IAED,wDAAwD;IACxD,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACZ,OAAO,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC/D,CAAC;IAED,+DAA+D;IAC/D,IAAI,CAAC,GAAG,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAE3D,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACb,CAAC,GAAG,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC,CAAC"}
1
+ {"version":3,"file":"solve-kepler.js","sourceRoot":"","sources":["../../../src/categories/kepler/solve-kepler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+EG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,CAAU,EACV,CAAS,EACT,OAAO,GAAG,EAAE,EACZ,SAAS,GAAG,IAAI,EACP,EAAE;IACX,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,UAAU,CAAC,yBAAyB,CAAC,2BAA2B,CAAC,CAAC;IAC9E,CAAC;IAED,wDAAwD;IACxD,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACZ,OAAO,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC/D,CAAC;IAED,+DAA+D;IAC/D,IAAI,CAAC,GAAG,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAE3D,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACb,CAAC,GAAG,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,SAAS,CAAC,CAAC,CAAY,CAAC;AACjC,CAAC,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { Radians } from '@interstellar-tools/types';
2
+ /**
3
+ * **Flight-path angle** ($ \gamma $) from **true anomaly** ($ \nu $) and eccentricity ($ e $).
4
+ *
5
+ * **Definition**
6
+ *
7
+ * $$
8
+ * \tan\gamma=\frac{e\sin\nu}{1+e\cos\nu}
9
+ * $$
10
+ *
11
+ * ::: info Domain notes
12
+ *
13
+ * - **Elliptic / circular** ($ 0\le e<1 $): since $ 1+e\cos\nu \ge 1-e > 0 $ for all $ \nu $, we have $ \gamma\in(-\tfrac{\pi}{2},\tfrac{\pi}{2}) $.
14
+ * - **Parabolic** ($ e=1 $): at $ \nu=\pi $ the ratio is $ 0/0 $; by continuity $ \gamma\to 0 $ (this function returns $ 0 $ in that limit).
15
+ * - **Hyperbolic** ($ e>1$ ): only $ \nu $ with $ 1+e\cos\nu>0 $ are physical; when $ 1+e\cos\nu=0 $ the angle tends to $ \pm\tfrac{\pi}{2} $.
16
+ *
17
+ * :::
18
+ *
19
+ * **Conventions**
20
+ * - Returns ($ \gamma $) in **radians** (positive outbound $ 0<\nu<\pi $, negative inbound).
21
+ * - Uses `atan2(e sin ν, 1 + e cos ν)` for correct quadrant handling and robust behavior near asymptotes.
22
+ *
23
+ * @param {Radians} nu True anomaly ($ \nu $) in **radians**; must be finite.
24
+ * @param {number} e Eccentricity ($ e $), dimensionless, must be finite and **≥ 0**.
25
+ * @returns {Radians} Flight-path angle ($ \gamma $) in **radians**.
26
+ * @throws {Error} If inputs are non-finite or ($ e<0 $). Note: at the parabolic limit ($ e=1,\ \nu=\pi $) this function returns $ 0 $; at hyperbolic asymptotes ($ 1+e\cos\nu=0 $) it tends to $ \pm\pi/2 $.
27
+ * @group Orbits
28
+ */
29
+ export declare const flightPathAngleFromTrueAnomaly: (nu: Radians, e: number) => Radians;
30
+ //# sourceMappingURL=flight-path-angle-from-true-anomaly.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flight-path-angle-from-true-anomaly.d.ts","sourceRoot":"","sources":["../../../src/categories/orbits/flight-path-angle-from-true-anomaly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,8BAA8B,GACzC,IAAI,OAAO,EACX,GAAG,MAAM,KACR,OAaF,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * **Flight-path angle** ($ \gamma $) from **true anomaly** ($ \nu $) and eccentricity ($ e $).
3
+ *
4
+ * **Definition**
5
+ *
6
+ * $$
7
+ * \tan\gamma=\frac{e\sin\nu}{1+e\cos\nu}
8
+ * $$
9
+ *
10
+ * ::: info Domain notes
11
+ *
12
+ * - **Elliptic / circular** ($ 0\le e<1 $): since $ 1+e\cos\nu \ge 1-e > 0 $ for all $ \nu $, we have $ \gamma\in(-\tfrac{\pi}{2},\tfrac{\pi}{2}) $.
13
+ * - **Parabolic** ($ e=1 $): at $ \nu=\pi $ the ratio is $ 0/0 $; by continuity $ \gamma\to 0 $ (this function returns $ 0 $ in that limit).
14
+ * - **Hyperbolic** ($ e>1$ ): only $ \nu $ with $ 1+e\cos\nu>0 $ are physical; when $ 1+e\cos\nu=0 $ the angle tends to $ \pm\tfrac{\pi}{2} $.
15
+ *
16
+ * :::
17
+ *
18
+ * **Conventions**
19
+ * - Returns ($ \gamma $) in **radians** (positive outbound $ 0<\nu<\pi $, negative inbound).
20
+ * - Uses `atan2(e sin ν, 1 + e cos ν)` for correct quadrant handling and robust behavior near asymptotes.
21
+ *
22
+ * @param {Radians} nu True anomaly ($ \nu $) in **radians**; must be finite.
23
+ * @param {number} e Eccentricity ($ e $), dimensionless, must be finite and **≥ 0**.
24
+ * @returns {Radians} Flight-path angle ($ \gamma $) in **radians**.
25
+ * @throws {Error} If inputs are non-finite or ($ e<0 $). Note: at the parabolic limit ($ e=1,\ \nu=\pi $) this function returns $ 0 $; at hyperbolic asymptotes ($ 1+e\cos\nu=0 $) it tends to $ \pm\pi/2 $.
26
+ * @group Orbits
27
+ */
28
+ export const flightPathAngleFromTrueAnomaly = (nu, e) => {
29
+ if (!Number.isFinite(nu))
30
+ throw new Error('nu must be finite (radians).');
31
+ if (!Number.isFinite(e) || e < 0)
32
+ throw new Error('e must be finite and ≥ 0.');
33
+ const y = e * Math.sin(nu);
34
+ const x = 1 + e * Math.cos(nu);
35
+ const tol = 1e-15;
36
+ if (Math.abs(x) < tol && Math.abs(y) < tol)
37
+ return 0;
38
+ return Math.atan2(y, x);
39
+ };
40
+ //# sourceMappingURL=flight-path-angle-from-true-anomaly.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flight-path-angle-from-true-anomaly.js","sourceRoot":"","sources":["../../../src/categories/orbits/flight-path-angle-from-true-anomaly.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAC5C,EAAW,EACX,CAAS,EACA,EAAE;IACX,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAE1E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAE/C,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAY,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAY,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,KAAK,CAAC;IAElB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;QAAE,OAAO,CAAY,CAAC;IAEhE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAY,CAAC;AACrC,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -23,4 +23,5 @@ export * from './categories/orbits/kepler-period';
23
23
  export * from './categories/orbits/specific-angular-momentum';
24
24
  export * from './categories/orbits/specific-angular-momentum-from-elements';
25
25
  export * from './categories/orbits/specific-mechanical-energy';
26
+ export * from './categories/orbits/flight-path-angle-from-true-anomaly';
26
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,kCAAkC,CAAC;AAEjD,cAAc,+BAA+B,CAAC;AAG9C,cAAc,kDAAkD,CAAC;AAEjE,cAAc,kDAAkD,CAAC;AAEjE,cAAc,6CAA6C,CAAC;AAG5D,cAAc,kCAAkC,CAAC;AAEjD,cAAc,iDAAiD,CAAC;AAEhE,cAAc,4CAA4C,CAAC;AAE3D,cAAc,oDAAoD,CAAC;AAGnE,cAAc,8CAA8C,CAAC;AAE7D,cAAc,0CAA0C,CAAC;AAEzD,cAAc,oCAAoC,CAAC;AAEnD,cAAc,2CAA2C,CAAC;AAG1D,cAAc,oCAAoC,CAAC;AAEnD,cAAc,oCAAoC,CAAC;AAEnD,cAAc,kCAAkC,CAAC;AAEjD,cAAc,mCAAmC,CAAC;AAElD,cAAc,+CAA+C,CAAC;AAE9D,cAAc,6DAA6D,CAAC;AAE5E,cAAc,gDAAgD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,kCAAkC,CAAC;AAEjD,cAAc,+BAA+B,CAAC;AAG9C,cAAc,kDAAkD,CAAC;AAEjE,cAAc,kDAAkD,CAAC;AAEjE,cAAc,6CAA6C,CAAC;AAG5D,cAAc,kCAAkC,CAAC;AAEjD,cAAc,iDAAiD,CAAC;AAEhE,cAAc,4CAA4C,CAAC;AAE3D,cAAc,oDAAoD,CAAC;AAGnE,cAAc,8CAA8C,CAAC;AAE7D,cAAc,0CAA0C,CAAC;AAEzD,cAAc,oCAAoC,CAAC;AAEnD,cAAc,2CAA2C,CAAC;AAG1D,cAAc,oCAAoC,CAAC;AAEnD,cAAc,oCAAoC,CAAC;AAEnD,cAAc,kCAAkC,CAAC;AAEjD,cAAc,mCAAmC,CAAC;AAElD,cAAc,+CAA+C,CAAC;AAE9D,cAAc,6DAA6D,CAAC;AAE5E,cAAc,gDAAgD,CAAC;AAE/D,cAAc,yDAAyD,CAAC"}
package/dist/index.js CHANGED
@@ -28,4 +28,5 @@ export * from './categories/orbits/kepler-period';
28
28
  export * from './categories/orbits/specific-angular-momentum';
29
29
  export * from './categories/orbits/specific-angular-momentum-from-elements';
30
30
  export * from './categories/orbits/specific-mechanical-energy';
31
+ export * from './categories/orbits/flight-path-angle-from-true-anomaly';
31
32
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,mBAAmB;AACnB,cAAc,kCAAkC,CAAC;AAEjD,cAAc,+BAA+B,CAAC;AAE9C,uBAAuB;AACvB,cAAc,kDAAkD,CAAC;AAEjE,cAAc,kDAAkD,CAAC;AAEjE,cAAc,6CAA6C,CAAC;AAE5D,8BAA8B;AAC9B,cAAc,kCAAkC,CAAC;AAEjD,cAAc,iDAAiD,CAAC;AAEhE,cAAc,4CAA4C,CAAC;AAE3D,cAAc,oDAAoD,CAAC;AAEnE,qBAAqB;AACrB,cAAc,8CAA8C,CAAC;AAE7D,cAAc,0CAA0C,CAAC;AAEzD,cAAc,oCAAoC,CAAC;AAEnD,cAAc,2CAA2C,CAAC;AAE1D,oBAAoB;AACpB,cAAc,oCAAoC,CAAC;AAEnD,cAAc,oCAAoC,CAAC;AAEnD,cAAc,kCAAkC,CAAC;AAEjD,cAAc,mCAAmC,CAAC;AAElD,cAAc,+CAA+C,CAAC;AAE9D,cAAc,6DAA6D,CAAC;AAE5E,cAAc,gDAAgD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,mBAAmB;AACnB,cAAc,kCAAkC,CAAC;AAEjD,cAAc,+BAA+B,CAAC;AAE9C,uBAAuB;AACvB,cAAc,kDAAkD,CAAC;AAEjE,cAAc,kDAAkD,CAAC;AAEjE,cAAc,6CAA6C,CAAC;AAE5D,8BAA8B;AAC9B,cAAc,kCAAkC,CAAC;AAEjD,cAAc,iDAAiD,CAAC;AAEhE,cAAc,4CAA4C,CAAC;AAE3D,cAAc,oDAAoD,CAAC;AAEnE,qBAAqB;AACrB,cAAc,8CAA8C,CAAC;AAE7D,cAAc,0CAA0C,CAAC;AAEzD,cAAc,oCAAoC,CAAC;AAEnD,cAAc,2CAA2C,CAAC;AAE1D,oBAAoB;AACpB,cAAc,oCAAoC,CAAC;AAEnD,cAAc,oCAAoC,CAAC;AAEnD,cAAc,kCAAkC,CAAC;AAEjD,cAAc,mCAAmC,CAAC;AAElD,cAAc,+CAA+C,CAAC;AAE9D,cAAc,6DAA6D,CAAC;AAE5E,cAAc,gDAAgD,CAAC;AAE/D,cAAc,yDAAyD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@interstellar-tools/equations",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "description": "Curated, well-tested orbital mechanics and dynamics formulas (e.g., Newtonian gravity, vis-viva, Kepler's 3rd law, escape/circular speeds, specific energy, specific angular momentum, peri/apoapsis radii).",
5
5
  "keywords": [
6
6
  "interstellar",