@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.
Files changed (53) hide show
  1. package/dist/categories/anomalies/asymptote-true-anomaly.d.ts +50 -0
  2. package/dist/categories/anomalies/asymptote-true-anomaly.d.ts.map +1 -0
  3. package/dist/categories/anomalies/asymptote-true-anomaly.js +55 -0
  4. package/dist/categories/anomalies/asymptote-true-anomaly.js.map +1 -0
  5. package/dist/categories/anomalies/hyperbolic-to-true-anomaly.d.ts +38 -0
  6. package/dist/categories/anomalies/hyperbolic-to-true-anomaly.d.ts.map +1 -0
  7. package/dist/categories/anomalies/hyperbolic-to-true-anomaly.js +49 -0
  8. package/dist/categories/anomalies/hyperbolic-to-true-anomaly.js.map +1 -0
  9. package/dist/categories/anomalies/true-to-hyperbolic-anomaly.d.ts +40 -0
  10. package/dist/categories/anomalies/true-to-hyperbolic-anomaly.d.ts.map +1 -0
  11. package/dist/categories/anomalies/true-to-hyperbolic-anomaly.js +54 -0
  12. package/dist/categories/anomalies/true-to-hyperbolic-anomaly.js.map +1 -0
  13. package/dist/categories/kepler/solve-kepler-hyperbolic.d.ts +49 -0
  14. package/dist/categories/kepler/solve-kepler-hyperbolic.d.ts.map +1 -0
  15. package/dist/categories/kepler/solve-kepler-hyperbolic.js +90 -0
  16. package/dist/categories/kepler/solve-kepler-hyperbolic.js.map +1 -0
  17. package/dist/categories/manoeuvres/cw-two-impulse-transfer.d.ts +58 -0
  18. package/dist/categories/manoeuvres/cw-two-impulse-transfer.d.ts.map +1 -0
  19. package/dist/categories/manoeuvres/cw-two-impulse-transfer.js +104 -0
  20. package/dist/categories/manoeuvres/cw-two-impulse-transfer.js.map +1 -0
  21. package/dist/categories/manoeuvres/phasing-wait-time.d.ts +55 -0
  22. package/dist/categories/manoeuvres/phasing-wait-time.d.ts.map +1 -0
  23. package/dist/categories/manoeuvres/phasing-wait-time.js +77 -0
  24. package/dist/categories/manoeuvres/phasing-wait-time.js.map +1 -0
  25. package/dist/categories/orbits/cw-propagate.d.ts +48 -0
  26. package/dist/categories/orbits/cw-propagate.d.ts.map +1 -0
  27. package/dist/categories/orbits/cw-propagate.js +68 -0
  28. package/dist/categories/orbits/cw-propagate.js.map +1 -0
  29. package/dist/categories/orbits/cw-state-transition.d.ts +65 -0
  30. package/dist/categories/orbits/cw-state-transition.d.ts.map +1 -0
  31. package/dist/categories/orbits/cw-state-transition.js +83 -0
  32. package/dist/categories/orbits/cw-state-transition.js.map +1 -0
  33. package/dist/categories/orbits/hyperbolic-eccentricity.d.ts +56 -0
  34. package/dist/categories/orbits/hyperbolic-eccentricity.d.ts.map +1 -0
  35. package/dist/categories/orbits/hyperbolic-eccentricity.js +72 -0
  36. package/dist/categories/orbits/hyperbolic-eccentricity.js.map +1 -0
  37. package/dist/categories/orbits/hyperbolic-semi-major-axis.d.ts +53 -0
  38. package/dist/categories/orbits/hyperbolic-semi-major-axis.d.ts.map +1 -0
  39. package/dist/categories/orbits/hyperbolic-semi-major-axis.js +66 -0
  40. package/dist/categories/orbits/hyperbolic-semi-major-axis.js.map +1 -0
  41. package/dist/categories/orbits/hyperbolic-time-of-flight.d.ts +64 -0
  42. package/dist/categories/orbits/hyperbolic-time-of-flight.d.ts.map +1 -0
  43. package/dist/categories/orbits/hyperbolic-time-of-flight.js +86 -0
  44. package/dist/categories/orbits/hyperbolic-time-of-flight.js.map +1 -0
  45. package/dist/categories/orbits/synodic-period.d.ts +59 -0
  46. package/dist/categories/orbits/synodic-period.d.ts.map +1 -0
  47. package/dist/categories/orbits/synodic-period.js +72 -0
  48. package/dist/categories/orbits/synodic-period.js.map +1 -0
  49. package/dist/index.d.ts +12 -0
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +12 -0
  52. package/dist/index.js.map +1 -1
  53. 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';
@@ -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;AAI/D,cAAc,+CAA+C,CAAC;AAE9D,cAAc,uDAAuD,CAAC;AAEtE,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,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;AAItD,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.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.1.0",
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",