The single source of truth for every physical constant and unit used throughout the Mars mission simulator.
Orbital mechanics relies on well-defined physical constants. By storing these values in a single shared location, every calculation, from orbital velocity to Hohmann transfer trajectories, uses consistent and scientifically accurate data.
A step-by-step Earth-to-Mars transfer, built from the shared constants. Adjust the orbit radii to see how the semi-major axis, transfer time, and Delta-v respond.
The transfer depends on the Sun's gravity and the two orbit radii. The Sun's gravitational parameter is fixed; the radii are adjustable so you can experiment with different destinations.
Δv needed, time and velocities are set by the orbits. Available Δv, margin and propellant mass depend on the spacecraft.
Total Delta-v is the fuel metric. The chart plots every faster route to the same Mars orbit, and each one costs more Delta-v. The Hohmann transfer between these two radii sits right at the minimum.
Drag the radii above to watch the curve and its minimum shift.
A Hohmann transferis the most fuel-efficient two-impulse manoeuvre between two circular orbits. The spacecraft rides an elliptical orbit that touches Earth's orbit at perihelion and Mars's orbit at aphelion.
Just two burns are needed: one to leave the inner orbit, and one to settle into the outer orbit on arrival.
Each calculation is shown in three steps: the general formula, your current values substituted in, and the final answer. They update live as you change the inputs above. Tap a card to collapse it.
The spacecraft has more available delta-v than the transfer requires, including a useful safety margin. Based on this simplified calculation, the mission is feasible.
Available 8.06 km/s vs required 5.60 km/s, a surplus of 2.47 km/s (+44% margin).
Average radius of the transfer ellipse.
Time to travel from Earth's orbit to Mars's orbit.
Velocity increase to leave Earth's orbit.
Velocity adjustment when reaching Mars.
Overall propulsion requirement for the transfer.
Fuelled spacecraft at launch (dry + fuel).
Dry mass once all fuel is spent.
Δv = vₑ · ln(m₀ / m_f), the rocket's own capability.
The rocket equation estimates how much the spacecraft can change its speed using the fuel it carries. A spacecraft with more fuel or a more efficient engine can usually produce more delta-v. For the mission to be feasible, the available delta-v must be equal to or greater than the Hohmann transfer requirement.
The spacecraft carries a healthy propulsion margin. Any surplus can be reserved for course corrections and orbit insertion.
Slight differences occur because the model treats orbits as circular and coplanar and ignores planetary gravity.
Designing a Mars mission is not one correct answer. It is a set of compromises. These cards read from the values above, so they update as you change the mission.
More fuel means more delta-v, but a heavier spacecraft. The benefit shrinks each time, because the rocket must also accelerate the extra fuel.
Exhaust velocity sets how well fuel becomes delta-v. A more efficient engine does the same job with less fuel, but often gives less thrust.
A Hohmann transfer saves fuel but is not the fastest route. A quicker trip needs more delta-v; a slower one exposes the crew to radiation and wear for longer.
Fuel margin, transfer time, engine capability and mass all feed into overall risk. A mission can be possible yet still risky if the margin is thin.
These constants live in a dedicated constants.ts module. Every constant is exported individually with a descriptive name and documented with JSDoc comments including its units.
Orbital calculations, transfer-orbit algorithms, Delta-v maths and UI components all import from this one file, so the simulator and this page never drift out of sync.
/** Sun gravity μ☉ @unit m³/s² */ export const SUN_GRAVITATIONAL_PARAMETER = 1.327e20; /** Earth orbit radius @unit m */ export const EARTH_ORBIT_RADIUS_M = 1.496e11; /** Mars orbit radius @unit m */ export const MARS_ORBIT_RADIUS_M = 2.279e11; /** Astronomical Unit @unit m */ export const ASTRONOMICAL_UNIT_M = 1.496e11;