Maneuver Modelling
Maneuver nodes capture the intent of each burn and keep execution consistent across the worker, mission planner, and analytics tools.
Node Representation
- Immutable
ManeuverNodeentities store execution time, inertial delta-v, optional TNW coordinates, and metadata. ManeuverServiceowns CRUD operations, orbit cache invalidation, and execution history per spacecraft.- Nodes authored in TNW (
delta-v_R,delta-v_T,delta-v_N) pass throughCoordinateTransforms.transformTNWToInertialWithPropagation. The rotation matrix is built from spacecraft position/velocity at the planned execution epoch:delta_v_ECI = T_TNW->ECI * delta_v_TNW
Burn Execution
- During propagation the service evaluates
shouldExecuteAtTimeagainst the integrator step. Matching nodes sum directly into spacecraft velocity for impulsive burns. - Finite burns integrate through
ThrustIntegrator, which slices each burn, updates mass flow, and accumulates delta-v:m(t) = m0 - m_dot * t m_dot = T / (Isp * g0) delta_v = integral(T / m(t) dt) = Isp * g0 * ln(m0 / m1) PropulsionSystemServicevalidates thrust,I_sp, and dry-mass constraints. If propellant is insufficient, the burn truncates and surfaces a warning in the mission planner.
Planning Tools
ManeuverPlannerruns Lambert solves over departure/time-of-flight grids to build porkchop plots. Output includes departure and arrival delta-v costs for each cell.- Mission planner previews use the same node infrastructure, so approved plans flow directly into the worker without reformatting.
- Execution results (velocity before/after, delta-v applied) stream into orbit caches for timeline, analytics, and replay tooling.
When extending manoeuvre logic, prefer adding new burn modes or planners that emit standard nodes instead of bypassing the service; the rest of the simulation ecosystem assumes nodes remain immutable once scheduled.