Last edited 10May03 by
Jump to my Public directory.


An Attempt at a Real-Life Simulation of the Mechanics of Billiard Balls


This program attempts to simulate the game of pool, incorporating the laws of physics and mathematics that govern the motion of billiard balls on a table. Concepts such as the conservation of energy, the conservation of linear momentum, and the conservation of angular momentum are key to the realism of the simulation. Using those concepts, this program calculates characteristics of balls such as position, velocity, and acceleration after a shot is made. The simulation of a shot is created from the results of these calculations.

Summary of Math and Physics Involved

SHOT: To interpret the result of a shot, it is important to understand impulse. Using the concept of impulse and Newton's Second Law, as well as some other equations such as Hooke's Law, I can calculate the initial velocity of the cue ball based on how far back the cue is drawn. Click here to learn more.

BALL IN MOTION: Once the ball is moving along the table with a constant velocity, it begins accelerating under the frictional force of the felt. Using Newton's Second Law once again, but this time as it is applied to forces of sliding and rolling friction, I can calculate the both the translational and rotational acceleration of the ball, and the exact time in which it enters a natural roll. Click here to learn more.

COLLISIONS DETECTION: To detect collisions between balls or between a ball and a rail, I use the mathematics behind the vector equation of a line to represent the position of a ball at any time t. I can check to see if this line comes within two radii of another ball, or within one radius of a rail. Click here to learn more.

COLLISIONS: If a collision does in fact occur, I calculate the resulting velocity vectors as they would be immediately after the collision, using physics concepts such as conservation of energy and momentum, an dmathematical concepts such as vector addition, subtraction, and dot products. Click here to learn more.


Some notes on the implementation of my program will be added here.


to come ...