@interstellar-tools/equations 1.1.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/categories/anomalies/asymptote-true-anomaly.d.ts +50 -0
- package/dist/categories/anomalies/asymptote-true-anomaly.d.ts.map +1 -0
- package/dist/categories/anomalies/asymptote-true-anomaly.js +55 -0
- package/dist/categories/anomalies/asymptote-true-anomaly.js.map +1 -0
- package/dist/categories/anomalies/hyperbolic-to-true-anomaly.d.ts +38 -0
- package/dist/categories/anomalies/hyperbolic-to-true-anomaly.d.ts.map +1 -0
- package/dist/categories/anomalies/hyperbolic-to-true-anomaly.js +49 -0
- package/dist/categories/anomalies/hyperbolic-to-true-anomaly.js.map +1 -0
- package/dist/categories/anomalies/true-to-hyperbolic-anomaly.d.ts +40 -0
- package/dist/categories/anomalies/true-to-hyperbolic-anomaly.d.ts.map +1 -0
- package/dist/categories/anomalies/true-to-hyperbolic-anomaly.js +54 -0
- package/dist/categories/anomalies/true-to-hyperbolic-anomaly.js.map +1 -0
- package/dist/categories/kepler/solve-kepler-hyperbolic.d.ts +49 -0
- package/dist/categories/kepler/solve-kepler-hyperbolic.d.ts.map +1 -0
- package/dist/categories/kepler/solve-kepler-hyperbolic.js +90 -0
- package/dist/categories/kepler/solve-kepler-hyperbolic.js.map +1 -0
- package/dist/categories/manoeuvres/cw-two-impulse-transfer.d.ts +58 -0
- package/dist/categories/manoeuvres/cw-two-impulse-transfer.d.ts.map +1 -0
- package/dist/categories/manoeuvres/cw-two-impulse-transfer.js +104 -0
- package/dist/categories/manoeuvres/cw-two-impulse-transfer.js.map +1 -0
- package/dist/categories/manoeuvres/phasing-wait-time.d.ts +55 -0
- package/dist/categories/manoeuvres/phasing-wait-time.d.ts.map +1 -0
- package/dist/categories/manoeuvres/phasing-wait-time.js +77 -0
- package/dist/categories/manoeuvres/phasing-wait-time.js.map +1 -0
- package/dist/categories/orbits/cw-propagate.d.ts +48 -0
- package/dist/categories/orbits/cw-propagate.d.ts.map +1 -0
- package/dist/categories/orbits/cw-propagate.js +68 -0
- package/dist/categories/orbits/cw-propagate.js.map +1 -0
- package/dist/categories/orbits/cw-state-transition.d.ts +65 -0
- package/dist/categories/orbits/cw-state-transition.d.ts.map +1 -0
- package/dist/categories/orbits/cw-state-transition.js +83 -0
- package/dist/categories/orbits/cw-state-transition.js.map +1 -0
- package/dist/categories/orbits/hyperbolic-eccentricity.d.ts +56 -0
- package/dist/categories/orbits/hyperbolic-eccentricity.d.ts.map +1 -0
- package/dist/categories/orbits/hyperbolic-eccentricity.js +72 -0
- package/dist/categories/orbits/hyperbolic-eccentricity.js.map +1 -0
- package/dist/categories/orbits/hyperbolic-semi-major-axis.d.ts +53 -0
- package/dist/categories/orbits/hyperbolic-semi-major-axis.d.ts.map +1 -0
- package/dist/categories/orbits/hyperbolic-semi-major-axis.js +66 -0
- package/dist/categories/orbits/hyperbolic-semi-major-axis.js.map +1 -0
- package/dist/categories/orbits/hyperbolic-time-of-flight.d.ts +64 -0
- package/dist/categories/orbits/hyperbolic-time-of-flight.d.ts.map +1 -0
- package/dist/categories/orbits/hyperbolic-time-of-flight.js +86 -0
- package/dist/categories/orbits/hyperbolic-time-of-flight.js.map +1 -0
- package/dist/categories/orbits/synodic-period.d.ts +59 -0
- package/dist/categories/orbits/synodic-period.d.ts.map +1 -0
- package/dist/categories/orbits/synodic-period.js +72 -0
- package/dist/categories/orbits/synodic-period.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compute the **semi-major axis of a hyperbola** from the hyperbolic excess speed.
|
|
3
|
+
*
|
|
4
|
+
* $$
|
|
5
|
+
* a = -\frac{\mu}{v_\infty^2}
|
|
6
|
+
* $$
|
|
7
|
+
*
|
|
8
|
+
* Where:
|
|
9
|
+
* - $ v_\infty $ is the hyperbolic excess speed: the speed left over far from the body (m/s)
|
|
10
|
+
* - $ \mu $ is the body's gravitational parameter (m³/s²)
|
|
11
|
+
*
|
|
12
|
+
* **Units**
|
|
13
|
+
* - Inputs: `vInfinity` in **m/s**, `mu` in **m³/s²**.
|
|
14
|
+
* - Output: $ a $ in **m**, negative.
|
|
15
|
+
*
|
|
16
|
+
* ::: info Notes
|
|
17
|
+
*
|
|
18
|
+
* - Negative by convention, so that vis-viva $ v^2 = \mu(2/r - 1/a) $ holds for hyperbolas too.
|
|
19
|
+
* - $ v_\infty $ comes from a speed $ v $ at distance $ r $ by energy: $ v_\infty^2 = v^2 - 2\mu/r $, or from {@link characteristicEnergyC3} as $ \sqrt{C_3} $.
|
|
20
|
+
*
|
|
21
|
+
* :::
|
|
22
|
+
*
|
|
23
|
+
* ::: practice Apollo 11, arriving at the Moon
|
|
24
|
+
*
|
|
25
|
+
* **−4 203 km**
|
|
26
|
+
*
|
|
27
|
+
* _Approach hyperbola, with 1.08 km/s left over far from the Moon_
|
|
28
|
+
*
|
|
29
|
+
* ```ts
|
|
30
|
+
* hyperbolicSemiMajorAxis(1080, 4.902800118e12); // ≈ -4 203 361 m
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* :::
|
|
34
|
+
*
|
|
35
|
+
* @param vInfinity - Hyperbolic excess speed $ v_\infty $ in **m/s** (finite, > 0).
|
|
36
|
+
* @param mu - Gravitational parameter $ \mu $ in **m³/s²** (finite, > 0).
|
|
37
|
+
* @returns Semi-major axis $ a $ in **m** (negative).
|
|
38
|
+
* @throws {TypeError} If any input is not a finite number.
|
|
39
|
+
* @throws {RangeError} If `vInfinity <= 0` or `mu <= 0`.
|
|
40
|
+
* @group Orbits
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* // Leaving Earth for Mars with v∞ ≈ 2.95 km/s
|
|
45
|
+
* const a = hyperbolicSemiMajorAxis(2950, 3.986004418e14);
|
|
46
|
+
* // a ≈ -45 803 km
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* @see {@link hyperbolicEccentricity}
|
|
50
|
+
* @see {@link hyperbolicPeriapsisSpeed}
|
|
51
|
+
*/
|
|
52
|
+
export const hyperbolicSemiMajorAxis = (vInfinity, mu) => {
|
|
53
|
+
for (const [name, x] of [
|
|
54
|
+
['vInfinity', vInfinity],
|
|
55
|
+
['mu', mu]
|
|
56
|
+
]) {
|
|
57
|
+
if (!Number.isFinite(x))
|
|
58
|
+
throw new TypeError(`${name} must be a finite number. Received: ${x}`);
|
|
59
|
+
}
|
|
60
|
+
if (vInfinity <= 0)
|
|
61
|
+
throw new RangeError(`vInfinity must be > 0. Received: ${vInfinity}`);
|
|
62
|
+
if (mu <= 0)
|
|
63
|
+
throw new RangeError(`mu must be > 0. Received: ${mu}`);
|
|
64
|
+
return -mu / (vInfinity * vInfinity);
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=hyperbolic-semi-major-axis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hyperbolic-semi-major-axis.js","sourceRoot":"","sources":["../../../src/categories/orbits/hyperbolic-semi-major-axis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,SAAiB,EACjB,EAAU,EACF,EAAE;IACV,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI;QACtB,CAAC,WAAW,EAAE,SAAS,CAAC;QACxB,CAAC,IAAI,EAAE,EAAE,CAAC;KACF,EAAE,CAAC;QACX,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YACrB,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,uCAAuC,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,SAAS,IAAI,CAAC;QAChB,MAAM,IAAI,UAAU,CAAC,oCAAoC,SAAS,EAAE,CAAC,CAAC;IAExE,IAAI,EAAE,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC;IAErE,OAAO,CAAC,EAAE,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;AACvC,CAAC,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { Radians } from '@interstellar-tools/types';
|
|
2
|
+
/**
|
|
3
|
+
* Compute the **time of flight between two points on a hyperbola**, given by their true anomalies.
|
|
4
|
+
*
|
|
5
|
+
* $$
|
|
6
|
+
* t_2 - t_1 = \sqrt{\frac{-a^3}{\mu}}\,\Big[(e\sinh F_2 - F_2) - (e\sinh F_1 - F_1)\Big]
|
|
7
|
+
* $$
|
|
8
|
+
*
|
|
9
|
+
* with each hyperbolic anomaly $ F $ from {@link trueToHyperbolicAnomaly}.
|
|
10
|
+
*
|
|
11
|
+
* **Units**
|
|
12
|
+
* - Inputs: `nu1`, `nu2` in **radians**, `e` dimensionless, `a` in **m** (negative), `mu` in **m³/s²**.
|
|
13
|
+
* - Output: time in **s**, negative if `nu2` comes before `nu1`.
|
|
14
|
+
*
|
|
15
|
+
* ::: info Notes
|
|
16
|
+
*
|
|
17
|
+
* - Both points must lie inside the asymptotes. The incoming branch can be given as negative angles or just below 2π.
|
|
18
|
+
* - Crossing periapsis needs no special handling: $ F $ changes sign there.
|
|
19
|
+
* - To go from a time to a position, solve $ M_h = e\sinh F - F $ with {@link solveKeplerHyperbolic}, then use {@link hyperbolicToTrueAnomaly}.
|
|
20
|
+
*
|
|
21
|
+
* :::
|
|
22
|
+
*
|
|
23
|
+
* ::: practice Apollo 11, falling towards the Moon
|
|
24
|
+
*
|
|
25
|
+
* **13.8 h**
|
|
26
|
+
*
|
|
27
|
+
* _From the edge of the Moon's sphere of influence, 62 640 km out, to closest approach_
|
|
28
|
+
*
|
|
29
|
+
* The flight took 14 h 10 min from crossing into the sphere to lighting the engine for lunar orbit insertion. Patched conics leave out Earth's pull inside the sphere, one reason the two differ.
|
|
30
|
+
*
|
|
31
|
+
* ```ts
|
|
32
|
+
* const e = 1.44; // approach hyperbola
|
|
33
|
+
* const a = -4_203_000; // m
|
|
34
|
+
* const p = a * (1 - e * e);
|
|
35
|
+
* const nuSoi = -Math.acos((p / 62_640_000 - 1) / e) as Radians; // incoming
|
|
36
|
+
* hyperbolicTimeOfFlight(nuSoi, 0 as Radians, e, a, 4.902800118e12); // ≈ 49 600 s
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* :::
|
|
40
|
+
*
|
|
41
|
+
* @param nu1 - True anomaly at the start $ \nu_1 $ in **radians** (finite, inside the asymptotes).
|
|
42
|
+
* @param nu2 - True anomaly at the end $ \nu_2 $ in **radians** (finite, inside the asymptotes).
|
|
43
|
+
* @param e - Eccentricity $ e $ (finite, > 1).
|
|
44
|
+
* @param a - Semi-major axis $ a $ in **m** (finite, < 0).
|
|
45
|
+
* @param mu - Gravitational parameter $ \mu $ in **m³/s²** (finite, > 0).
|
|
46
|
+
* @returns Time of flight in **s** from `nu1` to `nu2`.
|
|
47
|
+
* @throws {TypeError} If any input is not a finite number.
|
|
48
|
+
* @throws {RangeError} If `e <= 1`, `a >= 0`, `mu <= 0`, or either true anomaly is at or beyond the asymptotes.
|
|
49
|
+
* @group Orbits
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* import type { Radians } from '@interstellar-tools/types';
|
|
54
|
+
*
|
|
55
|
+
* // From periapsis to 90° on a hyperbola with e = 2, a = -10 000 km, around Earth
|
|
56
|
+
* const t = hyperbolicTimeOfFlight(0 as Radians, (Math.PI / 2) as Radians, 2, -10_000e3, 3.986004418e14);
|
|
57
|
+
* // t ≈ 3 401 s
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* @see {@link solveKeplerHyperbolic}
|
|
61
|
+
* @see https://en.wikipedia.org/wiki/Hyperbolic_trajectory Hyperbolic trajectory
|
|
62
|
+
*/
|
|
63
|
+
export declare const hyperbolicTimeOfFlight: (nu1: Radians, nu2: Radians, e: number, a: number, mu: number) => number;
|
|
64
|
+
//# sourceMappingURL=hyperbolic-time-of-flight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hyperbolic-time-of-flight.d.ts","sourceRoot":"","sources":["../../../src/categories/orbits/hyperbolic-time-of-flight.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAIzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,eAAO,MAAM,sBAAsB,GACjC,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,GAAG,MAAM,EACT,GAAG,MAAM,EACT,IAAI,MAAM,KACT,MA0BF,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { trueToHyperbolicAnomaly } from '../anomalies/true-to-hyperbolic-anomaly.js';
|
|
2
|
+
/**
|
|
3
|
+
* Compute the **time of flight between two points on a hyperbola**, given by their true anomalies.
|
|
4
|
+
*
|
|
5
|
+
* $$
|
|
6
|
+
* t_2 - t_1 = \sqrt{\frac{-a^3}{\mu}}\,\Big[(e\sinh F_2 - F_2) - (e\sinh F_1 - F_1)\Big]
|
|
7
|
+
* $$
|
|
8
|
+
*
|
|
9
|
+
* with each hyperbolic anomaly $ F $ from {@link trueToHyperbolicAnomaly}.
|
|
10
|
+
*
|
|
11
|
+
* **Units**
|
|
12
|
+
* - Inputs: `nu1`, `nu2` in **radians**, `e` dimensionless, `a` in **m** (negative), `mu` in **m³/s²**.
|
|
13
|
+
* - Output: time in **s**, negative if `nu2` comes before `nu1`.
|
|
14
|
+
*
|
|
15
|
+
* ::: info Notes
|
|
16
|
+
*
|
|
17
|
+
* - Both points must lie inside the asymptotes. The incoming branch can be given as negative angles or just below 2π.
|
|
18
|
+
* - Crossing periapsis needs no special handling: $ F $ changes sign there.
|
|
19
|
+
* - To go from a time to a position, solve $ M_h = e\sinh F - F $ with {@link solveKeplerHyperbolic}, then use {@link hyperbolicToTrueAnomaly}.
|
|
20
|
+
*
|
|
21
|
+
* :::
|
|
22
|
+
*
|
|
23
|
+
* ::: practice Apollo 11, falling towards the Moon
|
|
24
|
+
*
|
|
25
|
+
* **13.8 h**
|
|
26
|
+
*
|
|
27
|
+
* _From the edge of the Moon's sphere of influence, 62 640 km out, to closest approach_
|
|
28
|
+
*
|
|
29
|
+
* The flight took 14 h 10 min from crossing into the sphere to lighting the engine for lunar orbit insertion. Patched conics leave out Earth's pull inside the sphere, one reason the two differ.
|
|
30
|
+
*
|
|
31
|
+
* ```ts
|
|
32
|
+
* const e = 1.44; // approach hyperbola
|
|
33
|
+
* const a = -4_203_000; // m
|
|
34
|
+
* const p = a * (1 - e * e);
|
|
35
|
+
* const nuSoi = -Math.acos((p / 62_640_000 - 1) / e) as Radians; // incoming
|
|
36
|
+
* hyperbolicTimeOfFlight(nuSoi, 0 as Radians, e, a, 4.902800118e12); // ≈ 49 600 s
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* :::
|
|
40
|
+
*
|
|
41
|
+
* @param nu1 - True anomaly at the start $ \nu_1 $ in **radians** (finite, inside the asymptotes).
|
|
42
|
+
* @param nu2 - True anomaly at the end $ \nu_2 $ in **radians** (finite, inside the asymptotes).
|
|
43
|
+
* @param e - Eccentricity $ e $ (finite, > 1).
|
|
44
|
+
* @param a - Semi-major axis $ a $ in **m** (finite, < 0).
|
|
45
|
+
* @param mu - Gravitational parameter $ \mu $ in **m³/s²** (finite, > 0).
|
|
46
|
+
* @returns Time of flight in **s** from `nu1` to `nu2`.
|
|
47
|
+
* @throws {TypeError} If any input is not a finite number.
|
|
48
|
+
* @throws {RangeError} If `e <= 1`, `a >= 0`, `mu <= 0`, or either true anomaly is at or beyond the asymptotes.
|
|
49
|
+
* @group Orbits
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* import type { Radians } from '@interstellar-tools/types';
|
|
54
|
+
*
|
|
55
|
+
* // From periapsis to 90° on a hyperbola with e = 2, a = -10 000 km, around Earth
|
|
56
|
+
* const t = hyperbolicTimeOfFlight(0 as Radians, (Math.PI / 2) as Radians, 2, -10_000e3, 3.986004418e14);
|
|
57
|
+
* // t ≈ 3 401 s
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* @see {@link solveKeplerHyperbolic}
|
|
61
|
+
* @see https://en.wikipedia.org/wiki/Hyperbolic_trajectory Hyperbolic trajectory
|
|
62
|
+
*/
|
|
63
|
+
export const hyperbolicTimeOfFlight = (nu1, nu2, e, a, mu) => {
|
|
64
|
+
for (const [name, x] of [
|
|
65
|
+
['nu1', nu1],
|
|
66
|
+
['nu2', nu2],
|
|
67
|
+
['e', e],
|
|
68
|
+
['a', a],
|
|
69
|
+
['mu', mu]
|
|
70
|
+
]) {
|
|
71
|
+
if (!Number.isFinite(x))
|
|
72
|
+
throw new TypeError(`${name} must be a finite number. Received: ${x}`);
|
|
73
|
+
}
|
|
74
|
+
if (e <= 1)
|
|
75
|
+
throw new RangeError(`e must be > 1. Received: ${e}`);
|
|
76
|
+
if (a >= 0)
|
|
77
|
+
throw new RangeError(`a must be < 0 for a hyperbola. Received: ${a}`);
|
|
78
|
+
if (mu <= 0)
|
|
79
|
+
throw new RangeError(`mu must be > 0. Received: ${mu}`);
|
|
80
|
+
const meanAnomaly = (nu) => {
|
|
81
|
+
const F = trueToHyperbolicAnomaly(nu, e);
|
|
82
|
+
return e * Math.sinh(F) - F;
|
|
83
|
+
};
|
|
84
|
+
return Math.sqrt((-a * a * a) / mu) * (meanAnomaly(nu2) - meanAnomaly(nu1));
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=hyperbolic-time-of-flight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hyperbolic-time-of-flight.js","sourceRoot":"","sources":["../../../src/categories/orbits/hyperbolic-time-of-flight.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAErF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,GAAY,EACZ,GAAY,EACZ,CAAS,EACT,CAAS,EACT,EAAU,EACF,EAAE;IACV,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI;QACtB,CAAC,KAAK,EAAE,GAAG,CAAC;QACZ,CAAC,KAAK,EAAE,GAAG,CAAC;QACZ,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,GAAG,EAAE,CAAC,CAAC;QACR,CAAC,IAAI,EAAE,EAAE,CAAC;KACF,EAAE,CAAC;QACX,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YACrB,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,uCAAuC,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;IAElE,IAAI,CAAC,IAAI,CAAC;QACR,MAAM,IAAI,UAAU,CAAC,4CAA4C,CAAC,EAAE,CAAC,CAAC;IAExE,IAAI,EAAE,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC;IAErE,MAAM,WAAW,GAAG,CAAC,EAAW,EAAE,EAAE;QAClC,MAAM,CAAC,GAAG,uBAAuB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAEzC,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEF,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9E,CAAC,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compute the **synodic period** of two bodies on circular orbits: the time between two alignments.
|
|
3
|
+
*
|
|
4
|
+
* $$
|
|
5
|
+
* T_\text{syn} = \frac{2\pi}{\lvert n_1 - n_2 \rvert}
|
|
6
|
+
* $$
|
|
7
|
+
*
|
|
8
|
+
* Where:
|
|
9
|
+
* - $ n_1 $, $ n_2 $ are the two mean motions (rad/s)
|
|
10
|
+
*
|
|
11
|
+
* **Units**
|
|
12
|
+
* - Inputs: `n1`, `n2` in **rad/s**.
|
|
13
|
+
* - Output: $ T_\text{syn} $ in **s**.
|
|
14
|
+
*
|
|
15
|
+
* ::: info Notes
|
|
16
|
+
*
|
|
17
|
+
* - The faster body gains $ 2\pi $ on the slower one every synodic period.
|
|
18
|
+
* - The closer the two orbits, the longer it takes: a chaser that's slightly lower gains only a little each orbit.
|
|
19
|
+
* - For planets, the same formula gives the time between launch windows, e.g. about 26 months for Earth and Mars.
|
|
20
|
+
*
|
|
21
|
+
* :::
|
|
22
|
+
*
|
|
23
|
+
* ::: practice Apollo 11, after lunar liftoff
|
|
24
|
+
*
|
|
25
|
+
* **41.8 h**
|
|
26
|
+
*
|
|
27
|
+
* _The LM in its 9.4 × 48.0 n mi orbit against the CSM in 56 × 62 n mi_
|
|
28
|
+
*
|
|
29
|
+
* The LM gained only about 16° on the CSM each orbit, so it had to lift off at the right moment: the whole rendezvous took 3 h 41 min.
|
|
30
|
+
*
|
|
31
|
+
* ```ts
|
|
32
|
+
* const nLM = meanMotion(1_790_552, 4.902800118e12);
|
|
33
|
+
* const nCSM = meanMotion(1_846_668, 4.902800118e12);
|
|
34
|
+
* synodicPeriod(nLM, nCSM) / 3600; // ≈ 41.8 h
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* :::
|
|
38
|
+
*
|
|
39
|
+
* @param n1 - Mean motion of the first body in **rad/s** (finite, > 0).
|
|
40
|
+
* @param n2 - Mean motion of the second body in **rad/s** (finite, > 0, not equal to `n1`).
|
|
41
|
+
* @returns Synodic period in **s**.
|
|
42
|
+
* @throws {TypeError} If any input is not a finite number.
|
|
43
|
+
* @throws {RangeError} If `n1 <= 0`, `n2 <= 0`, or `n1 = n2` (the bodies never realign).
|
|
44
|
+
* @group Orbits
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```ts
|
|
48
|
+
* // Earth and Mars, from their periods in days
|
|
49
|
+
* const day = 86_400;
|
|
50
|
+
* const t = synodicPeriod((2 * Math.PI) / (365.256 * day), (2 * Math.PI) / (686.98 * day));
|
|
51
|
+
* // t / day ≈ 780 days
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* @see {@link phasingWaitTime}
|
|
55
|
+
* @see {@link meanMotion}
|
|
56
|
+
* @see https://en.wikipedia.org/wiki/Orbital_period#Synodic_period Synodic period
|
|
57
|
+
*/
|
|
58
|
+
export declare const synodicPeriod: (n1: number, n2: number) => number;
|
|
59
|
+
//# sourceMappingURL=synodic-period.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"synodic-period.d.ts","sourceRoot":"","sources":["../../../src/categories/orbits/synodic-period.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,eAAO,MAAM,aAAa,GAAI,IAAI,MAAM,EAAE,IAAI,MAAM,KAAG,MAiBtD,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compute the **synodic period** of two bodies on circular orbits: the time between two alignments.
|
|
3
|
+
*
|
|
4
|
+
* $$
|
|
5
|
+
* T_\text{syn} = \frac{2\pi}{\lvert n_1 - n_2 \rvert}
|
|
6
|
+
* $$
|
|
7
|
+
*
|
|
8
|
+
* Where:
|
|
9
|
+
* - $ n_1 $, $ n_2 $ are the two mean motions (rad/s)
|
|
10
|
+
*
|
|
11
|
+
* **Units**
|
|
12
|
+
* - Inputs: `n1`, `n2` in **rad/s**.
|
|
13
|
+
* - Output: $ T_\text{syn} $ in **s**.
|
|
14
|
+
*
|
|
15
|
+
* ::: info Notes
|
|
16
|
+
*
|
|
17
|
+
* - The faster body gains $ 2\pi $ on the slower one every synodic period.
|
|
18
|
+
* - The closer the two orbits, the longer it takes: a chaser that's slightly lower gains only a little each orbit.
|
|
19
|
+
* - For planets, the same formula gives the time between launch windows, e.g. about 26 months for Earth and Mars.
|
|
20
|
+
*
|
|
21
|
+
* :::
|
|
22
|
+
*
|
|
23
|
+
* ::: practice Apollo 11, after lunar liftoff
|
|
24
|
+
*
|
|
25
|
+
* **41.8 h**
|
|
26
|
+
*
|
|
27
|
+
* _The LM in its 9.4 × 48.0 n mi orbit against the CSM in 56 × 62 n mi_
|
|
28
|
+
*
|
|
29
|
+
* The LM gained only about 16° on the CSM each orbit, so it had to lift off at the right moment: the whole rendezvous took 3 h 41 min.
|
|
30
|
+
*
|
|
31
|
+
* ```ts
|
|
32
|
+
* const nLM = meanMotion(1_790_552, 4.902800118e12);
|
|
33
|
+
* const nCSM = meanMotion(1_846_668, 4.902800118e12);
|
|
34
|
+
* synodicPeriod(nLM, nCSM) / 3600; // ≈ 41.8 h
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* :::
|
|
38
|
+
*
|
|
39
|
+
* @param n1 - Mean motion of the first body in **rad/s** (finite, > 0).
|
|
40
|
+
* @param n2 - Mean motion of the second body in **rad/s** (finite, > 0, not equal to `n1`).
|
|
41
|
+
* @returns Synodic period in **s**.
|
|
42
|
+
* @throws {TypeError} If any input is not a finite number.
|
|
43
|
+
* @throws {RangeError} If `n1 <= 0`, `n2 <= 0`, or `n1 = n2` (the bodies never realign).
|
|
44
|
+
* @group Orbits
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```ts
|
|
48
|
+
* // Earth and Mars, from their periods in days
|
|
49
|
+
* const day = 86_400;
|
|
50
|
+
* const t = synodicPeriod((2 * Math.PI) / (365.256 * day), (2 * Math.PI) / (686.98 * day));
|
|
51
|
+
* // t / day ≈ 780 days
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* @see {@link phasingWaitTime}
|
|
55
|
+
* @see {@link meanMotion}
|
|
56
|
+
* @see https://en.wikipedia.org/wiki/Orbital_period#Synodic_period Synodic period
|
|
57
|
+
*/
|
|
58
|
+
export const synodicPeriod = (n1, n2) => {
|
|
59
|
+
for (const [name, x] of [
|
|
60
|
+
['n1', n1],
|
|
61
|
+
['n2', n2]
|
|
62
|
+
]) {
|
|
63
|
+
if (!Number.isFinite(x))
|
|
64
|
+
throw new TypeError(`${name} must be a finite number. Received: ${x}`);
|
|
65
|
+
if (x <= 0)
|
|
66
|
+
throw new RangeError(`${name} must be > 0. Received: ${x}`);
|
|
67
|
+
}
|
|
68
|
+
if (n1 === n2)
|
|
69
|
+
throw new RangeError(`n1 and n2 must differ: equal mean motions never realign. Received: ${n1}`);
|
|
70
|
+
return (2 * Math.PI) / Math.abs(n1 - n2);
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=synodic-period.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"synodic-period.js","sourceRoot":"","sources":["../../../src/categories/orbits/synodic-period.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAAU,EAAE,EAAU,EAAU,EAAE;IAC9D,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI;QACtB,CAAC,IAAI,EAAE,EAAE,CAAC;QACV,CAAC,IAAI,EAAE,EAAE,CAAC;KACF,EAAE,CAAC;QACX,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YACrB,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,uCAAuC,CAAC,EAAE,CAAC,CAAC;QAEzE,IAAI,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,2BAA2B,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,EAAE,KAAK,EAAE;QACX,MAAM,IAAI,UAAU,CAClB,sEAAsE,EAAE,EAAE,CAC3E,CAAC;IAEJ,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC3C,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -23,10 +23,14 @@ export * from './categories/helpers/rot-3.js';
|
|
|
23
23
|
export * from './categories/helpers/transpose-3.js';
|
|
24
24
|
export * from './categories/anomalies/advance-mean-anomaly.js';
|
|
25
25
|
export * from './categories/anomalies/anomaly-at.js';
|
|
26
|
+
export * from './categories/anomalies/asymptote-true-anomaly.js';
|
|
26
27
|
export * from './categories/anomalies/eccentric-to-true-anomaly.js';
|
|
28
|
+
export * from './categories/anomalies/hyperbolic-to-true-anomaly.js';
|
|
27
29
|
export * from './categories/anomalies/true-to-mean-anomaly.js';
|
|
30
|
+
export * from './categories/anomalies/true-to-hyperbolic-anomaly.js';
|
|
28
31
|
export * from './categories/kepler/solve-kepler-bisection.js';
|
|
29
32
|
export * from './categories/kepler/solve-kepler-high-eccentricity.js';
|
|
33
|
+
export * from './categories/kepler/solve-kepler-hyperbolic.js';
|
|
30
34
|
export * from './categories/kepler/solve-kepler-newton-raphson.js';
|
|
31
35
|
export * from './categories/kepler/solve-kepler.js';
|
|
32
36
|
export * from './categories/gravity/acceleration-on1-by2.js';
|
|
@@ -37,10 +41,15 @@ export * from './categories/orbits/atmospheric-drag-acceleration.js';
|
|
|
37
41
|
export * from './categories/orbits/characteristic-energy-c3.js';
|
|
38
42
|
export * from './categories/orbits/circular-speed.js';
|
|
39
43
|
export * from './categories/orbits/cw-hill-derivatives.js';
|
|
44
|
+
export * from './categories/orbits/cw-propagate.js';
|
|
45
|
+
export * from './categories/orbits/cw-state-transition.js';
|
|
40
46
|
export * from './categories/orbits/elements-to-state.js';
|
|
41
47
|
export * from './categories/orbits/escape-speed.js';
|
|
42
48
|
export * from './categories/orbits/flight-path-angle-from-true-anomaly.js';
|
|
49
|
+
export * from './categories/orbits/hyperbolic-eccentricity.js';
|
|
43
50
|
export * from './categories/orbits/hyperbolic-periapsis-speed.js';
|
|
51
|
+
export * from './categories/orbits/hyperbolic-semi-major-axis.js';
|
|
52
|
+
export * from './categories/orbits/hyperbolic-time-of-flight.js';
|
|
44
53
|
export * from './categories/orbits/inclination-from-launch-azimuth.js';
|
|
45
54
|
export * from './categories/orbits/j2-argument-of-perigee-rate.js';
|
|
46
55
|
export * from './categories/orbits/j2-nodal-precession-rate.js';
|
|
@@ -55,15 +64,18 @@ export * from './categories/orbits/specific-mechanical-energy.js';
|
|
|
55
64
|
export * from './categories/orbits/sphere-of-influence-radius.js';
|
|
56
65
|
export * from './categories/orbits/state-to-elements.js';
|
|
57
66
|
export * from './categories/orbits/surface-rotation-speed.js';
|
|
67
|
+
export * from './categories/orbits/synodic-period.js';
|
|
58
68
|
export * from './categories/orbits/vis-viva-speed.js';
|
|
59
69
|
export * from './categories/manoeuvres/burn-time.js';
|
|
60
70
|
export * from './categories/manoeuvres/combine-burns-delta-v.js';
|
|
71
|
+
export * from './categories/manoeuvres/cw-two-impulse-transfer.js';
|
|
61
72
|
export * from './categories/manoeuvres/gravity-assist-turning-angle.js';
|
|
62
73
|
export * from './categories/manoeuvres/gravity-loss.js';
|
|
63
74
|
export * from './categories/manoeuvres/hohmann-transfer.js';
|
|
64
75
|
export * from './categories/manoeuvres/initial-mass-for-delta-v.js';
|
|
65
76
|
export * from './categories/manoeuvres/mass-flow-rate.js';
|
|
66
77
|
export * from './categories/manoeuvres/oberth-energy-gain.js';
|
|
78
|
+
export * from './categories/manoeuvres/phasing-wait-time.js';
|
|
67
79
|
export * from './categories/manoeuvres/plane-change-delta-v.js';
|
|
68
80
|
export * from './categories/manoeuvres/rocket-delta-v-from-isp.js';
|
|
69
81
|
export * from './categories/manoeuvres/rocket-delta-v-from-ve.js';
|
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,qCAAqC,CAAC;AAEpD,cAAc,kCAAkC,CAAC;AAIjD,cAAc,8DAA8D,CAAC;AAE7E,cAAc,kEAAkE,CAAC;AAEjF,cAAc,wDAAwD,CAAC;AAEvE,cAAc,8DAA8D,CAAC;AAE7E,cAAc,qDAAqD,CAAC;AAEpE,cAAc,4DAA4D,CAAC;AAI3E,cAAc,wCAAwC,CAAC;AAEvD,cAAc,+CAA+C,CAAC;AAE9D,cAAc,+BAA+B,CAAC;AAE9C,cAAc,kCAAkC,CAAC;AAEjD,cAAc,8BAA8B,CAAC;AAE7C,cAAc,iDAAiD,CAAC;AAEhE,cAAc,iCAAiC,CAAC;AAEhD,cAAc,+BAA+B,CAAC;AAE9C,cAAc,+BAA+B,CAAC;AAE9C,cAAc,qCAAqC,CAAC;AAIpD,cAAc,gDAAgD,CAAC;AAE/D,cAAc,sCAAsC,CAAC;AAErD,cAAc,qDAAqD,CAAC;AAEpE,cAAc,gDAAgD,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,qCAAqC,CAAC;AAEpD,cAAc,kCAAkC,CAAC;AAIjD,cAAc,8DAA8D,CAAC;AAE7E,cAAc,kEAAkE,CAAC;AAEjF,cAAc,wDAAwD,CAAC;AAEvE,cAAc,8DAA8D,CAAC;AAE7E,cAAc,qDAAqD,CAAC;AAEpE,cAAc,4DAA4D,CAAC;AAI3E,cAAc,wCAAwC,CAAC;AAEvD,cAAc,+CAA+C,CAAC;AAE9D,cAAc,+BAA+B,CAAC;AAE9C,cAAc,kCAAkC,CAAC;AAEjD,cAAc,8BAA8B,CAAC;AAE7C,cAAc,iDAAiD,CAAC;AAEhE,cAAc,iCAAiC,CAAC;AAEhD,cAAc,+BAA+B,CAAC;AAE9C,cAAc,+BAA+B,CAAC;AAE9C,cAAc,qCAAqC,CAAC;AAIpD,cAAc,gDAAgD,CAAC;AAE/D,cAAc,sCAAsC,CAAC;AAErD,cAAc,kDAAkD,CAAC;AAEjE,cAAc,qDAAqD,CAAC;AAEpE,cAAc,sDAAsD,CAAC;AAErE,cAAc,gDAAgD,CAAC;AAE/D,cAAc,sDAAsD,CAAC;AAIrE,cAAc,+CAA+C,CAAC;AAE9D,cAAc,uDAAuD,CAAC;AAEtE,cAAc,gDAAgD,CAAC;AAE/D,cAAc,oDAAoD,CAAC;AAEnE,cAAc,qCAAqC,CAAC;AAIpD,cAAc,8CAA8C,CAAC;AAE7D,cAAc,uCAAuC,CAAC;AAEtD,cAAc,6CAA6C,CAAC;AAE5D,cAAc,iDAAiD,CAAC;AAIhE,cAAc,sDAAsD,CAAC;AAErE,cAAc,iDAAiD,CAAC;AAEhE,cAAc,uCAAuC,CAAC;AAEtD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,qCAAqC,CAAC;AAEpD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,0CAA0C,CAAC;AAEzD,cAAc,qCAAqC,CAAC;AAEpD,cAAc,4DAA4D,CAAC;AAE3E,cAAc,gDAAgD,CAAC;AAE/D,cAAc,mDAAmD,CAAC;AAElE,cAAc,mDAAmD,CAAC;AAElE,cAAc,kDAAkD,CAAC;AAEjE,cAAc,wDAAwD,CAAC;AAEvE,cAAc,oDAAoD,CAAC;AAEnE,cAAc,iDAAiD,CAAC;AAEhE,cAAc,sCAAsC,CAAC;AAErD,cAAc,uDAAuD,CAAC;AAEtE,cAAc,oCAAoC,CAAC;AAEnD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,gDAAgD,CAAC;AAE/D,cAAc,gEAAgE,CAAC;AAE/E,cAAc,kDAAkD,CAAC;AAEjE,cAAc,mDAAmD,CAAC;AAElE,cAAc,mDAAmD,CAAC;AAElE,cAAc,0CAA0C,CAAC;AAEzD,cAAc,+CAA+C,CAAC;AAE9D,cAAc,uCAAuC,CAAC;AAEtD,cAAc,uCAAuC,CAAC;AAItD,cAAc,sCAAsC,CAAC;AAErD,cAAc,kDAAkD,CAAC;AAEjE,cAAc,oDAAoD,CAAC;AAEnE,cAAc,yDAAyD,CAAC;AAExE,cAAc,yCAAyC,CAAC;AAExD,cAAc,6CAA6C,CAAC;AAE5D,cAAc,qDAAqD,CAAC;AAEpE,cAAc,2CAA2C,CAAC;AAE1D,cAAc,+CAA+C,CAAC;AAE9D,cAAc,8CAA8C,CAAC;AAE7D,cAAc,iDAAiD,CAAC;AAEhE,cAAc,oDAAoD,CAAC;AAEnE,cAAc,mDAAmD,CAAC;AAElE,cAAc,0CAA0C,CAAC;AAEzD,cAAc,6CAA6C,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -27,11 +27,15 @@ export * from './categories/helpers/transpose-3.js';
|
|
|
27
27
|
// categories/anomalies
|
|
28
28
|
export * from './categories/anomalies/advance-mean-anomaly.js';
|
|
29
29
|
export * from './categories/anomalies/anomaly-at.js';
|
|
30
|
+
export * from './categories/anomalies/asymptote-true-anomaly.js';
|
|
30
31
|
export * from './categories/anomalies/eccentric-to-true-anomaly.js';
|
|
32
|
+
export * from './categories/anomalies/hyperbolic-to-true-anomaly.js';
|
|
31
33
|
export * from './categories/anomalies/true-to-mean-anomaly.js';
|
|
34
|
+
export * from './categories/anomalies/true-to-hyperbolic-anomaly.js';
|
|
32
35
|
// categories/kepler (solvers)
|
|
33
36
|
export * from './categories/kepler/solve-kepler-bisection.js';
|
|
34
37
|
export * from './categories/kepler/solve-kepler-high-eccentricity.js';
|
|
38
|
+
export * from './categories/kepler/solve-kepler-hyperbolic.js';
|
|
35
39
|
export * from './categories/kepler/solve-kepler-newton-raphson.js';
|
|
36
40
|
export * from './categories/kepler/solve-kepler.js';
|
|
37
41
|
// categories/gravity
|
|
@@ -44,10 +48,15 @@ export * from './categories/orbits/atmospheric-drag-acceleration.js';
|
|
|
44
48
|
export * from './categories/orbits/characteristic-energy-c3.js';
|
|
45
49
|
export * from './categories/orbits/circular-speed.js';
|
|
46
50
|
export * from './categories/orbits/cw-hill-derivatives.js';
|
|
51
|
+
export * from './categories/orbits/cw-propagate.js';
|
|
52
|
+
export * from './categories/orbits/cw-state-transition.js';
|
|
47
53
|
export * from './categories/orbits/elements-to-state.js';
|
|
48
54
|
export * from './categories/orbits/escape-speed.js';
|
|
49
55
|
export * from './categories/orbits/flight-path-angle-from-true-anomaly.js';
|
|
56
|
+
export * from './categories/orbits/hyperbolic-eccentricity.js';
|
|
50
57
|
export * from './categories/orbits/hyperbolic-periapsis-speed.js';
|
|
58
|
+
export * from './categories/orbits/hyperbolic-semi-major-axis.js';
|
|
59
|
+
export * from './categories/orbits/hyperbolic-time-of-flight.js';
|
|
51
60
|
export * from './categories/orbits/inclination-from-launch-azimuth.js';
|
|
52
61
|
export * from './categories/orbits/j2-argument-of-perigee-rate.js';
|
|
53
62
|
export * from './categories/orbits/j2-nodal-precession-rate.js';
|
|
@@ -62,16 +71,19 @@ export * from './categories/orbits/specific-mechanical-energy.js';
|
|
|
62
71
|
export * from './categories/orbits/sphere-of-influence-radius.js';
|
|
63
72
|
export * from './categories/orbits/state-to-elements.js';
|
|
64
73
|
export * from './categories/orbits/surface-rotation-speed.js';
|
|
74
|
+
export * from './categories/orbits/synodic-period.js';
|
|
65
75
|
export * from './categories/orbits/vis-viva-speed.js';
|
|
66
76
|
// categories/manoeuvres
|
|
67
77
|
export * from './categories/manoeuvres/burn-time.js';
|
|
68
78
|
export * from './categories/manoeuvres/combine-burns-delta-v.js';
|
|
79
|
+
export * from './categories/manoeuvres/cw-two-impulse-transfer.js';
|
|
69
80
|
export * from './categories/manoeuvres/gravity-assist-turning-angle.js';
|
|
70
81
|
export * from './categories/manoeuvres/gravity-loss.js';
|
|
71
82
|
export * from './categories/manoeuvres/hohmann-transfer.js';
|
|
72
83
|
export * from './categories/manoeuvres/initial-mass-for-delta-v.js';
|
|
73
84
|
export * from './categories/manoeuvres/mass-flow-rate.js';
|
|
74
85
|
export * from './categories/manoeuvres/oberth-energy-gain.js';
|
|
86
|
+
export * from './categories/manoeuvres/phasing-wait-time.js';
|
|
75
87
|
export * from './categories/manoeuvres/plane-change-delta-v.js';
|
|
76
88
|
export * from './categories/manoeuvres/rocket-delta-v-from-isp.js';
|
|
77
89
|
export * from './categories/manoeuvres/rocket-delta-v-from-ve.js';
|
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,qCAAqC,CAAC;AAEpD,cAAc,kCAAkC,CAAC;AAEjD,yBAAyB;AAEzB,cAAc,8DAA8D,CAAC;AAE7E,cAAc,kEAAkE,CAAC;AAEjF,cAAc,wDAAwD,CAAC;AAEvE,cAAc,8DAA8D,CAAC;AAE7E,cAAc,qDAAqD,CAAC;AAEpE,cAAc,4DAA4D,CAAC;AAE3E,qBAAqB;AAErB,cAAc,wCAAwC,CAAC;AAEvD,cAAc,+CAA+C,CAAC;AAE9D,cAAc,+BAA+B,CAAC;AAE9C,cAAc,kCAAkC,CAAC;AAEjD,cAAc,8BAA8B,CAAC;AAE7C,cAAc,iDAAiD,CAAC;AAEhE,cAAc,iCAAiC,CAAC;AAEhD,cAAc,+BAA+B,CAAC;AAE9C,cAAc,+BAA+B,CAAC;AAE9C,cAAc,qCAAqC,CAAC;AAEpD,uBAAuB;AAEvB,cAAc,gDAAgD,CAAC;AAE/D,cAAc,sCAAsC,CAAC;AAErD,cAAc,qDAAqD,CAAC;AAEpE,cAAc,gDAAgD,CAAC;AAE/D,8BAA8B;AAE9B,cAAc,+CAA+C,CAAC;AAE9D,cAAc,uDAAuD,CAAC;AAEtE,cAAc,oDAAoD,CAAC;AAEnE,cAAc,qCAAqC,CAAC;AAEpD,qBAAqB;AAErB,cAAc,8CAA8C,CAAC;AAE7D,cAAc,uCAAuC,CAAC;AAEtD,cAAc,6CAA6C,CAAC;AAE5D,cAAc,iDAAiD,CAAC;AAEhE,oBAAoB;AAEpB,cAAc,sDAAsD,CAAC;AAErE,cAAc,iDAAiD,CAAC;AAEhE,cAAc,uCAAuC,CAAC;AAEtD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,0CAA0C,CAAC;AAEzD,cAAc,qCAAqC,CAAC;AAEpD,cAAc,4DAA4D,CAAC;AAE3E,cAAc,mDAAmD,CAAC;AAElE,cAAc,wDAAwD,CAAC;AAEvE,cAAc,oDAAoD,CAAC;AAEnE,cAAc,iDAAiD,CAAC;AAEhE,cAAc,sCAAsC,CAAC;AAErD,cAAc,uDAAuD,CAAC;AAEtE,cAAc,oCAAoC,CAAC;AAEnD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,gDAAgD,CAAC;AAE/D,cAAc,gEAAgE,CAAC;AAE/E,cAAc,kDAAkD,CAAC;AAEjE,cAAc,mDAAmD,CAAC;AAElE,cAAc,mDAAmD,CAAC;AAElE,cAAc,0CAA0C,CAAC;AAEzD,cAAc,+CAA+C,CAAC;AAE9D,cAAc,uCAAuC,CAAC;AAEtD,wBAAwB;AAExB,cAAc,sCAAsC,CAAC;AAErD,cAAc,kDAAkD,CAAC;AAEjE,cAAc,yDAAyD,CAAC;AAExE,cAAc,yCAAyC,CAAC;AAExD,cAAc,6CAA6C,CAAC;AAE5D,cAAc,qDAAqD,CAAC;AAEpE,cAAc,2CAA2C,CAAC;AAE1D,cAAc,+CAA+C,CAAC;AAE9D,cAAc,iDAAiD,CAAC;AAEhE,cAAc,oDAAoD,CAAC;AAEnE,cAAc,mDAAmD,CAAC;AAElE,cAAc,0CAA0C,CAAC;AAEzD,cAAc,6CAA6C,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,mBAAmB;AACnB,cAAc,qCAAqC,CAAC;AAEpD,cAAc,kCAAkC,CAAC;AAEjD,yBAAyB;AAEzB,cAAc,8DAA8D,CAAC;AAE7E,cAAc,kEAAkE,CAAC;AAEjF,cAAc,wDAAwD,CAAC;AAEvE,cAAc,8DAA8D,CAAC;AAE7E,cAAc,qDAAqD,CAAC;AAEpE,cAAc,4DAA4D,CAAC;AAE3E,qBAAqB;AAErB,cAAc,wCAAwC,CAAC;AAEvD,cAAc,+CAA+C,CAAC;AAE9D,cAAc,+BAA+B,CAAC;AAE9C,cAAc,kCAAkC,CAAC;AAEjD,cAAc,8BAA8B,CAAC;AAE7C,cAAc,iDAAiD,CAAC;AAEhE,cAAc,iCAAiC,CAAC;AAEhD,cAAc,+BAA+B,CAAC;AAE9C,cAAc,+BAA+B,CAAC;AAE9C,cAAc,qCAAqC,CAAC;AAEpD,uBAAuB;AAEvB,cAAc,gDAAgD,CAAC;AAE/D,cAAc,sCAAsC,CAAC;AAErD,cAAc,kDAAkD,CAAC;AAEjE,cAAc,qDAAqD,CAAC;AAEpE,cAAc,sDAAsD,CAAC;AAErE,cAAc,gDAAgD,CAAC;AAE/D,cAAc,sDAAsD,CAAC;AAErE,8BAA8B;AAE9B,cAAc,+CAA+C,CAAC;AAE9D,cAAc,uDAAuD,CAAC;AAEtE,cAAc,gDAAgD,CAAC;AAE/D,cAAc,oDAAoD,CAAC;AAEnE,cAAc,qCAAqC,CAAC;AAEpD,qBAAqB;AAErB,cAAc,8CAA8C,CAAC;AAE7D,cAAc,uCAAuC,CAAC;AAEtD,cAAc,6CAA6C,CAAC;AAE5D,cAAc,iDAAiD,CAAC;AAEhE,oBAAoB;AAEpB,cAAc,sDAAsD,CAAC;AAErE,cAAc,iDAAiD,CAAC;AAEhE,cAAc,uCAAuC,CAAC;AAEtD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,qCAAqC,CAAC;AAEpD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,0CAA0C,CAAC;AAEzD,cAAc,qCAAqC,CAAC;AAEpD,cAAc,4DAA4D,CAAC;AAE3E,cAAc,gDAAgD,CAAC;AAE/D,cAAc,mDAAmD,CAAC;AAElE,cAAc,mDAAmD,CAAC;AAElE,cAAc,kDAAkD,CAAC;AAEjE,cAAc,wDAAwD,CAAC;AAEvE,cAAc,oDAAoD,CAAC;AAEnE,cAAc,iDAAiD,CAAC;AAEhE,cAAc,sCAAsC,CAAC;AAErD,cAAc,uDAAuD,CAAC;AAEtE,cAAc,oCAAoC,CAAC;AAEnD,cAAc,4CAA4C,CAAC;AAE3D,cAAc,gDAAgD,CAAC;AAE/D,cAAc,gEAAgE,CAAC;AAE/E,cAAc,kDAAkD,CAAC;AAEjE,cAAc,mDAAmD,CAAC;AAElE,cAAc,mDAAmD,CAAC;AAElE,cAAc,0CAA0C,CAAC;AAEzD,cAAc,+CAA+C,CAAC;AAE9D,cAAc,uCAAuC,CAAC;AAEtD,cAAc,uCAAuC,CAAC;AAEtD,wBAAwB;AAExB,cAAc,sCAAsC,CAAC;AAErD,cAAc,kDAAkD,CAAC;AAEjE,cAAc,oDAAoD,CAAC;AAEnE,cAAc,yDAAyD,CAAC;AAExE,cAAc,yCAAyC,CAAC;AAExD,cAAc,6CAA6C,CAAC;AAE5D,cAAc,qDAAqD,CAAC;AAEpE,cAAc,2CAA2C,CAAC;AAE1D,cAAc,+CAA+C,CAAC;AAE9D,cAAc,8CAA8C,CAAC;AAE7D,cAAc,iDAAiD,CAAC;AAEhE,cAAc,oDAAoD,CAAC;AAEnE,cAAc,mDAAmD,CAAC;AAElE,cAAc,0CAA0C,CAAC;AAEzD,cAAc,6CAA6C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@interstellar-tools/equations",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.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",
|