Skip to content

Documentation / @interstellar-tools/equations / combineBurnsDeltaV

Function: combineBurnsDeltaV() ​

ts
function combineBurnsDeltaV(
  v1: number,
  v2: number,
  deltaTheta: Radians
): number;

Defined in: manoeuvres/combine-burns-delta-v.ts:71

Combine non-collinear burns (vector law / law of cosines for velocities).

Definition

Δv=v12+v22−2v1v2cos⁡Δθ

where:

  • (v1) and (v2) are the magnitudes of two impulsive burns, and
  • (Δθ) is the angle between their directions (radians).

Units

  • Inputs: (v1,v2) in m/s, (Δθ) in radians.
  • Output: (Δv) in m/s.

Domain

  • (v1≥0, v2≥0, Δθ∈[0,π]).

Notes

  • Special cases:
    • (Δθ=0) (same direction) → (Δv=|v1−v2|).
    • (Δθ=π) (opposite) → (Δv=v1+v2).
  • This computes the single equivalent impulse from two burns applied with mutual angle (Δθ) (i.e., magnitude of the vector sum).

Parameters ​

ParameterTypeDescription
v1numberMagnitude of burn 1 (m/s). Must be finite and ≥ 0.
v2numberMagnitude of burn 2 (m/s). Must be finite and ≥ 0.
deltaThetaRadiansAngle between burn directions (radians), in [0, π].

Returns ​

number

Equivalent single (Δv) (m/s).

Throws ​

If any input is not a number.

Throws ​

If inputs are non-finite or out of domain.

Example ​

ts
import { combineBurnsDeltaV } from '@interstellar-tools/equations';
import type { Radians } from '@interstellar-tools/types';

// Helper: degrees → branded radians
const toRadians = (deg: number): Radians => ((deg * Math.PI) / 180) as Radians;

// Two burns (magnitudes in m/s)
const v1 = 500; // first impulse
const v2 = 300; // second impulse

// 1) Same direction (Δθ = 0°) → Δv = |v1 - v2|
const dv_same = combineBurnsDeltaV(v1, v2, toRadians(0));
console.log('Δθ = 0°   → Δv =', dv_same.toFixed(3), 'm/s');

// 2) Opposite directions (Δθ = 180°) → Δv = v1 + v2
const dv_opp = combineBurnsDeltaV(v1, v2, toRadians(180));
console.log('Δθ = 180° → Δv =', dv_opp.toFixed(3), 'm/s');

// 3) General non-collinear case (e.g., Δθ = 60°)
const dv_60 = combineBurnsDeltaV(v1, v2, toRadians(60));
console.log('Δθ = 60°  → Δv =', dv_60.toFixed(3), 'm/s');

// 4) Another example (Δθ = 25°)
const dv_25 = combineBurnsDeltaV(1200, 800, toRadians(25));
console.log('Δθ = 25°  → Δv =', dv_25.toFixed(3), 'm/s');