At a glance
A heavy block slides toward a light block resting between it and a wall. Every impact is perfectly elastic and the floor has no friction, so the sim counts impacts until no more can happen. Explaining that count takes a change of coordinates that turns collisions into reflections.
What you'll learn
- How the number of collisions depends on the mass ratio m₂/m₁.
- How the heavy block's starting speed affects the run.
- How rescaling velocities by √m turns each impact into a reflection.
- How to count collisions by counting mirrors in a wedge of angle θ.
What's on screen
- Light block (blue): m₁ = 1 kg, at rest at the start.
- Heavy block (pink): m₂ = 100ᴺ kg, released leftward at speed v₀.
- Velocity arrows, labelled v₁ and v₂ in m/s: leftward is negative.
- Collisions badge: every impact counts, block–block and block–wall alike.
- Live State panel: kinetic energy and the type of the last impact.
The controls
Press ⌖ on a row to see where that control sits in the sim.
| Control | What it changes | Range | |
|---|---|---|---|
| Mass exponent N | The heavy block's mass, m₂ = 100ᴺ kg. The light block stays 1 kg. Changing N resets the run. | N = 0–3 opens at N = 0 (1 kg) | |
| Heavy block initial speed | How fast the heavy block moves left when released. It sets the starting kinetic energy. Takes effect when a run starts. | 0.20–2.00 m/s opens at 1.00 m/s | |
| Collisions badge | The running count of impacts, block–block and wall. | readout | |
| Live State panel | Total kinetic energy and the type of the last event (block–block, wall bounce or escaping). | panel opens collapsed | |
| ▶ Play / ⏸ Pause | Sends the heavy block in, or freezes both blocks between impacts. | top bar | |
| Speed | How fast the run plays on screen. Only the playback rate changes, not the physics. | 0.5×–4× opens at 1× | |
| ↻ Reset | Puts both blocks back at the start and zeroes the count. It keeps your N and v₀. | top bar |
Fixed: m₁ = 1 kg, frictionless floor, perfectly elastic impacts, a fixed wall on the left.
One impact barely changes the heavy block
A block–block impact conserves momentum and kinetic energy. A wall impact only reverses the light block's velocity.
Rearranged, a block–block impact changes the heavy block's velocity by v₂′ − v₂ = [2m₁/(m₁ + m₂)] (v₁ − v₂). At m₂ = 100 m₁ that factor is 2/101 ≈ 0.02: one impact moves v₂ by about 2% of the relative velocity. The light block must bounce back and forth many times to turn the heavy block around.
A point on a circle holds both velocities
Describe the state by one point with coordinates u₁ = √m₁·v₁ and u₂ = √m₂·v₂.
Since the kinetic energy is ½(u₁² + u₂²), conserving it keeps the point on a circle around the origin. Each impact then reflects the point across a line through the origin:
- a wall impact flips u₁, a reflection in the u₂-axis;
- a block–block impact keeps the part of u along (√m₁, √m₂), the part fixed by the momentum, and flips the rest.
These two mirror lines meet at the angle θ = arctan √(m₁/m₂).
Unfolding the wedge turns the count into mirrors
Reflect the picture instead of the point. The point then moves in a straight line, and the mirrors fan out at θ, 2θ, 3θ, …
Every mirror the path crosses is one impact. It crosses each mirror whose angle kθ is below π; the mirror at kθ = π is parallel to the path. So the number of impacts is the number of whole steps of θ below π:
The ceiling form matters when π/θ is a whole number. For equal masses π/θ = 4 exactly, and the count is 3, not 4.
Digits of π appear with every factor of 100 in mass
For m₂/m₁ = 100ᴺ, tan θ = 10⁻ᴺ. For N ≥ 1, θ is then almost exactly 10⁻ᴺ, and π/θ is just above π·10ᴺ.
These sliders move the sim too.
A hundred times the mass gives about ten times the collisions, because the count is about π/θ ≈ π√(m₂/m₁).
Starting speed sets the clock, not the count
The run ends when no impact is possible. That happens once both of these hold:
- Multiply every velocity by k: energies grow by k², times shrink by 1/k, and the order of the impacts stays the same.
- In the circle picture only the radius changes. The mirrors, and the angle θ between them, depend on the masses alone.
- The run ends without friction: the energy is still there, but the heavy block can no longer be caught.
Where it matters
- Galperin's result. Galperin published this link between collision counts and π in 2003, in a paper titled "Playing pool with π".
- Billiards and hard-particle gases. The rescale-and-unfold trick turns a few hard particles moving on a line into one point bouncing in a polygon. That is a standard way to study such systems.
- Not a way to compute π. N = 10 would need a 10²⁰ kg block and perfectly elastic impacts.
Go deeper: why the digits are exact
- Since arctan x ≈ x − x³/3, π/θ ≈ π·10ᴺ + (π/3)·10⁻ᴺ for N ≥ 1. That is only about 10⁻ᴺ above π·10ᴺ.
- The count ⌈π/θ⌉ − 1 equals ⌊π·10ᴺ⌋ as long as this small push does not carry π/θ past the next whole number. Computing it directly shows it does not for N = 1 to 7. The sim stops at N = 3, where 3141 impacts already play out in about 30 s at 1× and v₀ = 2.00 m/s.
Summary
Key points
- Rescaling by √m puts the state on a circle and turns each impact into a reflection.
- Two mirrors meet at θ, set by the mass ratio alone.
- For m₂/m₁ = 100ᴺ the count is ⌊π·10ᴺ⌋: 3, 31, 314, 3141.
- The starting speed changes the energy and the duration, not the count.
Common mix-ups
- "The blocks stop colliding because energy is lost." No energy is lost. The run ends when v₁ ≥ 0 and v₂ ≥ v₁, so nothing is left to hit.
- "The count is the mass ratio." A hundred times the mass gives about ten times the collisions.
- "A faster heavy block means more collisions." v₀ does not enter θ, so it does not enter the count.
Things to try on your own
- Set N = 1, open Live State and watch Last event through the first few impacts. Watch how block–block and wall impacts take turns.
- Work out π/θ for N = 2 from θ = arctan(0.01), then compare ⌈π/θ⌉ − 1 with the counter.
- Run N = 2 at 0.20 m/s and at 2.00 m/s. Compare the kinetic energies and the final counts.