Instrument · live sandbox
The Galaxy Sandbox
A galaxy you fly around, with the dark-matter problem you can feel.
Two identical disks of stars, spun up and released — left under pure Newtonian gravity, right under MOND with G's a₀. Every star is integrated live, every frame, on your GPU (tens of thousands of them). Drag to orbit the camera, scroll to zoom, and watch: Newton's outer stars are moving too fast for the gravity Newton gives them, so the disk flies apart; MOND's extra pull holds the same disk flat and coherent. That gap is the reason astronomers reach for dark matter — here you can turn a₀ down with a slider and watch MOND collapse back into Newton.
Drag on the sky to orbit · scroll / pinch to zoom · space = play/pause. Slide a₀ to 0 and watch MOND become Newton.
Read this before you screenshot it
This is a live algebraic-MOND sandbox, not the rigorous solve. Each star feels an acceleration from an analytic softened-disk enclosed-mass model: gN = G·Menc(r)/r², then either kept (Newton) or multiplied by the simple ν-function ν(y) = ½ + √(¼ + 1/y), y = gN/a₀ (MOND). That algebraic relation is exact only in spherical symmetry; for a disk it is an honest fast approximation — good enough to feel the physics at 60 fps, but it is not the real QUMOND field. The stars also do not yet pull on each other (they orbit the shared analytic field), so this shows the rotation law, not disk self-instabilities.
The rigorous version — the actual modified-Poisson QUMOND field solve on an isolated-boundary particle mesh, where the particles source their own gravity — runs offline in proofs/mond-nbody — run it yourself and is gated there. And the standing boundary of this whole line: reproducing the dynamics is internal consistency, not proof that nature agrees. This is one idealized disk — not a fit to any real galaxy, not galaxy formation, not hydrodynamics. Consistency, not proof.
What you're actually watching
- The stars live on the GPU. Position and velocity for every star sit in float textures; a GLSL leapfrog shader integrates them all in parallel each frame (ping-pong framebuffers), so tens of thousands of bodies run in real time. No frames are pre-baked — you are driving the simulation.
- The rotation curve is emergent. The little v(r) plot on the sky is not a drawn line — each frame a sample of stars is binned by radius and their mean orbital speed is measured from the live motion. MOND's curve stays flat; Newton's falls as the disk unwinds. The flatness is a result of the dynamics, not an input.
- A real WebAssembly core. The CPU-fallback / high-accuracy integrator is a small C physics core compiled to WebAssembly with clang (identical leapfrog + ν-function), used when the GPU float-render path is unavailable and to cross-check the shader. The engine badge above says which path is live.