loading...
Objects alive (blue) and cumulative collisions (orange, x10) against simulated time
Collision rate: measured per 10-minute bin (orange) against the kinetic-theory prediction (green, dashed)
running...
How to use
Drag to orbit, wheel or pinch to zoom, Space pauses, R resets. The globe, the satellites and the debris shards were modelled in Blender (baked PBR textures); orbits, collisions and fragmentation run live in JavaScript. Object sizes are exaggerated so they can be seen; one scene unit is 1000 km. Use the camera buttons for the whole Earth, a close look at the shell, or the polar and equatorial views.
The science
Orbits. Every object moves on a circular two-body orbit around the Earth. Gravity gives the speed and period
v = sqrt(mu / r), T = 2 pi sqrt(r^3 / mu), mu = 398 600.4 km^3/s^2
At 800 km altitude that is 7.46 km/s and 100.7 minutes. The page integrates r'' = -mu r / r^3 with RK4 for one orbit and checks that it returns after exactly the analytic period.
Collision rate (kinetic theory). For objects spread isotropically in a shell, with number density n = N / (4 pi r^2 Delta) (thickness Delta), an object with collision distance d (sum of the two radii) meets others at
rate per object = n pi d^2 v_rel f, total = N (rate per object) / 2
The mean relative speed of two random circular orbits at the same radius is v_rel = (4/3) v, about 9.9 km/s at 800 km: debris moves 10 km/s relative to other debris, which is why even a paint fleck hits like a bullet. The factor f corrects for the shell edges (an object near the surface of the shell has neighbours on one side only; f = 1 - d / (2 Delta) for thin collision distances). The graph compares the measured count per 10 minutes with this prediction, and the checks do it for three random seeds.
Collision detection. Each 10 s step the relative position of every nearby pair is followed linearly between the start and end of the step; the minimum distance along that segment is compared with d. This catches fast flybys that a simple position check would jump over.
Fragments and the Kessler cascade. A collision removes both objects and creates a chosen number of fragments with a small random velocity change. Because the rate grows with N^2, a dense shell can run away: more fragments, more collisions, more fragments. This is the Kessler syndrome. Fragments are drawn orange. Two simplifications keep the cascade stable: fragments of one event ignore each other, and fragments are inert for the first 25 minutes while the cloud spreads out, so the measured rate during a cascade stays below the isotropic theory line. The population is capped at 3000 objects.
Drag. Below about 600 km thin air slows objects down and they spiral in. The page uses an exponential atmosphere, dr/dt = -k exp(-(h - 250 km) / 60 km), scaled by the drag slider, and removes objects under 180 km altitude. Higher shells stay occupied for decades to centuries.
Honest simplifications. (1) The collision distance is a free parameter, usually far larger than real objects (a 10 m satellite pair is about 0.01 km); the readout "real-size equivalent" scales the collisions down by (0.01 km / d)^2. Real risk per object is tiny. (2) Orbits are circular and two-body: no J2 precession, no eccentricity, no solar pressure. Fragments are put on circular orbits with a random plane and a few percent change in radius instead of a full velocity-change model. (3) Collisions always destroy both objects; real impacts range from a scratch to a break-up. (4) Objects are all the same size, except the tracked satellites with three times the radius. (5) Sizes in the 3D view are exaggerated and the time warp is large.
Checks run in the page. RK4 orbit period against the formula; energy drift; circular speed; mean relative speed of random pairs against 4/3 v; and simulated collision counts against the kinetic-theory prediction for a thin shell (two seeds) and a thick shell.