@interstellar-tools/equations 0.1.1 → 0.2.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 (62) hide show
  1. package/README.md +0 -8
  2. package/dist/__tests__/gravitational-acceleration-on1-by2.int.spec.d.ts +2 -0
  3. package/dist/__tests__/gravitational-acceleration-on1-by2.int.spec.d.ts.map +1 -0
  4. package/dist/__tests__/gravitational-acceleration-on1-by2.int.spec.js +86 -0
  5. package/dist/__tests__/gravitational-acceleration-on1-by2.int.spec.js.map +1 -0
  6. package/dist/__tests__/gravitational-force-on1-by2.int.spec.d.ts +2 -0
  7. package/dist/__tests__/gravitational-force-on1-by2.int.spec.d.ts.map +1 -0
  8. package/dist/__tests__/gravitational-force-on1-by2.int.spec.js +106 -0
  9. package/dist/__tests__/gravitational-force-on1-by2.int.spec.js.map +1 -0
  10. package/dist/__tests__/gravitational-force.spec.d.ts +2 -0
  11. package/dist/__tests__/gravitational-force.spec.d.ts.map +1 -0
  12. package/dist/__tests__/gravitational-force.spec.js +105 -0
  13. package/dist/__tests__/gravitational-force.spec.js.map +1 -0
  14. package/dist/__tests__/gravitational-parameters.spec.d.ts +2 -0
  15. package/dist/__tests__/gravitational-parameters.spec.d.ts.map +1 -0
  16. package/dist/__tests__/gravitational-parameters.spec.js +75 -0
  17. package/dist/__tests__/gravitational-parameters.spec.js.map +1 -0
  18. package/dist/__tests__/helpers/index.d.ts +8 -0
  19. package/dist/__tests__/helpers/index.d.ts.map +1 -0
  20. package/dist/__tests__/helpers/index.js +25 -0
  21. package/dist/__tests__/helpers/index.js.map +1 -0
  22. package/dist/__tests__/kepler-period.spec.d.ts +2 -0
  23. package/dist/__tests__/kepler-period.spec.d.ts.map +1 -0
  24. package/dist/__tests__/kepler-period.spec.js +72 -0
  25. package/dist/__tests__/kepler-period.spec.js.map +1 -0
  26. package/dist/__tests__/specific-mechanical-energy.spec.d.ts +2 -0
  27. package/dist/__tests__/specific-mechanical-energy.spec.d.ts.map +1 -0
  28. package/dist/__tests__/specific-mechanical-energy.spec.js +81 -0
  29. package/dist/__tests__/specific-mechanical-energy.spec.js.map +1 -0
  30. package/dist/__tests__/vis-viva-speed.spec.d.ts +2 -0
  31. package/dist/__tests__/vis-viva-speed.spec.d.ts.map +1 -0
  32. package/dist/__tests__/vis-viva-speed.spec.js +80 -0
  33. package/dist/__tests__/vis-viva-speed.spec.js.map +1 -0
  34. package/dist/compute-mean-anomaly.d.ts +1 -1
  35. package/dist/compute-mean-anomaly.js +1 -1
  36. package/dist/eccentric-to-true-anomaly.d.ts +1 -1
  37. package/dist/eccentric-to-true-anomaly.js +1 -1
  38. package/dist/gravitational-parameter.d.ts +49 -0
  39. package/dist/gravitational-parameter.d.ts.map +1 -0
  40. package/dist/gravitational-parameter.js +61 -0
  41. package/dist/gravitational-parameter.js.map +1 -0
  42. package/dist/index.d.ts +5 -0
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +5 -0
  45. package/dist/index.js.map +1 -1
  46. package/dist/kepler-period.d.ts +45 -0
  47. package/dist/kepler-period.d.ts.map +1 -0
  48. package/dist/kepler-period.js +54 -0
  49. package/dist/kepler-period.js.map +1 -0
  50. package/dist/law-of-gravitation.d.ts +243 -0
  51. package/dist/law-of-gravitation.d.ts.map +1 -0
  52. package/dist/law-of-gravitation.js +284 -0
  53. package/dist/law-of-gravitation.js.map +1 -0
  54. package/dist/specific-mechanical-energy.d.ts +49 -0
  55. package/dist/specific-mechanical-energy.d.ts.map +1 -0
  56. package/dist/specific-mechanical-energy.js +57 -0
  57. package/dist/specific-mechanical-energy.js.map +1 -0
  58. package/dist/vis-viva-speed.d.ts +42 -0
  59. package/dist/vis-viva-speed.d.ts.map +1 -0
  60. package/dist/vis-viva-speed.js +70 -0
  61. package/dist/vis-viva-speed.js.map +1 -0
  62. package/package.json +76 -4
