Why the Cue Ball Always Leaves at a Right Angle
Doug told me the rule before he explained it: hit a ball dead-centre with no spin, and the cue ball rolls off at a right angle to the object ball. Every time. He drew the two paths in chalk dust on the rail and let me not believe him for a while.
He’s right, and the reason is a single line of arithmetic. When two balls of equal mass collide elastically, all the motion along the line joining their centres transfers to the object ball. Whatever’s left — the sideways part — stays with the cue ball. Split one velocity into two perpendicular pieces and you’ve solved the whole collision. That splitting is vector projection, and it’s exactly what a collision routine computes for each contact.
Project the incoming velocity onto the unit normal (the line of centres), hand that component to the object ball, keep the remainder:
collide <- function(v, n) {
n <- n / sqrt(sum(n^2)) # unit line of centres
along <- sum(v * n) * n # goes to the object ball
list(object = along, cue = v - along)
}
r <- collide(c(1, 0), c(cos(pi/6), sin(pi/6)))
cat("object:", round(r$object, 3), "\n")
cat("cue: ", round(r$cue, 3), "\n")
object: 0.75 0.433
cue: 0.25 -0.433
The same steps in Pascal, which is roughly the vintage of the first desktop physics I ever poked at — the dot product of the two outgoing vectors is the proof:
program Stun;
const pi = 3.14159265358979;
var vx, vy, nx, ny, d, ox, oy, cx, cy: real;
begin
vx := 1; vy := 0;
nx := cos(pi/6); ny := sin(pi/6);
d := vx*nx + vy*ny; { project onto normal }
ox := d*nx; oy := d*ny; { object ball leaves along it }
cx := vx-ox; cy := vy-oy; { cue keeps the tangent }
writeln('dot: ', (ox*cx+oy*cy):6:3)
end.
It prints dot: 0.000. A zero dot product means the outgoing paths are perpendicular — the 90° Doug chalked onto the rail, falling out of v - (v·n)n with no trig about angles anywhere in it.
The caveat lives in the word no spin. Follow, draw, and side all inject angular momentum the projection knows nothing about, which is precisely why they’re worth learning. The right angle is the honest baseline you deviate from on purpose. Tomorrow I’ll try to deviate on purpose and mostly won’t.