Given a standard set of orbital elements (angular momentum, semi-major axis, eccentricity, inclination, longitude of the ascending node, argument of periapsis, and true anomaly), and a global time variable, how do I find the new true anomaly after performing an orbital maneuver? When I add force to the object I calculate it's state vectors and put it "off-rails" in the game engine, meaning that it is not being propagated according to the orbital elements. When the burn is over, I calculate the new orbit and put the object "on-rails", meaning that it resumes being propagated on the new orbit. My current dilemma is that when I add thrust and recalculate the orbit, the argument of periapsis and true anomaly change, and the object is incorrectly repositioned. I am currently calculating the true anomaly directly from the global time variable, but I realize I need to relate it to the time at periapsis or similar. Can anyone clarify how I would resolve this?


If you have all the orbital parameters of the new orbit, and you also have the radial distance from the central body of the spacecraft after the maneuver, and the orbit isn't circular you have enough information to determine the new true anomaly.


  • Radial distance: $r$
  • Orbital Eccentricity : $e$
  • Semimajor axis: $a$

The polar equation of a Keplerian orbit is:

$r=\frac{a(1-e^2)}{1+e \cos \theta}$

Where True Anomaly is represented by $\theta$

Solving for $\theta$ gives you


The positive value will be correct if the spacecraft is headed from periapsis to apoapsis, and the negative value will be correct if the spacecraft is descending from apoapsis to periapsis.

As for how to determine which is happening, one way would be if you have the radial distance vector ($\vec{r}$) and the velocity vector ($\vec{v}$) available in your code, and to take the dot product of the two.

  • if $\vec{r} \cdot \vec{v} > 0 $, then the spacecraft is ascending to apoapsis.
  • if $\vec{r} \cdot \vec{v} < 0 $, then the spacecraft is descending to periapsis.
  • if $\vec{r} \cdot \vec{v} = 0 $, either your spacecraft is at periapsis ($\theta = \pi$) or at periapsis ($\theta = 0)$, or your orbit is circular.
  • $\begingroup$ I'll give this a shot and let you know how it works, thanks for the response! $\endgroup$
    – mecha_moonboy
    Jul 20 at 1:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy