Stacked Ball Drop (3D physics simulation)

Drop a stack of balls and watch the top one rocket up: event-driven collisions, restitution, mass ratio, planets, live energy and velocity graphs.

Switch to 2D

Presets

Playback

Stack

Number of balls, how fast the mass falls off up the stack, and the ball size.

Collisions

Restitution 1 = perfectly elastic.

Drop

Height and gravity (try the Moon or Jupiter).

Speed

Slow motion shows the collision order.

Camera

Layers

Quality

Model checks

The science

What happens

Stack balls of decreasing mass, heaviest at the bottom, and drop them together from height h. All balls reach the floor with the same speed V = sqrt(2 g h). The bottom ball bounces first and meets the next ball while that one is still falling, so the collision is head-on at a closing speed of about 2V. Each ball in turn passes speed up the stack, and the lightest ball can leave much faster than it arrived.

Equations

Free flight: z(t) = z0 + v t - g t^2 / 2. Between two balls the gravity terms cancel, so the contact time is t = gap / (v_lower - v_upper).

One head-on collision with restitution e (momentum conserved, v2' - v1' = -e (v2 - v1)):

v1' = (m1 v1 + m2 v2 + m2 e (v2 - v1)) / (m1 + m2), v2' = (m1 v1 + m2 v2 + m1 e (v1 - v2)) / (m1 + m2)

Two balls, all elastic, ball 1 bouncing up at +V and ball 2 still falling at -V: v2' = V (3 m1 - m2) / (m1 + m2). When m2 << m1 the top ball leaves at 3V, so it rises to (3V)^2 / 2g = 9 h. Each extra light ball on top can multiply the speed again, up to (2n - 1) V for n balls in the ideal limit.

Honest simplifications

Collisions are instantaneous and ideal (constant coefficient of restitution, no spin, no air drag, perfectly vertical motion, one collision at a time in order from the floor upwards). Real balls of finite stiffness collide for a few milliseconds, the contacts overlap in time, and a real stack never lines up perfectly, so measured gains are lower than the ideal numbers. Radii follow the masses at a fixed density and only affect the geometry (contact heights). The simulator is event-driven, so it does not depend on a time step.

Checks in the page

Check 1 compares the simulated top-ball launch speed with the closed-form chain of collisions (and with (3 - q)/(1 + q) for two ideal balls). Check 2 verifies energy conservation for elastic balls (never energy gain otherwise). Check 3 verifies that the drawn meshes sit at the model heights and that the first impact happens at sqrt(2h/g).

Loading model...
Loading Blender model...
Height of every ball
Velocity of every ball
Kinetic, potential and total energy
Rise multiplier of the top ball vs mass ratio (ideal chain)
Made with 🟠 Blender · Three.js