Automation Engineer
Book A Free Call
// ORRERY + ECLIPSE LAB

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.

bodies 9 integrator velocity‑Verlet ephemeris Meeus · Espenak‑verified
// LIVE · N-BODY
orrery.live // N-body integrator2026-01-01 00:00 UT
INTEGRATINGFULL SYSTEM · 31 AU

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.

// from first principles

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 loop, in three lines
F = G · m₁m₂ /
gravity between every pair
v ← v + ½ a·Δt   x ← x + v·Δt   v ← v + ½ a·Δt
one symplectic velocity-Verlet step
/ a³ → 1
Kepler III — emergent, never coded
// live proof

The orrery’s telemetry rail shows T²/a³ per planet as it runs. Mean across the eight: ~1.0000.

// COMPUTED · VERIFIED AGAINST THE NASA CANON
eclipse.predict // solar + lunar · full ephemeris events · 20262038
show
from yearnext 12 yrs
|γ| < 0.9972 ⇒ central · this event γ =

select an eclipse

MOON : SUN SIZE RATIO
pick a row to see the geometry
UT date / time
type
gamma
u
magnitude
size ratio (moon:sun)
Moon Ø
Sun Ø
sub-solar point
ΔT (UT→TT)

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.

// validated against the record

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.

Eclipse Engine UT NASA / Espenak Δt Engine γ NASA γ Δγ  
Total Great American 18:25:28 18:25:30 −2 s +0.437 +0.437 0.000
Total South America 19:23:01 19:22:56 +5 s −0.647 −0.647 0.000
Annular US ring of fire 17:59:32 17:59:27 +5 s +0.375 +0.375 0.000
Total North America 18:17:19 18:17:15 +4 s +0.343 +0.343 0.000
Total Spain & Iceland 17:45:40 17:45:51 −11 s +0.898 +0.898 0.000
Total longest this century 10:06:31 10:06:34 −3 s +0.142 +0.142 0.000
Annular upcoming annular 15:07:44 15:07:43 +1 s +0.390 +0.390 0.000
Hybrid Pacific hybrid 21:06:15 21:06:12 +3 s +0.308 +0.308 0.000
  • 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.

// GEOMETRY · WHY ECLIPSES CLUSTER
node.seasons // Sun vs. lunar node · ecliptic frame— UT
ECLIPTIC PLANE · FROM NORTHdrag the timeline — the Sun meets a node twice a year

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.

// why eclipses happen

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.
// two engines

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.

Standish/JPL J2000 elements · Meeus, Astronomical Algorithms · solar + lunar verified vs the NASA/Espenak canon

Sumit Bansal — Automation Engineer