@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.
- package/README.md +0 -8
- package/dist/__tests__/gravitational-acceleration-on1-by2.int.spec.d.ts +2 -0
- package/dist/__tests__/gravitational-acceleration-on1-by2.int.spec.d.ts.map +1 -0
- package/dist/__tests__/gravitational-acceleration-on1-by2.int.spec.js +86 -0
- package/dist/__tests__/gravitational-acceleration-on1-by2.int.spec.js.map +1 -0
- package/dist/__tests__/gravitational-force-on1-by2.int.spec.d.ts +2 -0
- package/dist/__tests__/gravitational-force-on1-by2.int.spec.d.ts.map +1 -0
- package/dist/__tests__/gravitational-force-on1-by2.int.spec.js +106 -0
- package/dist/__tests__/gravitational-force-on1-by2.int.spec.js.map +1 -0
- package/dist/__tests__/gravitational-force.spec.d.ts +2 -0
- package/dist/__tests__/gravitational-force.spec.d.ts.map +1 -0
- package/dist/__tests__/gravitational-force.spec.js +105 -0
- package/dist/__tests__/gravitational-force.spec.js.map +1 -0
- package/dist/__tests__/gravitational-parameters.spec.d.ts +2 -0
- package/dist/__tests__/gravitational-parameters.spec.d.ts.map +1 -0
- package/dist/__tests__/gravitational-parameters.spec.js +75 -0
- package/dist/__tests__/gravitational-parameters.spec.js.map +1 -0
- package/dist/__tests__/helpers/index.d.ts +8 -0
- package/dist/__tests__/helpers/index.d.ts.map +1 -0
- package/dist/__tests__/helpers/index.js +25 -0
- package/dist/__tests__/helpers/index.js.map +1 -0
- package/dist/__tests__/kepler-period.spec.d.ts +2 -0
- package/dist/__tests__/kepler-period.spec.d.ts.map +1 -0
- package/dist/__tests__/kepler-period.spec.js +72 -0
- package/dist/__tests__/kepler-period.spec.js.map +1 -0
- package/dist/__tests__/specific-mechanical-energy.spec.d.ts +2 -0
- package/dist/__tests__/specific-mechanical-energy.spec.d.ts.map +1 -0
- package/dist/__tests__/specific-mechanical-energy.spec.js +81 -0
- package/dist/__tests__/specific-mechanical-energy.spec.js.map +1 -0
- package/dist/__tests__/vis-viva-speed.spec.d.ts +2 -0
- package/dist/__tests__/vis-viva-speed.spec.d.ts.map +1 -0
- package/dist/__tests__/vis-viva-speed.spec.js +80 -0
- package/dist/__tests__/vis-viva-speed.spec.js.map +1 -0
- package/dist/compute-mean-anomaly.d.ts +1 -1
- package/dist/compute-mean-anomaly.js +1 -1
- package/dist/eccentric-to-true-anomaly.d.ts +1 -1
- package/dist/eccentric-to-true-anomaly.js +1 -1
- package/dist/gravitational-parameter.d.ts +49 -0
- package/dist/gravitational-parameter.d.ts.map +1 -0
- package/dist/gravitational-parameter.js +61 -0
- package/dist/gravitational-parameter.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/kepler-period.d.ts +45 -0
- package/dist/kepler-period.d.ts.map +1 -0
- package/dist/kepler-period.js +54 -0
- package/dist/kepler-period.js.map +1 -0
- package/dist/law-of-gravitation.d.ts +243 -0
- package/dist/law-of-gravitation.d.ts.map +1 -0
- package/dist/law-of-gravitation.js +284 -0
- package/dist/law-of-gravitation.js.map +1 -0
- package/dist/specific-mechanical-energy.d.ts +49 -0
- package/dist/specific-mechanical-energy.d.ts.map +1 -0
- package/dist/specific-mechanical-energy.js +57 -0
- package/dist/specific-mechanical-energy.js.map +1 -0
- package/dist/vis-viva-speed.d.ts +42 -0
- package/dist/vis-viva-speed.d.ts.map +1 -0
- package/dist/vis-viva-speed.js +70 -0
- package/dist/vis-viva-speed.js.map +1 -0
- 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.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "equations",
|
|
5
5
|
"keywords": [
|
|
6
|
-
"
|
|
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.
|
|
42
|
-
"@interstellar-tools/constants": "^0.1.
|
|
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",
|