This applet is the obligatory scale model of the solar system. Distance is in AUs, velocity in AUs per hour, mass in units of 1028 pounds, yielding G=1.1716x10-9. Masses and initial positions are accurate to at least 4 digits. The simulation doesn't account for relativity, oblateness of the sun, solar winds, asteroids, galactic gravitational flux, and any number of other things. The numbers in the corner count how many displays have been done and the fractional error in energy conservation. It starts 1am on January 1, 1999. (I had strange masses and a strange value for G for a long time; Frederic Michaud pointed that out in January 2014.)

To start or stop, click. To spin around the sun, click in the middle and drag. To rotate and zoom, click near the edges and drag. The sun remains in the center; there are no controls yet to change that, or to change the distance from the sun.

I also have and applet description, some online references for how to build a solar system simulator, a set of stable orbits filling 3-space, a page exploring gravitation with Java, a simulation of Cruithne, and Klemperer rosettes.

sun mercury venus earth+moon mars jupiter saturn uranus neptune pluto

The JPL provides the coordinates of all planets now, and at any other time between 1965 and 2050. Thomas Rosin pointed me to it. You need certain settings to get xyz and x'y'z':

Ephemeris Type [change] :VECTORS
Target Body [change] :Earth [Geocenter] [399]
Coordinate Origin [change] :Solar System Barycenter (SSB) [500@0]
Time Span [change] :Start=2020-03-15, Stop=2020-04-14, Step=1 d
Table Settings [change] :output units=KM-S; quantities code=2
Display/Output [change] :default (formatted HTML)

The Nine Planets gives lots of facts on the planets (including mass and size).

The Astrophysics Data Systems article server has way more information than I know what to do with, specifically many Astronomy journals online and searchable. You can probably find anything you need just there.

I no longer use the Runge Kutta Fehlberg method to extrapolate the motions of the planets, given their initial position, velocities, and at any given point their acceleration. (Um, Runge Kutta Fehlberg is two Runge Kutta methods of order n and n+1, you evaluate both, and you use the difference between the estimates to decide if your current stepsize is small enough and what your next stepsize should be. The only references I could find were sparsely documented code.)

I use something completely different, a 9th order explicit symmetric multistep method I found. For other methods, see Ernst Hairer's Numerical Integration book . The Verlet method is the simplest and most common for n-body simulation.

I didn't bother with relativity. I suspect the errors inherent in my extrapolations are bigger than the errors due to ignoring relativity, although I haven't confirmed that. An open source simulator that accounts for that is de118i.zip , which also includes an implementation of the Adams-Moulton-Bashforth method, up to order 15 I think. That's a DOS application and I haven't figured out how to run it yet.

Ephemerides are the modern-day equivalent of the crystal spheres. They're still the fastest way of determining exactly where to aim your telescope to find Neptune. That site has lots of pointers to calculating planetary positions.

Rubik Unbound, a proof-of-concept of buttonless controls, and also of allowing only rotation about a center. And a truly fine Rubik's Cube.

Here are some other orbit simulators:


Exploring orbits with Java
A set of noncolliding orbits that fill 3-space
Table of Contents