@@ -0,0 +1,42 @@
1
+ /**
2
+ * **Vis-viva (orbital speed)** - compute speed magnitude ($ v $) from ($ r $), ($ a $), and ($ \mu $).
3
+ *
4
+ * **Definition**
5
+ *
6
+ * $$
7
+ * v = \sqrt{\mu\!\left(\frac{2}{r}-\frac{1}{a}\right)}
8
+ * $$
9
+ *
10
+ * - ($ r $): current distance from the focus (m)
11
+ * - ($ a $): semi-major axis (m). Elliptic ($ a>0 $), parabolic ($ a\to\infty $), hyperbolic ($ a<0 $)
12
+ * - ($ \mu $): gravitational parameter (m³/s²)
13
+ *
14
+ * **Units**
15
+ * - Inputs: ($ r $) in **m**, ($ a $) in **m**, ($ \mu $) in **m³/s²**.
16
+ * - Output: ($ v $) in **m/s**.
17
+ *
18
+ * ::: tip
19
+ *
20
+ * - For circular orbits (($ a=r $)): ($ v=\sqrt{\mu/r} $).
21
+ * - For parabolic trajectories, pass `a = Infinity` (so ($ 1/a=0 $)): ($ v=\sqrt{2\mu/r} $).
22
+ *
23
+ * :::
24
+ *
25
+ * @param {number} r Radius ($ r $) (m), distance to the attracting body.
26
+ * @param {number} a Semi-major axis ($ a $) (m). Use `Infinity` for parabolic, negative for hyperbolic.
27
+ * @param {number} mu Gravitational parameter ($ \mu $) (m³/s²).
28
+ * @returns {number} Speed magnitude ($ v $) (m/s).
29
+ * @throws {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error | Error} If inputs are non-finite / out of domain, or the radicand becomes negative.
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * // LEO (~400 km): a ≈ r for near-circular
34
+ * const muEarth = 3.986004418e14; // m^3/s^2
35
+ * const r = 6378e3 + 400e3; // m
36
+ * const a = r; // circular
37
+ * const v = visVivaSpeed(r, a, muEarth); // ≈ 7670 m/s
38
+ * ```
39
+ * @category Dynamics
40
+ */
41
+ export declare const visVivaSpeed: (r: number, a: number, mu: number) => number;
42
+ //# sourceMappingURL=vis-viva-speed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vis-viva-speed.d.ts","sourceRoot":"","sources":["../src/vis-viva-speed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,YAAY,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,IAAI,MAAM,KAAG,MAsC/D,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * **Vis-viva (orbital speed)** - compute speed magnitude ($ v $) from ($ r $), ($ a $), and ($ \mu $).
3
+ *
4
+ * **Definition**
5
+ *
6
+ * $$
7
+ * v = \sqrt{\mu\!\left(\frac{2}{r}-\frac{1}{a}\right)}
8
+ * $$
9
+ *
10
+ * - ($ r $): current distance from the focus (m)
11
+ * - ($ a $): semi-major axis (m). Elliptic ($ a>0 $), parabolic ($ a\to\infty $), hyperbolic ($ a<0 $)
12
+ * - ($ \mu $): gravitational parameter (m³/s²)
13
+ *
14
+ * **Units**
15
+ * - Inputs: ($ r $) in **m**, ($ a $) in **m**, ($ \mu $) in **m³/s²**.
16
+ * - Output: ($ v $) in **m/s**.
17
+ *
18
+ * ::: tip
19
+ *
20
+ * - For circular orbits (($ a=r $)): ($ v=\sqrt{\mu/r} $).
21
+ * - For parabolic trajectories, pass `a = Infinity` (so ($ 1/a=0 $)): ($ v=\sqrt{2\mu/r} $).
22
+ *
23
+ * :::
24
+ *
25
+ * @param {number} r Radius ($ r $) (m), distance to the attracting body.
26
+ * @param {number} a Semi-major axis ($ a $) (m). Use `Infinity` for parabolic, negative for hyperbolic.
27
+ * @param {number} mu Gravitational parameter ($ \mu $) (m³/s²).
28
+ * @returns {number} Speed magnitude ($ v $) (m/s).
29
+ * @throws {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error | Error} If inputs are non-finite / out of domain, or the radicand becomes negative.
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * // LEO (~400 km): a ≈ r for near-circular
34
+ * const muEarth = 3.986004418e14; // m^3/s^2
35
+ * const r = 6378e3 + 400e3; // m
36
+ * const a = r; // circular
37
+ * const v = visVivaSpeed(r, a, muEarth); // ≈ 7670 m/s
38
+ * ```
39
+ * @category Dynamics
40
+ */
41
+ export const visVivaSpeed = (r, a, mu) => {
42
+ if (!Number.isFinite(r) || r <= 0) {
43
+ throw new Error('r must be a finite, positive number (m).');
44
+ }
45
+ if (!Number.isFinite(mu) || mu < 0) {
46
+ throw new Error('mu must be a finite, non-negative number (m^3/s^2).');
47
+ }
48
+ if (!Number.isFinite(a)) {
49
+ // Allow Infinity (parabolic); disallow NaN/-Infinity for clarity
50
+ if (a === Infinity) {
51
+ // v = sqrt(2mu/r)
52
+ return Math.sqrt((2 * mu) / r);
53
+ }
54
+ throw new Error('a must be finite (or +Infinity for parabolic) in meters.');
55
+ }
56
+ if (a === 0) {
57
+ throw new Error('a must be non-zero (m). Use a→∞ for parabolic.');
58
+ }
59
+ const invA = 1 / a; // works for a>0 (elliptic) and a<0 (hyperbolic)
60
+ const radicand = mu * (2 / r - invA);
61
+ // Numerical guard: tiny negative due to FP → clamp; otherwise throw
62
+ if (radicand < 0) {
63
+ const tol = Math.abs((1e-14 * mu) / r);
64
+ if (radicand > -tol)
65
+ return 0; // effectively zero speed
66
+ throw new Error(`Invalid state: μ*(2/r - 1/a) < 0 (μ=${mu}, r=${r}, a=${a}).`);
67
+ }
68
+ return Math.sqrt(radicand);
69
+ };
70
+ //# sourceMappingURL=vis-viva-speed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vis-viva-speed.js","sourceRoot":"","sources":["../src/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,qDAAqD,CAAC,CAAC;IACzE,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/package.json CHANGED
@@ -1,9 +1,81 @@
1
1
  {
2
2
  "name": "@interstellar-tools/equations",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "equations",
5
5
  "keywords": [
6
- "equations"
6
+ "interstellar",
7
+ "tools",
8
+ "near",
9
+ "earth",
10
+ "objects",
11
+ "planets",
12
+ "orbit",
13
+ "rotation",
14
+ "stars",
15
+ "star",
16
+ "sun",
17
+ "planet",
18
+ "earth",
19
+ "moon",
20
+ "mercury",
21
+ "venus",
22
+ "mars",
23
+ "tellus",
24
+ "gaia",
25
+ "jupiter",
26
+ "saturn",
27
+ "neptune",
28
+ "pluto",
29
+ "dwarf",
30
+ "planets",
31
+ "trajectory",
32
+ "asteroids",
33
+ "comets",
34
+ "collision",
35
+ "satellite",
36
+ "satellites",
37
+ "sky map",
38
+ "nasa",
39
+ "jpl",
40
+ "esa",
41
+ "astrodynamics",
42
+ "orbital-mechanics",
43
+ "celestial-mechanics",
44
+ "two-body",
45
+ "n-body",
46
+ "gravity",
47
+ "newtonian-gravity",
48
+ "newtons-law-of-gravitation",
49
+ "gravitational-constant",
50
+ "G_SI",
51
+ "standard-gravitational-parameter",
52
+ "gravitational-parameter",
53
+ "mu",
54
+ "gravitational-force",
55
+ "gravitational-acceleration",
56
+ "specific-mechanical-energy",
57
+ "vis-viva",
58
+ "kepler-period",
59
+ "keplers-third-law",
60
+ "orbital-speed",
61
+ "trajectory",
62
+ "orbit",
63
+ "satellite",
64
+ "simulation",
65
+ "numerics",
66
+ "si-units",
67
+ "vector3",
68
+ "vec3",
69
+ "vector-math",
70
+ "typescript",
71
+ "javascript",
72
+ "interstellar-tools",
73
+ "spaceflight",
74
+ "space-dynamics",
75
+ "heliocentric",
76
+ "leo",
77
+ "geo",
78
+ "earth-sun"
7
79
  ],
8
80
  "homepage": "https://phun-ky.net/projects/interstellar-tools",
9
81
  "bugs": {
@@ -38,8 +110,8 @@
38
110
  },
39
111
  "dependencies": {
40
112
  "@interstellar-tools/temporal": "^0.1.0",
41
- "@interstellar-tools/types": "^0.1.0",
42
- "@interstellar-tools/constants": "^0.1.0"
113
+ "@interstellar-tools/types": "^0.1.2",
114
+ "@interstellar-tools/constants": "^0.1.2"
43
115
  },
44
116
  "devDependencies": {
45
117
  "@types/node": "^24.0.3",