@interstellar-tools/equations 0.14.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/characteristic-energy-c3.spec.d.ts +2 -0
- package/dist/__tests__/characteristic-energy-c3.spec.d.ts.map +1 -0
- package/dist/__tests__/characteristic-energy-c3.spec.js +36 -0
- package/dist/__tests__/characteristic-energy-c3.spec.js.map +1 -0
- package/dist/__tests__/circular-speed.spec.js +2 -2
- package/dist/__tests__/circular-speed.spec.js.map +1 -1
- package/dist/__tests__/combine-burns-delta-v.spec.js +1 -1
- package/dist/__tests__/combine-burns-delta-v.spec.js.map +1 -1
- package/dist/__tests__/cw-hill-derivatives.spec.d.ts +2 -0
- package/dist/__tests__/cw-hill-derivatives.spec.d.ts.map +1 -0
- package/dist/__tests__/cw-hill-derivatives.spec.js +64 -0
- package/dist/__tests__/cw-hill-derivatives.spec.js.map +1 -0
- package/dist/__tests__/escape-speed.spec.js +2 -2
- package/dist/__tests__/escape-speed.spec.js.map +1 -1
- package/dist/__tests__/gravitational-acceleration-on1-by2.int.spec.js +4 -4
- package/dist/__tests__/gravitational-acceleration-on1-by2.int.spec.js.map +1 -1
- package/dist/__tests__/gravitational-force-on1-by2.int.spec.js +1 -1
- package/dist/__tests__/gravitational-force-on1-by2.int.spec.js.map +1 -1
- package/dist/__tests__/gravitational-force.spec.js +2 -2
- package/dist/__tests__/gravitational-force.spec.js.map +1 -1
- package/dist/__tests__/gravitational-parameters.spec.js +1 -1
- package/dist/__tests__/gravitational-parameters.spec.js.map +1 -1
- package/dist/__tests__/gravity-assist-turning-angle.spec.d.ts +2 -0
- package/dist/__tests__/gravity-assist-turning-angle.spec.d.ts.map +1 -0
- package/dist/__tests__/gravity-assist-turning-angle.spec.js +89 -0
- package/dist/__tests__/gravity-assist-turning-angle.spec.js.map +1 -0
- package/dist/__tests__/helpers/index.d.ts +2 -0
- package/dist/__tests__/helpers/index.d.ts.map +1 -1
- package/dist/__tests__/helpers/index.js +6 -0
- package/dist/__tests__/helpers/index.js.map +1 -1
- package/dist/__tests__/hohmann-transfer.spec.js +1 -1
- package/dist/__tests__/hohmann-transfer.spec.js.map +1 -1
- package/dist/__tests__/hyperbolic-periapsis-speed.spec.d.ts +2 -0
- package/dist/__tests__/hyperbolic-periapsis-speed.spec.d.ts.map +1 -0
- package/dist/__tests__/hyperbolic-periapsis-speed.spec.js +64 -0
- package/dist/__tests__/hyperbolic-periapsis-speed.spec.js.map +1 -0
- package/dist/__tests__/kepler-period.spec.js +5 -5
- package/dist/__tests__/kepler-period.spec.js.map +1 -1
- package/dist/__tests__/mean-motion.spec.d.ts +2 -0
- package/dist/__tests__/mean-motion.spec.d.ts.map +1 -0
- package/dist/__tests__/mean-motion.spec.js +48 -0
- package/dist/__tests__/mean-motion.spec.js.map +1 -0
- package/dist/__tests__/oberth-energy-gain.spec.js +2 -2
- package/dist/__tests__/oberth-energy-gain.spec.js.map +1 -1
- package/dist/__tests__/specific-angular-momentum-from-elements.spec.js +5 -5
- package/dist/__tests__/specific-angular-momentum-from-elements.spec.js.map +1 -1
- package/dist/__tests__/specific-mechanical-energy.spec.js +2 -2
- package/dist/__tests__/specific-mechanical-energy.spec.js.map +1 -1
- package/dist/__tests__/sphere-of-influence-radius.spec.d.ts +2 -0
- package/dist/__tests__/sphere-of-influence-radius.spec.d.ts.map +1 -0
- package/dist/__tests__/sphere-of-influence-radius.spec.js +62 -0
- package/dist/__tests__/sphere-of-influence-radius.spec.js.map +1 -0
- package/dist/__tests__/vis-viva-speed.spec.js +1 -1
- package/dist/__tests__/vis-viva-speed.spec.js.map +1 -1
- package/dist/categories/gravity/acceleration-on1-by2.d.ts +1 -1
- package/dist/categories/gravity/acceleration-on1-by2.js +1 -1
- package/dist/categories/gravity/force-on1-by2.d.ts +2 -2
- package/dist/categories/gravity/force-on1-by2.js +2 -2
- package/dist/categories/gravity/gravitational-force.js +1 -1
- package/dist/categories/gravity/gravitational-force.js.map +1 -1
- package/dist/categories/gravity/gravitational-parameter.d.ts +1 -1
- package/dist/categories/gravity/gravitational-parameter.js +1 -1
- package/dist/categories/manoeuvres/gravity-assist-turning-angle.d.ts +36 -0
- package/dist/categories/manoeuvres/gravity-assist-turning-angle.d.ts.map +1 -0
- package/dist/categories/manoeuvres/gravity-assist-turning-angle.js +60 -0
- package/dist/categories/manoeuvres/gravity-assist-turning-angle.js.map +1 -0
- package/dist/categories/manoeuvres/hohmann-transfer.d.ts.map +1 -1
- package/dist/categories/manoeuvres/hohmann-transfer.js +2 -2
- package/dist/categories/manoeuvres/hohmann-transfer.js.map +1 -1
- package/dist/categories/manoeuvres/oberth-energy-gain.d.ts +3 -3
- package/dist/categories/manoeuvres/oberth-energy-gain.js +3 -3
- package/dist/categories/manoeuvres/plane-change-delta-v.d.ts +1 -1
- package/dist/categories/manoeuvres/plane-change-delta-v.js +1 -1
- package/dist/categories/orbits/characteristic-energy-c3.d.ts +32 -0
- package/dist/categories/orbits/characteristic-energy-c3.d.ts.map +1 -0
- package/dist/categories/orbits/characteristic-energy-c3.js +37 -0
- package/dist/categories/orbits/characteristic-energy-c3.js.map +1 -0
- package/dist/categories/orbits/circular-speed.d.ts +1 -1
- package/dist/categories/orbits/circular-speed.js +2 -2
- package/dist/categories/orbits/circular-speed.js.map +1 -1
- package/dist/categories/orbits/cw-hill-derivatives.d.ts +67 -0
- package/dist/categories/orbits/cw-hill-derivatives.d.ts.map +1 -0
- package/dist/categories/orbits/cw-hill-derivatives.js +89 -0
- package/dist/categories/orbits/cw-hill-derivatives.js.map +1 -0
- package/dist/categories/orbits/escape-speed.d.ts +1 -1
- package/dist/categories/orbits/escape-speed.js +2 -2
- package/dist/categories/orbits/escape-speed.js.map +1 -1
- package/dist/categories/orbits/hyperbolic-periapsis-speed.d.ts +34 -0
- package/dist/categories/orbits/hyperbolic-periapsis-speed.d.ts.map +1 -0
- package/dist/categories/orbits/hyperbolic-periapsis-speed.js +61 -0
- package/dist/categories/orbits/hyperbolic-periapsis-speed.js.map +1 -0
- package/dist/categories/orbits/kepler-period.d.ts +2 -2
- package/dist/categories/orbits/kepler-period.js +3 -3
- package/dist/categories/orbits/kepler-period.js.map +1 -1
- package/dist/categories/orbits/mean-motion.d.ts +37 -0
- package/dist/categories/orbits/mean-motion.d.ts.map +1 -0
- package/dist/categories/orbits/mean-motion.js +47 -0
- package/dist/categories/orbits/mean-motion.js.map +1 -0
- package/dist/categories/orbits/specific-angular-momentum-from-elements.d.ts +3 -3
- package/dist/categories/orbits/specific-angular-momentum-from-elements.js +4 -4
- package/dist/categories/orbits/specific-angular-momentum-from-elements.js.map +1 -1
- package/dist/categories/orbits/specific-angular-momentum.d.ts +1 -1
- package/dist/categories/orbits/specific-angular-momentum.js +2 -2
- package/dist/categories/orbits/specific-angular-momentum.js.map +1 -1
- package/dist/categories/orbits/specific-mechanical-energy.d.ts +1 -1
- package/dist/categories/orbits/specific-mechanical-energy.js +2 -2
- package/dist/categories/orbits/specific-mechanical-energy.js.map +1 -1
- package/dist/categories/orbits/sphere-of-influence-radius.d.ts +36 -0
- package/dist/categories/orbits/sphere-of-influence-radius.d.ts.map +1 -0
- package/dist/categories/orbits/sphere-of-influence-radius.js +56 -0
- package/dist/categories/orbits/sphere-of-influence-radius.js.map +1 -0
- package/dist/categories/orbits/vis-viva-speed.d.ts +1 -1
- package/dist/categories/orbits/vis-viva-speed.js +2 -2
- package/dist/categories/orbits/vis-viva-speed.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* ```ts
|
|
28
28
|
* // GEO: a ≈ 42,164 km → T ≈ 86,164 s (one sidereal day)
|
|
29
29
|
* const a = 42164e3; // m
|
|
30
|
-
* const muEarth = 3.986004418e14; // m
|
|
30
|
+
* const muEarth = 3.986004418e14; // m³/s²
|
|
31
31
|
* const T = keplerPeriod(a, muEarth); // ≈ 86164 s
|
|
32
32
|
* ```
|
|
33
33
|
*
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
* ```ts
|
|
36
36
|
* // LEO-ish circular: a ≈ Earth radius + 400 km
|
|
37
37
|
* const a = 6378e3 + 400e3; // m
|
|
38
|
-
* const muEarth = 3.986004418e14; // m
|
|
38
|
+
* const muEarth = 3.986004418e14; // m³/s²
|
|
39
39
|
* const T = keplerPeriod(a, muEarth); // ≈ 5550 s (~92.5 min)
|
|
40
40
|
* ```
|
|
41
41
|
*
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* ```ts
|
|
28
28
|
* // GEO: a ≈ 42,164 km → T ≈ 86,164 s (one sidereal day)
|
|
29
29
|
* const a = 42164e3; // m
|
|
30
|
-
* const muEarth = 3.986004418e14; // m
|
|
30
|
+
* const muEarth = 3.986004418e14; // m³/s²
|
|
31
31
|
* const T = keplerPeriod(a, muEarth); // ≈ 86164 s
|
|
32
32
|
* ```
|
|
33
33
|
*
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
* ```ts
|
|
36
36
|
* // LEO-ish circular: a ≈ Earth radius + 400 km
|
|
37
37
|
* const a = 6378e3 + 400e3; // m
|
|
38
|
-
* const muEarth = 3.986004418e14; // m
|
|
38
|
+
* const muEarth = 3.986004418e14; // m³/s²
|
|
39
39
|
* const T = keplerPeriod(a, muEarth); // ≈ 5550 s (~92.5 min)
|
|
40
40
|
* ```
|
|
41
41
|
*
|
|
@@ -46,7 +46,7 @@ export const keplerPeriod = (a, mu) => {
|
|
|
46
46
|
throw new Error('a must be a finite, positive number (meters).');
|
|
47
47
|
}
|
|
48
48
|
if (!Number.isFinite(mu) || mu <= 0) {
|
|
49
|
-
throw new Error('mu must be a finite, positive number (m
|
|
49
|
+
throw new Error('mu must be a finite, positive number (m³/s²).');
|
|
50
50
|
}
|
|
51
51
|
const a3 = a * a * a; // a^3
|
|
52
52
|
return 2 * Math.PI * Math.sqrt(a3 / mu);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kepler-period.js","sourceRoot":"","sources":["../../../src/categories/orbits/kepler-period.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAU,EAAU,EAAE;IAC5D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"kepler-period.js","sourceRoot":"","sources":["../../../src/categories/orbits/kepler-period.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAU,EAAU,EAAE;IAC5D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;IAE5B,OAAO,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC1C,CAAC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compute **mean motion** for a (near-)circular reference orbit.
|
|
3
|
+
*
|
|
4
|
+
* Mean motion is the angular rate of the reference orbit:
|
|
5
|
+
*
|
|
6
|
+
* $$
|
|
7
|
+
* n=\sqrt{\frac{\mu}{a^3}}
|
|
8
|
+
* $$
|
|
9
|
+
*
|
|
10
|
+
* Where:
|
|
11
|
+
* - $ \mu $ is the standard gravitational parameter of the central body
|
|
12
|
+
* - $ a $ is the (circular) orbit radius / semi-major axis
|
|
13
|
+
*
|
|
14
|
+
* **Unit consistency**
|
|
15
|
+
* - If $ \mu $ is in **m³/s²**, then $ a $ must be in **m** and the result is in **rad/s**.
|
|
16
|
+
* - If $ \mu $ is in **km³/s²**, then $ a $ must be in **km** and the result is in **rad/s**.
|
|
17
|
+
*
|
|
18
|
+
* Common usage: reference rate for relative motion models (e.g., Clohessy–Wiltshire / Hill),
|
|
19
|
+
* orbital period estimates, and circular-orbit dynamics.
|
|
20
|
+
*
|
|
21
|
+
* @param mu - Standard gravitational parameter $ \mu $ (finite, > 0).
|
|
22
|
+
* @param a - Semi-major axis $ a $ (finite, > 0).
|
|
23
|
+
* @returns Mean motion $ n $ in **rad/s**.
|
|
24
|
+
* @throws {TypeError} If `mu` or `a` is not a finite number.
|
|
25
|
+
* @throws {RangeError} If `mu <= 0` or `a <= 0`.
|
|
26
|
+
* @group Orbits
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* // Earth example (km-based):
|
|
31
|
+
* const mu = 398600.4418; // km³/s²
|
|
32
|
+
* const a = 7000; // km
|
|
33
|
+
* const n = meanMotion(mu, a); // rad/s
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare const meanMotion: (mu: number, a: number) => number;
|
|
37
|
+
//# sourceMappingURL=mean-motion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mean-motion.d.ts","sourceRoot":"","sources":["../../../src/categories/orbits/mean-motion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,eAAO,MAAM,UAAU,GAAI,IAAI,MAAM,EAAE,GAAG,MAAM,KAAG,MAYlD,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compute **mean motion** for a (near-)circular reference orbit.
|
|
3
|
+
*
|
|
4
|
+
* Mean motion is the angular rate of the reference orbit:
|
|
5
|
+
*
|
|
6
|
+
* $$
|
|
7
|
+
* n=\sqrt{\frac{\mu}{a^3}}
|
|
8
|
+
* $$
|
|
9
|
+
*
|
|
10
|
+
* Where:
|
|
11
|
+
* - $ \mu $ is the standard gravitational parameter of the central body
|
|
12
|
+
* - $ a $ is the (circular) orbit radius / semi-major axis
|
|
13
|
+
*
|
|
14
|
+
* **Unit consistency**
|
|
15
|
+
* - If $ \mu $ is in **m³/s²**, then $ a $ must be in **m** and the result is in **rad/s**.
|
|
16
|
+
* - If $ \mu $ is in **km³/s²**, then $ a $ must be in **km** and the result is in **rad/s**.
|
|
17
|
+
*
|
|
18
|
+
* Common usage: reference rate for relative motion models (e.g., Clohessy–Wiltshire / Hill),
|
|
19
|
+
* orbital period estimates, and circular-orbit dynamics.
|
|
20
|
+
*
|
|
21
|
+
* @param mu - Standard gravitational parameter $ \mu $ (finite, > 0).
|
|
22
|
+
* @param a - Semi-major axis $ a $ (finite, > 0).
|
|
23
|
+
* @returns Mean motion $ n $ in **rad/s**.
|
|
24
|
+
* @throws {TypeError} If `mu` or `a` is not a finite number.
|
|
25
|
+
* @throws {RangeError} If `mu <= 0` or `a <= 0`.
|
|
26
|
+
* @group Orbits
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* // Earth example (km-based):
|
|
31
|
+
* const mu = 398600.4418; // km³/s²
|
|
32
|
+
* const a = 7000; // km
|
|
33
|
+
* const n = meanMotion(mu, a); // rad/s
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export const meanMotion = (mu, a) => {
|
|
37
|
+
if (!Number.isFinite(mu))
|
|
38
|
+
throw new TypeError(`mu must be finite. Received: ${mu}`);
|
|
39
|
+
if (!Number.isFinite(a))
|
|
40
|
+
throw new TypeError(`a must be finite. Received: ${a}`);
|
|
41
|
+
if (mu <= 0)
|
|
42
|
+
throw new RangeError(`mu must be > 0. Received: ${mu}`);
|
|
43
|
+
if (a <= 0)
|
|
44
|
+
throw new RangeError(`a must be > 0. Received: ${a}`);
|
|
45
|
+
return Math.sqrt(mu / (a * a * a));
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=mean-motion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mean-motion.js","sourceRoot":"","sources":["../../../src/categories/orbits/mean-motion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAU,EAAE,CAAS,EAAU,EAAE;IAC1D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,SAAS,CAAC,gCAAgC,EAAE,EAAE,CAAC,CAAC;IAE5D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;IAE1D,IAAI,EAAE,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC;IAErE,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;IAElE,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC,CAAC"}
|
|
@@ -33,12 +33,12 @@
|
|
|
33
33
|
*
|
|
34
34
|
* @throws {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error | Error}
|
|
35
35
|
* If ($ a $) is non-finite or zero; if ($ e $) is non-finite or negative; if ($ \mu $) is non-finite or negative; or if
|
|
36
|
-
* ($ \mu\,a\,(1-e
|
|
36
|
+
* ($ \mu\,a\,(1-e²) < 0 $) beyond a tiny FP tolerance (invalid element set for this formula).
|
|
37
37
|
*
|
|
38
38
|
* @example
|
|
39
39
|
* ```ts
|
|
40
40
|
* // Near-circular LEO-like elements
|
|
41
|
-
* const muEarth = 3.986004418e14; // m
|
|
41
|
+
* const muEarth = 3.986004418e14; // m³/s²
|
|
42
42
|
* const a = 6778e3; // m
|
|
43
43
|
* const e = 0.001;
|
|
44
44
|
* const h = specificAngularMomentumFromElements(a, e, muEarth); // ≈ sqrt(μ a)
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
* @example
|
|
48
48
|
* ```ts
|
|
49
49
|
* // Hyperbolic flyby example
|
|
50
|
-
* const muEarth = 3.986004418e14; // m
|
|
50
|
+
* const muEarth = 3.986004418e14; // m³/s²
|
|
51
51
|
* const a = -50000e3; // m (negative for hyperbola)
|
|
52
52
|
* const e = 1.2;
|
|
53
53
|
* const h = specificAngularMomentumFromElements(a, e, muEarth);
|
|
@@ -33,12 +33,12 @@
|
|
|
33
33
|
*
|
|
34
34
|
* @throws {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error | Error}
|
|
35
35
|
* If ($ a $) is non-finite or zero; if ($ e $) is non-finite or negative; if ($ \mu $) is non-finite or negative; or if
|
|
36
|
-
* ($ \mu\,a\,(1-e
|
|
36
|
+
* ($ \mu\,a\,(1-e²) < 0 $) beyond a tiny FP tolerance (invalid element set for this formula).
|
|
37
37
|
*
|
|
38
38
|
* @example
|
|
39
39
|
* ```ts
|
|
40
40
|
* // Near-circular LEO-like elements
|
|
41
|
-
* const muEarth = 3.986004418e14; // m
|
|
41
|
+
* const muEarth = 3.986004418e14; // m³/s²
|
|
42
42
|
* const a = 6778e3; // m
|
|
43
43
|
* const e = 0.001;
|
|
44
44
|
* const h = specificAngularMomentumFromElements(a, e, muEarth); // ≈ sqrt(μ a)
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
* @example
|
|
48
48
|
* ```ts
|
|
49
49
|
* // Hyperbolic flyby example
|
|
50
|
-
* const muEarth = 3.986004418e14; // m
|
|
50
|
+
* const muEarth = 3.986004418e14; // m³/s²
|
|
51
51
|
* const a = -50000e3; // m (negative for hyperbola)
|
|
52
52
|
* const e = 1.2;
|
|
53
53
|
* const h = specificAngularMomentumFromElements(a, e, muEarth);
|
|
@@ -62,7 +62,7 @@ export const specificAngularMomentumFromElements = (a, e, mu) => {
|
|
|
62
62
|
if (!Number.isFinite(e) || e < 0)
|
|
63
63
|
throw new Error('e must be finite and ≥ 0.');
|
|
64
64
|
if (!Number.isFinite(mu) || mu < 0)
|
|
65
|
-
throw new Error('mu must be finite and ≥ 0 (m
|
|
65
|
+
throw new Error('mu must be finite and ≥ 0 (m³/s²).');
|
|
66
66
|
const radicand = mu * a * (1 - e * e);
|
|
67
67
|
if (radicand < 0) {
|
|
68
68
|
// Allow tiny negatives due to FP cancellation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specific-angular-momentum-from-elements.js","sourceRoot":"","sources":["../../../src/categories/orbits/specific-angular-momentum-from-elements.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,CACjD,CAAS,EACT,CAAS,EACT,EAAU,EACF,EAAE;IACV,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAE7D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAE/C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"specific-angular-momentum-from-elements.js","sourceRoot":"","sources":["../../../src/categories/orbits/specific-angular-momentum-from-elements.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,CACjD,CAAS,EACT,CAAS,EACT,EAAU,EACF,EAAE;IACV,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAE7D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAE/C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAExD,MAAM,QAAQ,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAEtC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,8CAA8C;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE/C,IAAI,QAAQ,GAAG,CAAC,GAAG;YAAE,OAAO,CAAC,CAAC;QAE9B,MAAM,IAAI,KAAK,CACb,qDAAqD,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAC5E,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7B,CAAC,CAAC"}
|
|
@@ -44,7 +44,7 @@ import { Vector3DTupleType } from '@interstellar-tools/types';
|
|
|
44
44
|
* // LEO-like state: r ⟂ v
|
|
45
45
|
* const r: [number, number, number] = [6778e3, 0, 0]; // m
|
|
46
46
|
* const v: [number, number, number] = [0, 7.67e3, 0]; // m/s
|
|
47
|
-
* const h = specificAngularMomentum(r, v); // ≈ 5.20e10 m
|
|
47
|
+
* const h = specificAngularMomentum(r, v); // ≈ 5.20e10 m²/s
|
|
48
48
|
* ```
|
|
49
49
|
*
|
|
50
50
|
* @see {@link https://en.wikipedia.org/wiki/Specific_angular_momentum}
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
* // LEO-like state: r ⟂ v
|
|
45
45
|
* const r: [number, number, number] = [6778e3, 0, 0]; // m
|
|
46
46
|
* const v: [number, number, number] = [0, 7.67e3, 0]; // m/s
|
|
47
|
-
* const h = specificAngularMomentum(r, v); // ≈ 5.20e10 m
|
|
47
|
+
* const h = specificAngularMomentum(r, v); // ≈ 5.20e10 m²/s
|
|
48
48
|
* ```
|
|
49
49
|
*
|
|
50
50
|
* @see {@link https://en.wikipedia.org/wiki/Specific_angular_momentum}
|
|
@@ -70,7 +70,7 @@ export const specificAngularMomentum = (r, v) => {
|
|
|
70
70
|
const hx = r[1] * v[2] - r[2] * v[1];
|
|
71
71
|
const hy = r[2] * v[0] - r[0] * v[2];
|
|
72
72
|
const hz = r[0] * v[1] - r[1] * v[0];
|
|
73
|
-
const h = Math.hypot(hx, hy, hz); // m
|
|
73
|
+
const h = Math.hypot(hx, hy, hz); // m²/s
|
|
74
74
|
return h;
|
|
75
75
|
};
|
|
76
76
|
//# sourceMappingURL=specific-angular-momentum.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specific-angular-momentum.js","sourceRoot":"","sources":["../../../src/categories/orbits/specific-angular-momentum.ts"],"names":[],"mappings":"AAEA,2BAA2B;AAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,0BAA0B;AAC1B,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,CAAoB,EACpB,CAAoB,EACZ,EAAE;IACV,kBAAkB;IAClB,KAAK,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACzE,KAAK,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAEtE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnD,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAE/D,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAE1D,aAAa;IACb,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"specific-angular-momentum.js","sourceRoot":"","sources":["../../../src/categories/orbits/specific-angular-momentum.ts"],"names":[],"mappings":"AAEA,2BAA2B;AAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,0BAA0B;AAC1B,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,CAAoB,EACpB,CAAoB,EACZ,EAAE;IACV,kBAAkB;IAClB,KAAK,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACzE,KAAK,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAEtE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnD,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAE/D,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAE1D,aAAa;IACb,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO;IAEzC,OAAO,CAAC,CAAC;AACX,CAAC,CAAC"}
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
* @example
|
|
38
38
|
* ```ts
|
|
39
39
|
* // LEO example around Earth (~400 km altitude)
|
|
40
|
-
* const muEarth = 3.986004418e14; // m
|
|
40
|
+
* const muEarth = 3.986004418e14; // m³/s²
|
|
41
41
|
* const r = 6378e3 + 400e3; // Earth radius + 400 km
|
|
42
42
|
* const v = Math.sqrt(muEarth / r); // near-circular speed
|
|
43
43
|
* const eps = specificMechanicalEnergy(v, r, muEarth);
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
* @example
|
|
38
38
|
* ```ts
|
|
39
39
|
* // LEO example around Earth (~400 km altitude)
|
|
40
|
-
* const muEarth = 3.986004418e14; // m
|
|
40
|
+
* const muEarth = 3.986004418e14; // m³/s²
|
|
41
41
|
* const r = 6378e3 + 400e3; // Earth radius + 400 km
|
|
42
42
|
* const v = Math.sqrt(muEarth / r); // near-circular speed
|
|
43
43
|
* const eps = specificMechanicalEnergy(v, r, muEarth);
|
|
@@ -51,7 +51,7 @@ export const specificMechanicalEnergy = (v, r, mu) => {
|
|
|
51
51
|
if (!Number.isFinite(r) || r <= 0)
|
|
52
52
|
throw new Error('r must be a finite, positive number (m).');
|
|
53
53
|
if (!Number.isFinite(mu) || mu < 0)
|
|
54
|
-
throw new Error('mu must be a finite, non-negative number (m
|
|
54
|
+
throw new Error('mu must be a finite, non-negative number (m³/s²).');
|
|
55
55
|
return 0.5 * v * v - mu / r;
|
|
56
56
|
};
|
|
57
57
|
//# sourceMappingURL=specific-mechanical-energy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specific-mechanical-energy.js","sourceRoot":"","sources":["../../../src/categories/orbits/specific-mechanical-energy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,CAAS,EACT,CAAS,EACT,EAAU,EACF,EAAE;IACV,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAEpE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAE9D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"specific-mechanical-energy.js","sourceRoot":"","sources":["../../../src/categories/orbits/specific-mechanical-energy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,CAAS,EACT,CAAS,EACT,EAAU,EACF,EAAE;IACV,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAEpE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAE9D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAEvE,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compute **sphere of influence** radius (patched conics approximation).
|
|
3
|
+
*
|
|
4
|
+
* Equation:
|
|
5
|
+
* $$
|
|
6
|
+
* r_{\text{SOI}} \approx a \left(\frac{m}{M}\right)^{2/5}
|
|
7
|
+
* $$
|
|
8
|
+
*
|
|
9
|
+
* Where:
|
|
10
|
+
* - `a` is the semi-major axis of the secondary body's orbit about the primary (m or km)
|
|
11
|
+
* - `m` is the mass of the secondary body (e.g., planet) (kg)
|
|
12
|
+
* - `M` is the mass of the primary body (e.g., Sun) (kg)
|
|
13
|
+
*
|
|
14
|
+
* Units:
|
|
15
|
+
* - Output `rSOI` has the same distance unit as `a` (since the mass ratio is dimensionless).
|
|
16
|
+
*
|
|
17
|
+
* @param {number} a Semi-major axis `a` of the secondary around the primary (finite, > 0).
|
|
18
|
+
* @param {number} m Mass of the secondary body `m` (finite, > 0).
|
|
19
|
+
* @param {number} M Mass of the primary body `M` (finite, > 0).
|
|
20
|
+
* @returns {number} Sphere of influence radius `rSOI` in the same distance units as `a`.
|
|
21
|
+
* @throws {TypeError} If any input is not finite.
|
|
22
|
+
* @throws {RangeError} If `a <= 0`, `m <= 0`, or `M <= 0`.
|
|
23
|
+
* @group Orbits
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* // Example (Earth around Sun; km-based a):
|
|
28
|
+
* const aKm = 149_597_870.7; // km
|
|
29
|
+
* const mEarth = 5.972e24; // kg
|
|
30
|
+
* const mSun = 1.9885e30; // kg
|
|
31
|
+
*
|
|
32
|
+
* const rSoiKm = sphereOfInfluenceRadius(aKm, mEarth, mSun);
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare const sphereOfInfluenceRadius: (a: number, m: number, M: number) => number;
|
|
36
|
+
//# sourceMappingURL=sphere-of-influence-radius.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sphere-of-influence-radius.d.ts","sourceRoot":"","sources":["../../../src/categories/orbits/sphere-of-influence-radius.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,uBAAuB,GAClC,GAAG,MAAM,EACT,GAAG,MAAM,EACT,GAAG,MAAM,KACR,MA0BF,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compute **sphere of influence** radius (patched conics approximation).
|
|
3
|
+
*
|
|
4
|
+
* Equation:
|
|
5
|
+
* $$
|
|
6
|
+
* r_{\text{SOI}} \approx a \left(\frac{m}{M}\right)^{2/5}
|
|
7
|
+
* $$
|
|
8
|
+
*
|
|
9
|
+
* Where:
|
|
10
|
+
* - `a` is the semi-major axis of the secondary body's orbit about the primary (m or km)
|
|
11
|
+
* - `m` is the mass of the secondary body (e.g., planet) (kg)
|
|
12
|
+
* - `M` is the mass of the primary body (e.g., Sun) (kg)
|
|
13
|
+
*
|
|
14
|
+
* Units:
|
|
15
|
+
* - Output `rSOI` has the same distance unit as `a` (since the mass ratio is dimensionless).
|
|
16
|
+
*
|
|
17
|
+
* @param {number} a Semi-major axis `a` of the secondary around the primary (finite, > 0).
|
|
18
|
+
* @param {number} m Mass of the secondary body `m` (finite, > 0).
|
|
19
|
+
* @param {number} M Mass of the primary body `M` (finite, > 0).
|
|
20
|
+
* @returns {number} Sphere of influence radius `rSOI` in the same distance units as `a`.
|
|
21
|
+
* @throws {TypeError} If any input is not finite.
|
|
22
|
+
* @throws {RangeError} If `a <= 0`, `m <= 0`, or `M <= 0`.
|
|
23
|
+
* @group Orbits
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* // Example (Earth around Sun; km-based a):
|
|
28
|
+
* const aKm = 149_597_870.7; // km
|
|
29
|
+
* const mEarth = 5.972e24; // kg
|
|
30
|
+
* const mSun = 1.9885e30; // kg
|
|
31
|
+
*
|
|
32
|
+
* const rSoiKm = sphereOfInfluenceRadius(aKm, mEarth, mSun);
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export const sphereOfInfluenceRadius = (a, m, M) => {
|
|
36
|
+
if (!Number.isFinite(a)) {
|
|
37
|
+
throw new TypeError(`a must be a finite number. Received: ${a}`);
|
|
38
|
+
}
|
|
39
|
+
if (!Number.isFinite(m)) {
|
|
40
|
+
throw new TypeError(`m must be a finite number. Received: ${m}`);
|
|
41
|
+
}
|
|
42
|
+
if (!Number.isFinite(M)) {
|
|
43
|
+
throw new TypeError(`M must be a finite number. Received: ${M}`);
|
|
44
|
+
}
|
|
45
|
+
if (a <= 0) {
|
|
46
|
+
throw new RangeError(`a must be > 0. Received: ${a}`);
|
|
47
|
+
}
|
|
48
|
+
if (m <= 0) {
|
|
49
|
+
throw new RangeError(`m must be > 0. Received: ${m}`);
|
|
50
|
+
}
|
|
51
|
+
if (M <= 0) {
|
|
52
|
+
throw new RangeError(`M must be > 0. Received: ${M}`);
|
|
53
|
+
}
|
|
54
|
+
return a * Math.pow(m / M, 2 / 5);
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=sphere-of-influence-radius.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sphere-of-influence-radius.js","sourceRoot":"","sources":["../../../src/categories/orbits/sphere-of-influence-radius.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,CAAS,EACT,CAAS,EACT,CAAS,EACD,EAAE;IACV,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,UAAU,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,UAAU,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,UAAU,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC,CAAC"}
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
* @example
|
|
32
32
|
* ```ts
|
|
33
33
|
* // LEO (~400 km): a ≈ r for near-circular
|
|
34
|
-
* const muEarth = 3.986004418e14; // m
|
|
34
|
+
* const muEarth = 3.986004418e14; // m³/s²
|
|
35
35
|
* const r = 6378e3 + 400e3; // m
|
|
36
36
|
* const a = r; // circular
|
|
37
37
|
* const v = visVivaSpeed(r, a, muEarth); // ≈ 7670 m/s
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
* @example
|
|
32
32
|
* ```ts
|
|
33
33
|
* // LEO (~400 km): a ≈ r for near-circular
|
|
34
|
-
* const muEarth = 3.986004418e14; // m
|
|
34
|
+
* const muEarth = 3.986004418e14; // m³/s²
|
|
35
35
|
* const r = 6378e3 + 400e3; // m
|
|
36
36
|
* const a = r; // circular
|
|
37
37
|
* const v = visVivaSpeed(r, a, muEarth); // ≈ 7670 m/s
|
|
@@ -43,7 +43,7 @@ export const visVivaSpeed = (r, a, mu) => {
|
|
|
43
43
|
throw new Error('r must be a finite, positive number (m).');
|
|
44
44
|
}
|
|
45
45
|
if (!Number.isFinite(mu) || mu < 0) {
|
|
46
|
-
throw new Error('mu must be a finite, non-negative number (m
|
|
46
|
+
throw new Error('mu must be a finite, non-negative number (m³/s²).');
|
|
47
47
|
}
|
|
48
48
|
if (!Number.isFinite(a)) {
|
|
49
49
|
// Allow Infinity (parabolic); disallow NaN/-Infinity for clarity
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vis-viva-speed.js","sourceRoot":"","sources":["../../../src/categories/orbits/vis-viva-speed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAU,EAAU,EAAE;IACvE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"vis-viva-speed.js","sourceRoot":"","sources":["../../../src/categories/orbits/vis-viva-speed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAU,EAAU,EAAE;IACvE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACxB,iEAAiE;QACjE,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;YACnB,kBAAkB;YAClB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,gDAAgD;IACpE,MAAM,QAAQ,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IAErC,oEAAoE;IACpE,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAEvC,IAAI,QAAQ,GAAG,CAAC,GAAG;YAAE,OAAO,CAAC,CAAC,CAAC,yBAAyB;QAExD,MAAM,IAAI,KAAK,CACb,uCAAuC,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAC9D,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7B,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -16,15 +16,21 @@ export * from './categories/gravity/acceleration-on1-by2';
|
|
|
16
16
|
export * from './categories/gravity/force-on1-by2';
|
|
17
17
|
export * from './categories/gravity/gravitational-force';
|
|
18
18
|
export * from './categories/gravity/gravitational-parameter';
|
|
19
|
+
export * from './categories/orbits/characteristic-energy-c3';
|
|
19
20
|
export * from './categories/orbits/circular-speed';
|
|
21
|
+
export * from './categories/orbits/cw-hill-derivatives';
|
|
20
22
|
export * from './categories/orbits/escape-speed';
|
|
21
23
|
export * from './categories/orbits/flight-path-angle-from-true-anomaly';
|
|
24
|
+
export * from './categories/orbits/hyperbolic-periapsis-speed';
|
|
22
25
|
export * from './categories/orbits/kepler-period';
|
|
26
|
+
export * from './categories/orbits/mean-motion';
|
|
23
27
|
export * from './categories/orbits/specific-angular-momentum-from-elements';
|
|
24
28
|
export * from './categories/orbits/specific-angular-momentum';
|
|
25
29
|
export * from './categories/orbits/specific-mechanical-energy';
|
|
30
|
+
export * from './categories/orbits/sphere-of-influence-radius';
|
|
26
31
|
export * from './categories/orbits/vis-viva-speed';
|
|
27
32
|
export * from './categories/manoeuvres/combine-burns-delta-v';
|
|
33
|
+
export * from './categories/manoeuvres/gravity-assist-turning-angle';
|
|
28
34
|
export * from './categories/manoeuvres/hohmann-transfer';
|
|
29
35
|
export * from './categories/manoeuvres/oberth-energy-gain';
|
|
30
36
|
export * from './categories/manoeuvres/plane-change-delta-v';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;AAI9C,cAAc,kDAAkD,CAAC;AAEjE,cAAc,kDAAkD,CAAC;AAEjE,cAAc,6CAA6C,CAAC;AAI5D,cAAc,4CAA4C,CAAC;AAE3D,cAAc,oDAAoD,CAAC;AAEnE,cAAc,iDAAiD,CAAC;AAEhE,cAAc,kCAAkC,CAAC;AAIjD,cAAc,2CAA2C,CAAC;AAE1D,cAAc,oCAAoC,CAAC;AAEnD,cAAc,0CAA0C,CAAC;AAEzD,cAAc,8CAA8C,CAAC;AAI7D,cAAc,oCAAoC,CAAC;AAEnD,cAAc,kCAAkC,CAAC;AAEjD,cAAc,yDAAyD,CAAC;AAExE,cAAc,mCAAmC,CAAC;AAElD,cAAc,6DAA6D,CAAC;AAE5E,cAAc,+CAA+C,CAAC;AAE9D,cAAc,gDAAgD,CAAC;AAE/D,cAAc,oCAAoC,CAAC;AAInD,cAAc,+CAA+C,CAAC;AAE9D,cAAc,0CAA0C,CAAC;AAEzD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,8CAA8C,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;AAI9C,cAAc,kDAAkD,CAAC;AAEjE,cAAc,kDAAkD,CAAC;AAEjE,cAAc,6CAA6C,CAAC;AAI5D,cAAc,4CAA4C,CAAC;AAE3D,cAAc,oDAAoD,CAAC;AAEnE,cAAc,iDAAiD,CAAC;AAEhE,cAAc,kCAAkC,CAAC;AAIjD,cAAc,2CAA2C,CAAC;AAE1D,cAAc,oCAAoC,CAAC;AAEnD,cAAc,0CAA0C,CAAC;AAEzD,cAAc,8CAA8C,CAAC;AAI7D,cAAc,8CAA8C,CAAC;AAE7D,cAAc,oCAAoC,CAAC;AAEnD,cAAc,yCAAyC,CAAC;AAExD,cAAc,kCAAkC,CAAC;AAEjD,cAAc,yDAAyD,CAAC;AAExE,cAAc,gDAAgD,CAAC;AAE/D,cAAc,mCAAmC,CAAC;AAElD,cAAc,iCAAiC,CAAC;AAEhD,cAAc,6DAA6D,CAAC;AAE5E,cAAc,+CAA+C,CAAC;AAE9D,cAAc,gDAAgD,CAAC;AAE/D,cAAc,gDAAgD,CAAC;AAE/D,cAAc,oCAAoC,CAAC;AAInD,cAAc,+CAA+C,CAAC;AAE9D,cAAc,sDAAsD,CAAC;AAErE,cAAc,0CAA0C,CAAC;AAEzD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,8CAA8C,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -21,16 +21,22 @@ export * from './categories/gravity/force-on1-by2';
|
|
|
21
21
|
export * from './categories/gravity/gravitational-force';
|
|
22
22
|
export * from './categories/gravity/gravitational-parameter';
|
|
23
23
|
// categories/orbits
|
|
24
|
+
export * from './categories/orbits/characteristic-energy-c3';
|
|
24
25
|
export * from './categories/orbits/circular-speed';
|
|
26
|
+
export * from './categories/orbits/cw-hill-derivatives';
|
|
25
27
|
export * from './categories/orbits/escape-speed';
|
|
26
28
|
export * from './categories/orbits/flight-path-angle-from-true-anomaly';
|
|
29
|
+
export * from './categories/orbits/hyperbolic-periapsis-speed';
|
|
27
30
|
export * from './categories/orbits/kepler-period';
|
|
31
|
+
export * from './categories/orbits/mean-motion';
|
|
28
32
|
export * from './categories/orbits/specific-angular-momentum-from-elements';
|
|
29
33
|
export * from './categories/orbits/specific-angular-momentum';
|
|
30
34
|
export * from './categories/orbits/specific-mechanical-energy';
|
|
35
|
+
export * from './categories/orbits/sphere-of-influence-radius';
|
|
31
36
|
export * from './categories/orbits/vis-viva-speed';
|
|
32
37
|
// categories/manoeuvres
|
|
33
38
|
export * from './categories/manoeuvres/combine-burns-delta-v';
|
|
39
|
+
export * from './categories/manoeuvres/gravity-assist-turning-angle';
|
|
34
40
|
export * from './categories/manoeuvres/hohmann-transfer';
|
|
35
41
|
export * from './categories/manoeuvres/oberth-energy-gain';
|
|
36
42
|
export * from './categories/manoeuvres/plane-change-delta-v';
|
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;AAEvB,cAAc,kDAAkD,CAAC;AAEjE,cAAc,kDAAkD,CAAC;AAEjE,cAAc,6CAA6C,CAAC;AAE5D,8BAA8B;AAE9B,cAAc,4CAA4C,CAAC;AAE3D,cAAc,oDAAoD,CAAC;AAEnE,cAAc,iDAAiD,CAAC;AAEhE,cAAc,kCAAkC,CAAC;AAEjD,qBAAqB;AAErB,cAAc,2CAA2C,CAAC;AAE1D,cAAc,oCAAoC,CAAC;AAEnD,cAAc,0CAA0C,CAAC;AAEzD,cAAc,8CAA8C,CAAC;AAE7D,oBAAoB;AAEpB,cAAc,oCAAoC,CAAC;AAEnD,cAAc,kCAAkC,CAAC;AAEjD,cAAc,yDAAyD,CAAC;AAExE,cAAc,mCAAmC,CAAC;AAElD,cAAc,6DAA6D,CAAC;AAE5E,cAAc,+CAA+C,CAAC;AAE9D,cAAc,gDAAgD,CAAC;AAE/D,cAAc,oCAAoC,CAAC;AAEnD,wBAAwB;AAExB,cAAc,+CAA+C,CAAC;AAE9D,cAAc,0CAA0C,CAAC;AAEzD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,8CAA8C,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;AAEvB,cAAc,kDAAkD,CAAC;AAEjE,cAAc,kDAAkD,CAAC;AAEjE,cAAc,6CAA6C,CAAC;AAE5D,8BAA8B;AAE9B,cAAc,4CAA4C,CAAC;AAE3D,cAAc,oDAAoD,CAAC;AAEnE,cAAc,iDAAiD,CAAC;AAEhE,cAAc,kCAAkC,CAAC;AAEjD,qBAAqB;AAErB,cAAc,2CAA2C,CAAC;AAE1D,cAAc,oCAAoC,CAAC;AAEnD,cAAc,0CAA0C,CAAC;AAEzD,cAAc,8CAA8C,CAAC;AAE7D,oBAAoB;AAEpB,cAAc,8CAA8C,CAAC;AAE7D,cAAc,oCAAoC,CAAC;AAEnD,cAAc,yCAAyC,CAAC;AAExD,cAAc,kCAAkC,CAAC;AAEjD,cAAc,yDAAyD,CAAC;AAExE,cAAc,gDAAgD,CAAC;AAE/D,cAAc,mCAAmC,CAAC;AAElD,cAAc,iCAAiC,CAAC;AAEhD,cAAc,6DAA6D,CAAC;AAE5E,cAAc,+CAA+C,CAAC;AAE9D,cAAc,gDAAgD,CAAC;AAE/D,cAAc,gDAAgD,CAAC;AAE/D,cAAc,oCAAoC,CAAC;AAEnD,wBAAwB;AAExB,cAAc,+CAA+C,CAAC;AAE9D,cAAc,sDAAsD,CAAC;AAErE,cAAc,0CAA0C,CAAC;AAEzD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,8CAA8C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@interstellar-tools/equations",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.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",
|