# Keplerian approximations for moons as well as planets

I'm writing code to simulate planetary and lunar orbits in a heliocentric reference plane. I'm using E.M. Standish's Keplerian Elements for Approximate Positions of the Major Planets as my reference and I think it is a straight path to simulate planetary motions from the equations and data given there.

What I haven't found is a similar reference that has data for the moons of those planets. I'm assuming that I can use those same formulae to compute the planet-centric positions of its moons and then translate them to heliocentric coordinates by adding the planet's heliocentric location.

Additional information: The document referred to presents one (time unvarying) set of Keplerian elements which can be applied to the supplied equations to simulate planetary orbits. The Keplerian elements have been best fit to the actual orbits over a given time range. For some of the planets the elements have a time dependent component which has also been fit to an analytic formula. The entire scheme is thus governed by a small set of constants driving a formula with time as the only input variable.

• Wolfram Alpha seems to know the argument of periapsis and longitude of ascending node for Titan, but not true anomaly? Mar 15 '17 at 21:12
• @RussellBorogove really? I only use $W\alpha$ to mess with equations - it can do astronomy too?
– uhoh
May 23 '17 at 10:17
• It has a number of interesting databases in it, but between gaps in the databases and the complexity of its parser, it's not very reliable. It does know the orbits of the planets, and e.g. angular distances between stars, etc. May 23 '17 at 14:10

As you already mention, you cannot directly propagate the motion of natural satellites in heliocentric coordinates. The reason is that they do not move in conic orbits with respect to the Sun; their motion does not describe a conic, but some sort of helix centered around a conic.

So, you got the right approach: obtain the conic elements with respect to their planet, propagate, and finally express the resulting vectors in heliocentric frame.

Now: the analytical description of the motion of natural satellites is orders of magnitude more difficult to describe than the motion of the planets. An osculating orbit (whether taken from Horizons or anywhere else) will describe the motion accurately only for a limited time period. This is the case for planets as well, but it is more marked in satellites.

Use Horizons Web-interface, with options such as the following: • I've been experimenting with the HORIZONS system, and this will get you an array of elements. For example you can similarly get the solar system barycenter referenced x,y,z coordinates directly. However, I'm looking for a single set of elements that have been best fit to the orbital equations as outlined in the document I referenced. Thanks! Mar 16 '17 at 2:06
• @KaushikGhose You didn't try it, or you didn't look at the result. That gives you the orbital elements. Not x,y,z. Mar 16 '17 at 2:38
• So if you are using orbital elements as an approximation, then you just pick one from the time series. The amount that your approximation is off can be determined by repeating with a different choice. Mar 16 '17 at 16:53
• What you get from Horizons is the best fit for any given time. There is no better approximation using Keplerian elements. That approximation has to change with time to adjust to the non-Keplerian perturbations to the orbits. Mar 16 '17 at 18:09
• I'll also note that you can generate the same dataset as JPL HORIZON using NASA/NAIF SPICE. This is available directly as a C library, or via the Python C interface called SpiceyPy. Mar 17 '17 at 4:06

You can try NASA's SSD approximations:

Sat.    a   e   w   M   i   node    n   P   Pw  Pnode   Ref.
(km)        (deg)   (deg)   (deg)   (deg)   (deg/day)   (days)  (yr)    (yr)
Moon    384400. 0.0554  318.15  135.27  5.16    125.08  13.176358   27.322  5.997   18.600  1