With the vis-viva equation I can calculate the orbital speed at any position on the ellipse.

I want to calculate the opposite way. Assume a satellite with an apogee of 600km and a perigee of 400km is moving around earth. At some point the engine fires and accelerates the satellite Δv = 150m/s in prograde direction. How can I calculate the new apogee and perigee positions and the correct angle?


If I accelerate in the apogee or perigee it is quite simple by transforming the vis-viva equation and calculate the semi-major-axis. But how does it work at any other points?

Background: I want to develop an easy-to-understand 2D space simulation. Like KSP but way less complex.


What you are basically asking is how to convert initial conditions, position and velocity, to orbital elements. In this case both position and velocity are 2D vectors, with a reference frame positioned at the center of the celestial body, with gravitational parameter $\mu$, and the orbital elements: "longitude of the ascending node" and "inclination" do not have to be defined, since the orbital plane is equal to the 2D plane, the only information you do have to store is whether it goes around clockwise or anticlockwise. So for a given reference direction $\Upsilon$, you need to know:

  • Semi-major axis $a$
  • Eccentricity $e$
  • Argument of periapsis $\omega$ (now defined as the angle between $\Upsilon$ and the position vector at periapsis)
  • True anomaly $\nu$ at epoch (a reference moment in time)
  • Direction $\lambda$ (-1 for clockwise and 1 for anti-clockwise)

Schematic representation of the 2D orbital elements.

For your question I will define $\Upsilon$ as the position vector at periapsis of the initial orbit (thus $\omega=0$) and the epoch as the moment the $\Delta v$ is applied. The position and velocity in polar coordinates can be found from the orbital elements using the following equations,

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

$$ \theta = \lambda \nu + \omega, $$

$$ v_{r} = \sqrt{\frac{\mu}{a(1-e^2)}}e\sin\nu, $$

$$ v_{\theta} = \lambda\sqrt{\frac{\mu}{a(1-e^2)}}(1+e\cos\nu). $$

In your case you would have to add some values to the velocity components in order to find the position and velocity after applying the $\Delta v$.

Now you want to convert these values back to orbital elements. The semi-major axis can be found using specific orbital energy,

$$ a = \frac{\mu r}{2\mu - (v_r^2 + v_\theta^2)r}. $$

The eccentricity can be found using the specific relative angular momentum, $h=|v_\theta| r=\sqrt{\mu a(1-e^2)}$,

$$ e = \sqrt{1 - \frac{v_\theta^2 r^2}{\mu a}} = \sqrt{1 + \frac{v_\theta^2 r}{\mu} \left(\frac{(v_r^2 + v_\theta^2)r}{\mu} - 2\right)}. $$

For the true anomaly you can make use of the equation for $r$ and the new values for $a$ and $e$,

$$ \cos\nu = \frac{a(1-e^2)-r}{er}, $$

you could take the arc-cosine of this value to get $\nu$, however this can only have a value between $0$ and $\pi$. In order to cover the other half of the orbit you can make clever use of the fact that your radial velocity can only be negative after apoapsis passage, thus if you limit the domain of $\nu$ to $-\pi\geq\nu\geq\pi$ then it can be written as,

$$ \nu = \frac{|v_r|}{v_r}\cos^{-1}\left(\frac{a(1-e^2)-r}{er}\right). $$

The direction of the orbit can be found with,

$$ \lambda = \frac{|v_\theta|}{v_\theta}. $$

And last the argument of periapsis can be found with,

$$ \omega = \theta - \lambda \nu. $$

  • $\begingroup$ Wow, thank you very much! I will try to implement this in the next few days and will provide feedback. I didn't understand everything at the moment. But with further readings I should. $\endgroup$ – Julian Hinderer Jun 17 '15 at 21:14
  • $\begingroup$ @JulianHinderer Any luck trying to implement this, or do you have any further questions? $\endgroup$ – fibonatic Jun 19 '15 at 15:28
  • $\begingroup$ I am not sure about the two velocities vr and vθ. Is vθ the angular velocity and vr the speed how fast the satellite is moving away from the planet? $\endgroup$ – Julian Hinderer Jun 22 '15 at 0:29
  • $\begingroup$ @JulianHinderer Yes. So $v_r$ is the time derivative of $r$, the radius, and $v_\theta$ is the velocity tangential to it, which can also be written as the angular velocity (in radians per second) times the radius. $\endgroup$ – fibonatic Jun 22 '15 at 0:34
  • $\begingroup$ Thank you very much @fibonatic! I think I got it. The first tests are very good. If you want, I can send you the final result in august :) $\endgroup$ – Julian Hinderer Jul 9 '15 at 2:20

Your Answer

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

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