A live WebGL map of every known asteroid in the solar system — 1.55 million objects from the NASA/JPL Small-Body Database, animated in real time. Built with Claude Fable 5.
scripts/build_data.mjspacks each asteroid's Keplerian orbital elements (a, e, i, Ω, ω, M₀, epoch, H) into a 26 MB binary (public/asteroids.bin), 17 bytes per asteroid.- The browser uploads those elements as GPU vertex attributes. A vertex shader solves Kepler's equation (Newton iterations) every frame, so the entire catalog orbits live in a single draw call.
- Planets use JPL's approximate J2000 elements + secular rates.
- Colors encode dynamical class: near-Earth, Mars-crossers, main belt, Hildas/trojans, centaurs, trans-Neptunians.
npm install
npm run devTo refresh the catalog:
curl -s --compressed -o data/sbdb_raw.json \
"https://ssd-api.jpl.nasa.gov/sbdb_query.api?fields=a,e,i,om,w,ma,epoch,H&sb-kind=a"
npm run dataStatic Vite build, deployed on Vercel: npx vercel.
Data courtesy NASA/JPL-Caltech Solar System Dynamics group.