Heliocenter: A 3D Model of the Solar System

An interactive 3D model of the solar system that places the planets, dwarf planets, selected asteroids, Halley's Comet and the two Voyager probes on any date, using JPL orbital elements for 3000 BCE to 3000 CE or a Newtonian n-body integration for 100,000 years either way.

An interactive model of the solar system, opened on the current date and set in motion. It places the planets, Pluto and four other dwarf planets, Sedna, three asteroids, Halley's Comet and the two Voyager probes in three dimensions, with orbits drawn at true scale. Time runs forward or backward at speeds from one hour to 10,000 years per second, and two engines compute the positions: an analytic one from published orbital elements and a numerical n-body integration.

Heliocenter. Drag to rotate, scroll to zoom, and click a body, a label or a name in the top strips to focus it; the panel on the right describes the focused body and the bar at the bottom controls time.

Open full screen

What it shows

  • Bodies. The Sun, the eight planets, Pluto, Eris, Makemake, Haumea, Sedna, Ceres, Vesta, the near-Earth asteroid Eros, Halley's Comet, Voyager 1 and Voyager 2, each with its orbit. Three regions can also be focused: the Kuiper Belt, the heliopause and the inner edge of the Oort Cloud, which appear as point clouds when the camera zooms out far enough.
  • Moons. Focusing a planet shows some of its moons: the Moon, Phobos and Deimos, the four Galilean moons of Jupiter, Enceladus and Titan, Miranda and Titania, Triton, and Charon. Pluto and Charon are drawn as a binary, both circling a shared center outside Pluto. Each moon has a short description in the panel.
  • Two engines. The "elements" engine computes each planet's position directly from orbital elements that change slowly with time, and covers 3000 BCE to 3000 CE. The "n-body" engine starts from those positions on the date shown when it is switched on and integrates Newton's law of gravitation forward or backward, up to 100,000 years either way. In the n-body engine the Sun moves around the center of mass of the system, pulled mainly by Jupiter, and the orbit lines are redrawn every five simulated years from each body's current position and velocity.
  • Co-orbital companions. Small bodies that share an orbit with a planet: Venus's quasi-satellite Zoozve, and Earth's quasi-satellite Kamoʻoalewa, horseshoe companion Cruithne and the two Earth trojans 2010 TK7 and 2020 XL5. Point clouds mark the Trojan swarms ahead of and behind Jupiter (at its L4 and L5 points) and the Neptune trojans at L4.
  • Lagrange points. L1 to L5 for the focused planet.
  • Readouts. For the focused body: its distance from the Sun in AU, its ecliptic longitude and latitude, its distance from Earth and the light travel time, and its current orbital elements (semi-major axis, eccentricity, inclination and period). For most bodies the readout adds an equilibrium temperature computed from the distance and an albedo, with a measured temperature alongside for six of the planets and Pluto.
  • Controls. Pause, reverse, nine speeds, a date entry with a "today" button, toggles for orbits, probes, co-orbitals and Lagrange points, and a slider for the drawn size of the bodies. The arrow keys step through the bodies and the space bar pauses.

Data

All numbers are embedded in the page.

  • Planets and Pluto. The code cites the JPL long-interval Keplerian elements of E. M. Standish (Tables 2a and 2b), for 3000 BCE to 3000 CE in the J2000 ecliptic frame: each element at J2000 with a rate of change per century, plus the extra correction terms the table gives for Jupiter through Pluto.
  • Other small bodies. Ceres, Vesta, Eros, Eris, Makemake, Haumea, Sedna and Halley use fixed orbital elements near the J2000 epoch (Halley's are anchored to its 1986 perihelion), moved forward in time as two-body Kepler orbits. The code names no source for these values.
  • Moons. A distance from the planet and an orbital period for each moon, and one tilt per moon system (25.2° for Mars, 3.1° for Jupiter, 26.7° for Saturn, 97.8° for Uranus, 157° for Triton and 119° for Charon). The Moon instead follows a short analytic lunar formula: a mean longitude with one periodic correction, a latitude term with an amplitude of 5.128°, and a distance that varies around 385,001 km.
  • Masses. Mass ratios to the Sun for the planets and Pluto, used by the n-body engine and for the Lagrange points, with the Sun's gravitational parameter taken as the square of the Gaussian constant.
  • Co-orbitals. For each companion, a center angle, an amplitude and a libration period in years, for example 166° and about 770 years for Cruithne.
  • Voyagers. The launch dates and the dates of each planetary encounter, a direction of travel for each probe, a distance on 1 January 2026 (166.8 AU for Voyager 1 and 139.5 AU for Voyager 2) and an outbound speed (3.58 and 3.24 AU per year).
  • Temperatures. Bond albedos for 17 bodies and the formula $T_{eq} = 278.3\,(1-A)^{1/4}/\sqrt{r}$ kelvins, with $A$ the albedo and $r$ the distance from the Sun in AU.

The text in the panel (physical figures, missions and model notes) was written by Claude for the page and names no sources. Some notes record plans from the conversation in which the model was built, such as an opposition finder or more moons of Uranus, that were never added.

Limitations

  • Sizes are not to scale. Orbits are drawn at true scale (1 AU is 10 scene units), but body sizes follow a logarithmic formula for legibility and can be changed with the size slider.
  • Moon orbits are enlarged. Each moon system is scaled up so that its innermost moon sits at 2.4 times the planet's drawn radius; the spacing between moons keeps its true proportions.
  • Simplified moons. Moons other than Earth's follow circular orbits at a constant rate. Their starting positions are illustrative, chosen for Jupiter so that the Io, Europa and Ganymede resonance holds. Each system is tilted by its angle about one fixed axis of the ecliptic rather than about the planet's actual pole direction, so the tilt is right but the orientation is not. The Moon's formula leaves out the smaller periodic terms. Moons are not part of the n-body integration.
  • Small bodies. In the elements engine the small bodies follow fixed Kepler orbits with no perturbations. In the n-body engine they are pulled by the Sun, the planets and Pluto but exert no pull of their own.
  • The n-body engine. It is Newtonian, so the part of Mercury's perihelion advance that comes from general relativity is missing. It uses a fixed step of one day (four days when jumping more than about 2,000 years), which under-resolves fast close passes such as Halley's perihelion. The starting velocities come from the analytic elements, adjusted by per-planet factors that the code says were fitted against the analytic ephemeris.
  • Co-orbitals are kinematic. Each companion is placed by rotating its planet's position around the Sun by an angle that swings back and forth over the libration period. It stays at the planet's distance from the Sun, and its phase is illustrative. The Trojan clouds are random points around the L4 and L5 directions.
  • Lagrange points are approximate. L1 and L2 are placed using the small-mass approximation, and L3, L4 and L5 at the planet's distance from the Sun.
  • Voyager paths are schematic. Each path joins the encounter positions with straight segments, then runs straight outward along a fixed direction at a constant speed. Only the launch and encounter points come from the model's own planet positions.
  • Regions are static. The Kuiper Belt (31 to 49 AU), a scattered-disk fringe (48 to 90 AU), the heliopause (a sphere at 122 AU) and the inner Oort Cloud (around 2,000 AU) are clouds of random points that do not move and change with each page load.
  • Calendar. Dates use the Gregorian calendar throughout, including before 1582. Typed years are astronomical years, so year 0 is shown as 1 BCE and year -1 as 2 BCE.

How it was made

Claude (Anthropic) built the model as a React artifact in a conversation with the site owner, using the three.js library for the 3D view; its header labels it version 3. For this site the component's source was compiled, without changes, into a single HTML file together with React and three.js, so the page runs without loading anything from the network.