Three Body Problem


The three-body problem describes the motion of three celestial bodies (such as stars or planets) interacting through gravitational forces. Unlike the two-body problem, which has a clean analytical solution first derived by Newton, the three-body problem has no general closed-form solution. This was proven by Henri Poincaré in the late 19th century, who showed that the equations of motion are non-integrable. It means the system's future state cannot be expressed as a simple formula, no matter how much mathematical effort is applied.

Chaos and Sensitivity

What makes the three-body problem interesting is its chaotic nature. A tiny difference in initial positions or velocities can lead to wildly different trajectories over time. In most configurations, the bodies follow unpredictable, non-repeating paths. It can occasionally flinging one body out of the system or settling into brief unstable orbits before diverging again. Only a handful of special periodic solutions exist, such as the figure-eight orbit discovered in 1993, where three equal-mass bodies chase each other along the same closed path.

Solving chaotic three-body systems computationally is fundamentally limited by this sensitivity. Even tiny rounding errors from finite computer precision grow exponentially over time, so precise predictions are only possible over short horizons. For truly unstable configurations, reliable trajectory forecasts rarely extend beyond a few dozen orbital periods.

Interacting with the Simulation

Camera: Click and drag the background to rotate, scroll to zoom, and right-click drag to pan. Press Esc to center the camera.

Movement: Click an object to attach the transform gizmo. Drag the colored arrows to move it along the X, Y, or Z axis.

Velocity: Switch the control mode to 'Velocity' and click the velocity arrow. Use the gizmo to set the direction and the Velocity Magnitude field to set the speed.

Simulation: Use the Start/Pause button to begin. Physics settings can only be edited when the simulation is paused.