The solar system, derived from a single force law — and the eclipses it casts.
Three instruments on one page. The first is a living solar system — the planets move by gravity alone, nothing is animated by hand. The second tells you when the next solar and lunar eclipses really happen — in your own timezone, with what you’d actually see, checked against NASA’s eclipse records to within seconds. The third shows why eclipses arrive in seasons. Every claim on this page is a number you can read.
Nothing is scripted — each frame applies
F = G·m₁m₂ / r²
between all bodies, then one symplectic leapfrog step; the closed ellipses,
the speeds, and Kepler’s law all emerge.
No orbits were drawn. We only coded the force.
The orrery above holds one rule in its loop: Newton’s law of universal gravitation. Between every pair of bodies the force is F = G·m₁m₂ / r², directed along the line that joins them. There is no table of orbits, no pre-baked ellipse — only mass, position, and that inverse-square attraction.
We seed the state vectors from the standard J2000 orbital elements (Standish’s reduction): each planet’s heliocentric position and velocity at the epoch, then a shift to the barycentre so total momentum is ~0 and the system doesn’t drift off-screen. From that single snapshot, the future is integrated, not looked up.
The integrator is symplectic — velocity-Verlet (leapfrog): a half-kick on the velocities, a full drift of the positions, then a second half-kick. Unlike a naive Euler step, a symplectic scheme conserves the system’s energy over long runs (watch the live drift in ppm badge stay tiny even at high speed), which is exactly why the ellipses stay closed instead of spiralling.
And then the payoff. Recover each planet’s orbit from its current state vector and compute T² / a³ — orbital period squared over semi-major axis cubed. For every planet it lands on ~1.000. That constant is Kepler’s third law, and we never wrote it down. It fell out of the force law alone. (Jupiter reads ~0.999 because it is massive enough that the real (M + m) term matters — physics, not integrator error.)
The orrery’s telemetry rail shows T²/a³ per planet as it runs. Mean across the eight: ~1.0000.
Predicted, not simulated — every eclipse is reduced from the full lunar + solar theory (the same maths behind the professional catalogs) and the whole 1901–2100 record is verified against the NASA/Espenak canon: all 909 eclipses, right type, times within seconds.
Prediction versus the published canon.
Eight well-known solar eclipses, each computed in your browser from the full lunar + solar theory, set beside the NASA / Espenak catalog (its Terrestrial-Time instants converted to UT with the catalog’s own ΔT). Greatest-eclipse time lands within seconds; the geometry — gamma — inside a thousandth.
- Total
- Time UT
- 18:25:28 NASA 18:25:30 −2 s
- Gamma
- +0.437 NASA +0.437 0.000
- Total
- Time UT
- 19:23:01 NASA 19:22:56 +5 s
- Gamma
- −0.647 NASA −0.647 0.000
- Annular
- Time UT
- 17:59:32 NASA 17:59:27 +5 s
- Gamma
- +0.375 NASA +0.375 0.000
- Total
- Time UT
- 18:17:19 NASA 18:17:15 +4 s
- Gamma
- +0.343 NASA +0.343 0.000
- Total
- Time UT
- 17:45:40 NASA 17:45:51 −11 s
- Gamma
- +0.898 NASA +0.898 0.000
- Total
- Time UT
- 10:06:31 NASA 10:06:34 −3 s
- Gamma
- +0.142 NASA +0.142 0.000
- Annular
- Time UT
- 15:07:44 NASA 15:07:43 +1 s
- Gamma
- +0.390 NASA +0.390 0.000
- Hybrid
- Time UT
- 21:06:15 NASA 21:06:12 +3 s
- Gamma
- +0.308 NASA +0.308 0.000
computed live in your browser from the full lunar + solar theory — the engine cells are not baked into the page. Reference instants and gamma are from the NASA / Espenak Five‑Millennium Catalog of Solar Eclipses, converted from the catalog’s Terrestrial Dynamical Time to UT with its own ΔT. Solar eclipses in this head‑to‑head; the lunar branch is verified the same way — the head‑less regression covers every catalog eclipse of 1901–2100 (452 solar + 457 lunar): correct type for all 909, greatest‑eclipse time within ~20 s, gamma within ~0.001, and magnitudes — computed with the catalog’s own conventions (topocentric diameter ratio, Danjon‑enlarged shadows) — within ~0.002.
An eclipse needs a New or Full Moon at a node. The Sun crosses each node only
twice a year, so eclipses bunch into two short seasons every
~173 days — scrub the timeline and watch the verdict flip.
A new Moon, a node, and a question of distance.
A solar eclipse is the Moon’s shadow falling on Earth, so it can only happen at New Moon — when the Moon sits between us and the Sun. But the Moon’s orbit is tilted ~5° to the ecliptic, so most New Moons the shadow sails harmlessly above or below us. An eclipse needs that New Moon to land near one of the two nodes, where the lunar orbit crosses the ecliptic plane.
How close is close enough is captured by γ (gamma): the least distance of the shadow axis from Earth’s centre, measured in Earth radii. When |γ| < 0.9972 the axis actually strikes the globe and the eclipse is central (total, annular, or hybrid). Larger than that and only the penumbra grazes us — a partial.
Because the geometry repeats, eclipses arrive in a rhythm: eclipse seasons come roughly every ~173 days (~5.8 months), so each calendar year carries at least two and at most five solar eclipses. The predictor above walks new-moon index by index and keeps only the ones whose shadow reaches us. And the same alignment at Full Moon runs in reverse — the Moon crosses Earth’s shadow, a lunar eclipse — which is why solar and lunar eclipses arrive paired inside one season, about a fortnight apart.
Total or annular is then purely a question of distance. The Moon’s orbit is an ellipse: near perigee it looks slightly larger than the Sun and its disk covers it completely — total, the corona blazes out. Near apogee it looks slightly smaller, leaving a bright rim — annular, the “ring of fire.” That is the whole story in one number: the Moon-to-Sun apparent size ratio. Read it live in the disk view.
- γ
- Signed least distance of the shadow axis from Earth’s centre, in Earth radii. Sign marks north (+) or south (−) of centre.
- u
- The antumbral radius parameter (Meeus). Its sign separates a total cone from an annular one at greatest eclipse.
- size ratio
- Moon’s apparent diameter ÷ the Sun’s. > 1 ⇒ total; < 1 ⇒ annular ring. For a partial it is not a coverage.
- umbral mag
- Lunar eclipses: the fraction of the Moon’s diameter inside Earth’s umbra at greatest eclipse. ≥ 1 ⇒ total (the copper “blood moon”); ≤ 0 ⇒ penumbral only.
The orrery is live N-body. The eclipse dates are full ephemeris theory — because the Moon demands arc-second precision a browser N-body can’t hold over decades.
Orrery — live, integrated
Every frame is computed in your browser from F = G·m₁m₂ / r² plus one symplectic step. It is genuinely conservative physics, and that honesty is the point — you can watch the energy hold. What it is not built for is the Moon: tracking a body that needs arc-minute accuracy across decades would let tiny per-step errors accumulate into the wrong day.
Predictor — computed, exact
So eclipse dates use a different engine: the full lunar and solar theory (Meeus’ Astronomical Algorithms lunar series + the VSOP87 planetary theory), reduced with the same shadow geometry the professional canon uses — and verified here against every NASA/Espenak catalog eclipse from 1901 to 2100. It is not simulated forward step by step; it evaluates the geometry directly, to seconds, for any new or full moon you ask for.
Sumit Bansal — Automation Engineer