Go to file
2026-07-16 01:19:09 +10:00
assets 📖 almanac: knowing — info panel, live facts, grimoire art, real textures, README (opus) 2026-07-16 00:56:41 +10:00
css 📖 almanac: knowing — info panel, live facts, grimoire art, real textures, README (opus) 2026-07-16 00:56:41 +10:00
docs 📖 almanac: knowing — info panel, live facts, grimoire art, real textures, README (opus) 2026-07-16 00:56:41 +10:00
js 🖱 fix: orbit drag was dead — OrbitControls bound to the pointer-events:none label overlay; rebind to the WebGL canvas (verified by dispatched pointer drag: heading 0→-0.93 rad) (fable) 2026-07-16 01:19:09 +10:00
.gitignore 🌞 genesis: scaffold — serve.py proxy+cache, importmap renderer, sky, sun, HUD, time bar, floating-origin bootstrap (opus) 2026-07-16 00:04:41 +10:00
CLAUDE.md 🔑 brief: MODELBEAST agent credential pre-provisioned — source agent.env, no friction (fable) 2026-07-15 23:31:10 +10:00
index.html 🌞 genesis: scaffold — serve.py proxy+cache, importmap renderer, sky, sun, HUD, time bar, floating-origin bootstrap (opus) 2026-07-16 00:04:41 +10:00
README.md 📖 almanac: knowing — info panel, live facts, grimoire art, real textures, README (opus) 2026-07-16 00:56:41 +10:00
serve.py 🛰 probes: the live layer — 8 spacecraft via Horizons, trails + light-time (opus) 2026-07-16 00:32:44 +10:00
SOLARGOD_BRIEF.md 🔑 brief: MODELBEAST agent credential pre-provisioned — source agent.env, no friction (fable) 2026-07-15 23:31:10 +10:00
verify.html ☄ swarm: small bodies — main belt, comets, NEO close approaches (opus) 2026-07-16 00:41:23 +10:00

SOLARGOD ▸ Orrery

A standalone, browser-based 3D solar-system explorer — the interplanetary sibling of GODSIGH, which watches Earth. Float above a compressed-scale ("MEGA") solar system with every world visible at once, moving on real JPL ephemerides; scrub a time bar across centuries; fly the camera into orbit around any planet, its moons circling; toggle TRUE scale and watch the system animate out into its real, humbling emptiness. Live layers plot where Voyager 1, JWST and Parker Solar Probe are right now, plus real asteroids, comets and Earth close-approaches. Everything is client-side, free, and keyless.

SOLARGOD

Quickstart

python3 serve.py          # stdlib only — no npm, no build step
# open http://127.0.0.1:8147

serve.py statically serves the app and proxies the JPL feeds a browser can't call directly (Horizons / SBDB / CAD — no CORS), with a disk cache in cache/. Three.js loads from a pinned CDN importmap. The deterministic core (Sun, planets, moons, orbits, time travel) runs with zero network calls — positions are computed locally from Keplerian elements; network layers are additive and fail soft.

Verify

Open http://127.0.0.1:8147/verify.html — an in-browser gate runner that checks the ephemeris against JPL Horizons ground truth (hard-coded checkpoints + live queries through the proxy). All 13 gates should read PASS, e.g.:

Gate Result
Mars / Jupiter / Earth @ 2026-07-15 (heliocentric ecliptic AU) Δ ≤ 3.3e-4 / 2.9e-3 / 3.9e-5 AU
Kepler solver converges at e=0.97 · orbitPath closes · frame round-trips exact
MEGA→TRUE preserves direction (unit dot ≈ 1) 1.000000000000
Mars @ J2000 · Jupiter @ 1900 vs live Horizons Δ 4.8e-5 / 2.0e-3 AU
Main belt between Mars & Jupiter · Halley aphelion beyond Neptune pass
Voyager 1 @ 2026-07-15 = (32.07, 136.21, +98.55) AU · JWST hugs Earth Δ 0.002 / 0.011 AU

Layers

Layer Source Default Notes
Planets & orbits JPL SSD approximate elements (Standish) on 8 planets + Pluto, textured, MEGA-compressed orbit paths
Body labels on names; the focused body's children also get distance labels
Moons JPL satellite data on 21 moons, per-parent local compression, retrograde Triton
Rings true km, scaled to parent on Saturn (textured annulus) · Uranus (schematic)
Spacecraft JPL Horizons (proxy) on Voyager 1/2, New Horizons, JWST, Parker, Juno, Lucy, Psyche — live distance + one-way light-time
Main belt JPL SBDB (proxy) off ~1500 main-belt asteroids, shared Kepler core
Comets JPL SBDB (proxy) on 1P/Halley, 2P/Encke, 67P, 96P — full orbits + anti-sunward 1/r² tail
Close approaches JPL CAD (proxy) off ±30-day NEO radar around Earth, miss distance in lunar distances

Controls

  • Focus — click any body (or use the Focus menu) → the camera flies into orbit around it; breadcrumb SOL ▸ JUPITER ▸ EUROPA; Esc steps out one level.
  • MEGA / TRUE — toggle the scale mode; the transition animates over ~2.5 s.
  • Body scale — 1× / 100× / 1200× radius exaggeration.
  • Time bar — NOW, play/pause, reverse, rate presets (1× · 1 min/s … 1 yr/s), and a scrubbable 18002050 timeline. A LIVE / SCRUBBED chip mirrors GODSIGH.
  • Info panel — appears on focus: a grimoire card with a physical fact sheet, hand-written prose, a stylized portrait, and live computed facts (distance from Sun & Earth, sunlight age, orbital speed, day & year length). Focusing Earth reveals a link to the GODSIGH world view.
  • Shareable URLs — the view serializes to the hash (#f=<body>&t=<time>&s=<mega|true>&L=<layers>&cam=…); paste one to reproduce a view.
  • ?debug=1 — frame-rate / scale readout.

Architecture

No build step, no framework, plain ES modules. One module owns the truth→view transform (scale.js); every position is computed in real heliocentric J2000 ecliptic AU first (ephem.js) then compressed. A floating origin subtracts the focused body's position in float64 before writing to the scene graph, so a focused planet never jitters at close zoom.

index.html · serve.py · verify.html
css/style.css
js/  config lib ephem bodies scale ui main
js/layers/  planets moons rings spacecraft asteroids comets neos almanac
assets/textures/ (CC BY)  ·  assets/art/grimoire/ (generated)

The full execution spec is SOLARGOD_BRIEF.md.

Credits

  • PositionsJPL SSD approximate elements; live feeds via JPL Horizons / SBDB / CAD.
  • TexturesSolar System Scope, CC BY 4.0 (see assets/textures/CREDITS.md).
  • Grimoire art — generated locally with MODELBEAST / FLUX (see assets/art/PROMPTS.md); the aesthetic layer only — real worlds get real data textures.
  • Built on Three.js.