Assuming I was looking for arrival opportunities from 2020 to 2030, how can I calculate the possible arrival dates to Mercury given a departure date from a gravity assist from Venus?


3 Answers 3


@JohnMcCarthy's answer describes the outline of the general approach well, and I will take that and run into some of the weedy details behind it.

My answer describes a more hands-on, brute force method; however, this answer points to a more powerful tool, NASA's EMTG (I've no experience with it).

In general, broad trajectory searches are done (solving Lambert's problem) to find low energy launch windows. In short: find the trajectories (from a larger set of dates; 2020-2030) then pick specific dates, not the other way around.

A Lambert solver takes two positions and the time of flight between them as inputs. It can output many things, but for planning gravity assists it ideally outputs the vector hyperbolic excess velocities, $\vec{v_{\infty}}$ (planet relative). Many solvers will actually output the heliocentric transfer orbit velocity vector at the start and end positions (the positions of the planets). These can be easily converted to $\vec{v_{\infty}}$ values by subtracting the planet's velocity vector. A planet's state vector (position & velocity) can be found via a JPL development ephemeris (HORIZONS Web Interface, SPICE). The final output is then one 2D matrix of $\vec{v_{\infty}}$ values (technically 3D: departure date, arrival date, xyz component) for departure and one for arrival.

For launch, the magnitude of $\vec{v_{\infty}}$ is typically expressed as the Characteristic energy, $v_{\infty}^2$, for use with launch vehicle selection (NASA launch vehicle performance calculator tool!).

Performing a "broad trajectory search" means using the Lambert solver for each set of launch date (X-axis) and arrival date (Y-axis), as the date gives you the state vector of the planet. The results are then filtered by some mission constraints (max C3 or $\Delta V$, etc.) and can be plotted as a porkchop plot like this Earth to Venus 2026 search:

pork chop plot ($V_{hp}$ is the hyperbolic excess velocity)

At this point it becomes (relatively) easy to pick dates, albeit for a direct, non-gravity assist trajectory.

You can think of your proposed Earth-Venus-Mercury trajectory as having 2 separate legs of the journey: Leg 1 is from Earth to Venus and Leg 2 is from Venus to Mercury. If you perform the broad trajectory search for each leg (with overlapping Venus dates), you are left with four matrices of $\vec{v_{\infty}}$ values; however, two of them represent the same metric: $v_{\infty}$ at Venus. If, for a given set of three dates (Earth departure, Venus flyby*, Mercury arrival), the $v_{\infty}$ at Venus from Leg 1 is the same (or very close to) as for Leg 2, then a free hyperbolic gravity assist is possible. This is because the gravity assist is a hyperbolic orbit about Venus and the $v_{\infty}$ parameter is constant for any orbit (in the two-body approximation).

*traversing through the planetary system takes a finite length of time, thus the same date/time assumption for matching the $v_{\infty}$ is approximate, but for small planets is reasonable. For Jupiter (and probably Saturn), the hyperbolic trajectory generally takes more than one day to complete, so offsetting the $v_{\infty}$ matching by a day is a better approximation.

You may at this point be wondering why we wanted the $\vec{v_{\infty}}$ vector as opposed to just its magnitude. Critically, though we have matched $v_{\infty}$ between legs, we haven't yet determined if that gravity assist is feasible.

Looking at the equation for the deflection angle, $\delta$, in this image: deflection angle diagram

$$\delta = 2 \cdot \sin^{-1}(\frac{1}{1+\frac{r_pv_{\infty}^2}{\mu}})$$

We can determine $\delta$ from our $\vec{v_{\infty}}$ vectors (angle between $\vec{v_{\infty, leg 1}}$ & $\vec{v_{\infty, leg 2}}$) and rearrange the equation to find $r_p$. If $r_p$ is less than the planet's radius, or inside its atmosphere if applicable, then the gravity assist is NOT feasible, you can't bend the trajectory enough to send the spacecraft towards the next planet.

If you repeat this process for each trajectory from the broader search you will be left with viable gravity assist trajectories. Pick the lowest energy ones out of this to find your dates.


Essentially you do a search in the two dimensional space of launch dates and arrival dates. For each pair, you compute a trajectory and calculate the amount of launch energy you need. That parameter is called C3, and it has dimensions of velocity squared. You would need to do similar searches for each set of gravity assists you are considering. That is, one for trajectories with one Venus flyby, another search for two Venus flybys, and so on.

I've just described the outline of the approach. In real life, the folks who do this kind of planning have much more sophisticated tools to optimize the trajectories without doing a full brute-force search. They also develop intuition about the trade-offs and what works and what doesn't.

In addition to launch energy, mission planners consider other parameters. Examples include transit time (taking 50 years would be unpopular), thermal constraints (especially going to Mercury), communications, and many others.


You don't start with a departure date--that's one of the answers, not one of the inputs.

I don't know a formula for calculating a gravity assist orbit so I will use the easy case and omit Venus, as well as assuming the planets are in circular, coplanar orbits:

Find the orbital period of the transfer orbit. For our simple case the orbital radius is (mercury orbit + earth orbit)/2 and Kepler will give you the orbital period from that. We will go halfway around this orbit. You look at the two orbits and hunt for a time where the planet you are launching from is opposite from where the target will be 1/2 of the transfer orbit period in the future. I believe there is an algebraic solution to this but I don't recall it.

While this gives a single point in time as the answer in practice it's a bit fuzzy, you can deviate a bit from this without a big fuel cost, but after that the fuel cost goes up prohibitively, launches simply aren't done.

For any given pair of planets this happens at fixed intervals, once you know one time and the repeat period you can very easy calculate additional times.

(Note that this is why there was such a rush to get Perseverance launched.)

Once you start adding gravity assists the problem becomes much, much harder as you need suitable windows with both pairs of planets and the correct speed and angle from the encounter. I believe this is simply brute-forced, no algebraic solution exists.

  • $\begingroup$ Isn't there a JPL "trajectory explorer" page somewhere where one can search for solutions? $\endgroup$
    – uhoh
    Commented Nov 22, 2020 at 0:41
  • 2
    $\begingroup$ @uhoh Yes. There is. trajbrowser.arc.nasa.gov/index.php $\endgroup$
    – Star Man
    Commented Nov 22, 2020 at 0:58
  • $\begingroup$ @StarMan bingo! $\endgroup$
    – uhoh
    Commented Nov 22, 2020 at 1:06
  • $\begingroup$ Dates (departure and arrival) are most definitely an input for a Lambert's problem solver, you down select to a specific set of departure dates (arrival date is typically fixed for mission planning, DSN scheduling, etc.) where the trajectory is favourable (low $\Delta V$) $\endgroup$ Commented Jan 17, 2022 at 13:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.