The Math and Physics of Billiards
For the purposes of my program, I am equating the motion of drawing the cue back
to that of pulling on a spring. This assumes that the distance the cue is drawn
away from the cue ball is directly proportional to the desired power of the shot,
which is usually the case. Using Hooke's Law, which describes the motion
of a spring with the equation F=-kx , I can calculate the force applied to
the cue ball using the distance back the cue is drawn.
Given the force applied to the cue ball, there are two quantities I must calculate
in this stage of the simulation. The first is the initial velocity of the ball
that results from the hit. To calculate this, I use Newton's Second Law, given by
Using Hooke's Law, I use an adaptation of this equation derived below:
Since, for the purposes of the shot, we can assume the initial velocity of the cue
ball is zero, this equation becomes
The quantity Δt in this equation is the amount of time the cue is in
contact with the ball, a quantity which I assume to be relatively constant and on
the order of 10 milliseconds. The quantity m is the mass of the cue ball,
usually around .5 kg; and the quantity k is the spring constant from
Hooke’s Law, which I arbitrarily assign a reasonable value (around 10 kg·m/s2).
The vector x is the difference between the cue ball and the tip of
the cue after it is drawn back.
Besides the initial translational velocity of the cue ball, there is also a
rotational aspect of the ball’s movement that I must take into account. Anybody who
has ever played a game of pool knows the importance of applying spin to the cue ball.
Therefore, the second quantity I must calculate is the angular velocity of the cue ball.
To do this, I need to know not only how far back the cue ball is drawn, but also where
the cue ball is hit with respect to its center of mass. For example, assume the circle
below is a lateral view of the cue ball.
If the small circle is the center of the cue ball (i.e. the center of mass), and the
ball is struck where the cross is, the ball will have an initial angular velocity
(top spin”) that will affect the ball’s movement across the table as well as its
collision with any other ball.
To calculate the initial angular velocity, I use the concepts of rotational motion
and another adaptation of Newton’s Second Law, given by the equation:
In this equation, τ(torque) is the rotational equivalent to force,
and is given by the equation
Just as the cue must apply force to the ball to give it an initial velocity, the cue must
apply torque to the ball to give it an initial rotation. The r in this equation
represents the radius from the center that the cue ball was struck. Similarly, the moment
of inertia of the cue ball is the rotational equivalent of its mass, and is given by
Just as the force must overcome the mass of the ball in order to move it, the torque must
overcome the rotational inertia of the ball to rotate it. The R in this equation
represents the radius of the cue ball itself. These equations can be combined and manipulated
as shown below:
Since I can assume that the angular velocity is zero before the shot is made, this equation
The quantities in this equation are identical to those in the equation for linear velocity
given above, with the exception of the r and R, which I explained above.
Using these equations, I can calculate the initial linear and angular velocities of the cue ball
after the shot is made. This completes the first stage of my simulation.
BALL IN MOTION
Once the ball has an initial linear and angular velocities, it begins to move across the table.
After it leaves the tip of the cue, the only force acting on the cue ball is the force of friction
from the felt. The purpose of this stage of the simulation is to continually update those velocity
vectors according to this frictional force.
There are a couple important concepts that must be realized at this stage in the simulation. The
first is that the ball is not always rolling. Immediately after it is struck, it slides along the
felt for some period of time. How far it slides depends on its initial velocity and spin. The second
is that the force of friction is not being applied through the ball’s center of mass. It is actually
being applied along the ball’s perimeter, and so it becomes necessary to calculate the ball’s perimeter
The exact point at which a sliding ball becomes a rolling ball is given by the equation
In this equation, vp is the perimeter velocity of the ball at its contact point with
the felt, R is the radius of the ball, and ω is the angular velocity of the ball.
The perimeter velocity of the ball at the point of contact with the felt can be calculated using
where R is the vector extending from the center of the ball to the point of contact with
To deal with friction, I use Newton’s Second Law again. This time, however, I am dealing with
the force of friction instead of the force applied by the cue. The force of friction is given by the
In this equation, μs is the coefficient of sliding friction (on the order or .2),
m is the mass of the ball, and g is the force of gravity. Since the direction of this
force is opposite the perimeter velocity, we can modify this equation to represent the frictional force
Combining this with Newton’s Second Law, we can get an equation for the change in the linear and
angular velocity of the ball. The change in linear velocity is derived below:
Similarly, we can derive a formula for the change in angular velocity:
By combining these equations, I can calculate the velocity a certain time later using the initial linear
and angular velocity vectors. However, these equations only apply to a sliding ball. A rolling ball
behaves similarly, but with a different coefficient of friction: the coefficient of rolling friction,
μs. The coefficient of rolling friction is significantly smaller than the
coefficient of static friction, on the order of .01.
I know whether the ball is sliding or rolling using the condition stated above. Using this information,
I can calculate velocity changes during a given time step. This completes the second stage of my simulation.
To detect collisions between two balls or between a ball and a rail, I use the vector equation of a line
to describe the position of a given ball at a given time:
In this equation, r represents the position of the ball, with r0 being the
initial position; and v represents the velocity of the ball. For collisions between two balls,
I construct a position equation for each ball and calculate at what times they will be two radii apart.
This uses the distance formula, and the math is shown below.
To simplify things, I make the following assignments:
The equation above now simplifies to:
Using the quadratic formula, I can easily solve for t:
This process is similar for collisions between balls and rails, but instead I calculate the difference
between the ball and the rail and set it equal to R (not 2R).
Using the times calculated, I can determine if a collision is going to occur within a given amount of
time. If so, I move the balls to the time of that collision and recalculate their velocity vectors before
If a collision is detected, I must recalculate the velocity vectors of the balls involved. This stage of
the simulation is the most complex, and requires concepts such as conservation of energy,
conservation of linear momentum, and conservation of angular momentum.
For collisions between balls, the first step is to calculate the normal to the collision plane. This is
along the line between the centers of the two balls, so the easiest way to calculate it is to normalize
the difference between the position vectors of the two balls.
The next step is to divide each velocity vector into a normal component and a tangential component. The
normal component for ball 2 will be in the direction of the normal vector, and the normal component for ball
1 will be in the direction opposite the normal vector. The magnitude of these normal vectors can be calculated
using the dot product, as shown below.
Once I’ve calculated the normal components of their velocity vectors, I can calculate the tangential components
using vector subtraction:
During the collision, the tangential velocity components do not change. Using the normal components, I can
treat the collision as 1-dimensional. This is depicted in the example below. The red arrows represent the
velocity vectors immediately before the collision. The blue arrows represent the normal components of those
vectors and the green arrows represent the tangential components of those vectors. The black dotted line is
the collision plane.
To deal with the one-dimensional collision, I once again use Newton’s Second Law in yet a different
form, derived below:
The quantity mv is the linear momentum of the ball, denoted by the letter p. Since there is no
net linear force on the two balls during the collision, Δp is 0. This is the concept known as
conservation of linear momentum, which states that the total momentum of a system will remain constant
in the absence of an outside force. From this, I obtain the following equation:
Since the masses of all the balls are identical, we can cancel out the mass terms, yielding the equation above.
Using the conservation of kinetic energy, we can solve for v1' and v2'.
This equation yields two possible solutions, only one of which is practical. Therefore, assuming total
elasticity in the balls,
Now I return to the 2-dimensional collision problem above. Since the normal velocity vectors can simply be
exchanged, the velocity of each ball immediately after the collision can be obtained by adding the tangential
velocity to the normal velocity of the ball it collides with. This is shown below (the red arrows now represent
the velocity vectors immediately after the collision).
The red vectors in the diagram on the right can be calculated using the equations below:
Now that I’ve handled the linear aspect of the collision, I have to consider the rotational aspect of it.
The concepts are similar, but must now concern angular momentum and angular velocity instead of linear momentum
and linear velocity. Angular momentum is denoted by L and defined below:
A rotational equivalent to the version of Newton’s Second Law given above yields the equation:
However, the net torque during the collision is not zero because of the friction between the balls. Calculating
the torque applied by this frictional force requires calculating the perimeter velocities of each of the balls at
the point of collision. This is similar to the way I calculated the frictional force applied by the felt in stage
2, with some slight changes. There is a different coefficient of friction, μb, which I will
assign to be the coefficient of friction between the two balls (on the order of 0.1). There is also extra
calculation required to determine the direction of the frictional force. Since we are dealing with two perimeter
velocities, we have to find the relative velocity of one with respect to the other. For example, the perimeter
velocity of ball 2 with respect to ball 1 would be given by the equation
In this equation, vectors r1 and r2 are the vectors extending from the centers
of ball 1 and ball 2, respectively, to the point of contact between them. To get the direction of the frictional
force applied to ball 2 by ball 1, I must add this relative perimeter velocity to the tangential velocity of ball 2.
To get the magnitude of the frictional force, I must know the normal force applied to ball 2 by ball 1, which is
proportional to the normal change in momentum of ball 1 (using the impulse-momentum theory given above). All of this
yields the following equation for the frictional force applied to ball 2:
Using this frictional force, I can calculate the change in angular velocity of ball 2 in the same way I did during
stage 2, substituting the proper frictional force. This is shown below.
The exact same calculations can be made for ball 1, allowing me to obtain the change in angular velocity for ball 1
For collisions between a ball and a rail, a similar process is necessary.
Back to the Project Page