Newtonian core
Simulation state uses physical units first.
The simulator treats rendering as a view of SI-unit state. This page names the assumptions that make the current model readable and testable.
Core equation
a = G * source_mass / distance^3 * displacement
The implementation scales the displacement vector directly, so direction and magnitude remain coupled in src/sim/physics.c.
Source-backed model facts
src/sim/vec3d.cprovides double-precision vector operations.src/sim/body.cstores mass, radius, position, velocity, and acceleration in SI units.src/sim/physics.ccomputes Newtonian point-mass acceleration.src/sim/solar_system.cinitializes the Sun, all eight planets, moons, and Vesta with parent-aware states.src/sim/orbit.cpropagates elliptic, parabolic and hyperbolic source orbits with a bracketed universal-variable solver. The atlas uses the same C kernel compiled to a small standalone WASM module.src/sim/experiment.creads bounded selected-body input. Planet states use a pinned Sun-centered Horizons snapshot at JD 2461200.5 TDB; selected source orbits are two-body propagated to that epoch before force integration.src/sim/satellite.cconverts Jovian mean elements and Laplace/ecliptic source frames into parent-relative SI states. The versioneddata/jovian_moons.jsoncatalog covers 115 Jupiter moons.- The core/catalog integrator is velocity-Verlet / kick-drift-kick. Guided lessons also offer explicit Euler as a labeled numerical comparison.
src/app/simulation_step.caccumulates frame time and advances in fixed 15-second simulation steps for core/catalog runs, retaining the remainder for the next frame. Lessons can select a different fixed step; it never follows frame duration.src/sim/diagnostics.cmeasures energy, momentum and center of mass.src/sim/lessons.csupplies isolated experiments with independently tested convergence and free-pair conservation.src/app/comparison.cpublishes matched C checkpoints for two runs, with bounded history and analytical references where justified.src/sim/collisions.cimplements only the opt-in head-on sphere lesson; other scenes keep point-mass dynamics.
Known approximations
A moon can stay near its parent while drifting to the wrong place around its orbit. The 100-day checks in tests/test_simulation_step.c require less than one degree of isolated Phobos/Deimos phase error against analytical Kepler solutions, plus less than 1% parent-relative position discrepancy when the full scene is rerun with half-sized steps.
Physics steps and trail sampling have separate cadences: improving numerical accuracy must not accelerate the loss of historical trail detail.
The Sun remains fixed in the core/catalog scene. Jovian moon inclinations and orbital directions come from source elements; core planet initialization through Neptune remains planar. The isolated Earth–Moon lesson uses barycentric initialization, while the barycentric-core lesson releases the Sun and shifts all 128 initial states into the center-of-mass frame. The project does not claim relativistic precession, planetary oblateness, or ephemeris accuracy.
Unknown-mass moons are test particles: they feel gravity without exerting it. Missing mass/radius values display as Unknown and published model estimates are labeled. The 2048-step update budget retains unconsumed time while keeping input responsive.
The complete source catalog is an exploration dataset, not a million-body active simulation. Selected catalog experiments contain the Sun, eight planets, and at most 16 selected objects so the physical model and its numerical costs remain inspectable.