Contents

Two Ball, Corner Pocket

Slip Sliding Away

Slip Sliding Away

When a billiard ball is hit with the cue stick, the ball starts moving across the table. If the ball is struck along its center of mass, the ball is not initially rotating.

However, soon the ball starts rolling along. Friction between the ball and the table causes this roll to occur. You can see this situation in Figure 2.

Figure 2. A billiard ball sliding across the table.

The ball is traveling with the forward velocity, v. In my article "The Trials and Tribulations of Tribology" , I discussed the use of kinetic friction via the Coulomb dry friction model. For our purposes, I'm going to call this force "sliding friction." The force of friction applied to a body sliding over a surface is given by the following formula:


(Eq. 6)

The friction force is applied in the direction opposite the velocity. Since this force is applied to the surface of the ball and not its center of mass, the frictional force causes angular acceleration in the ball. As the ball rolls across the table, the angular velocity increases because of this sliding friction force. This continues until a time of equilibrium is reached, where the velocity of the point contacting the table equals the velocity of the center of mass. At this time, the ball is no longer sliding and is now rolling on the table. This situation is called a natural roll or rolling without sliding. In mathematical terms, this situation happens when


(Eq. 7)

where v is the velocity of the ball, w (LUKE-this is a lowercase omega) is the angular velocity of the ball, and R is the ball's radius.

Now I need to show how the angular acceleration actually changes. This is going to mean bringing up another term, the inertia tensor, or I. You may remember from Chris Hecker's column on 3D physics ("Physics, Part 4: The Third Dimension," Behind the Screen, June 1997) that the inertia tensor relates the angular velocity of a body to the angular momentum of that body. For arbitrarily complex objects, creating the inertia tensor can be quite difficult. However, for a uniform sphere where the density is uniform across the sphere, it's quite easy. The inertia tensor for a sphere is


(Eq. 8)

Therefore, the product of this matrix with any vector is a simple scaling of that vector. The relationship between the angular acceleration and the friction force then becomes


(Eq. 9)

If I now take a look at the problem in Figure 2, I can calculate how long it will take for the ball to achieve natural roll given an initial velocity v. From the principle of impulse and momentum, I know some information about the linear momentum and angular velocity of the ball at a later time.

In other words, the momentum at some later time is the initial momentum minus the impulse created by the friction force, f. I know the friction force from Equation 6.

At the point of natural roll, I know the state of equilibrium between angular and linear velocity from Equation 7.

So you can see that as a result of the friction force of the table, a sliding billiard ball will always reach a point where it is rolling without sliding on the table. This is the type of realism I want to have in the simulation. A ball when struck should slide across the table, slowly settling to a state where it is rolling without slipping.

How Do I Stop This Crazy Thing?

One glaring problem remains. I can run the simulation with all of the physics discussed so far. When struck hard, a billiard ball will slide and then roll. Once the ball has reached this natural roll, there is nothing in my simulation that will keep it from continuing to roll forever. The friction force is gone since the point of contact is not moving relative to the table. I need to add another force that will slow down a rolling ball. I can add another frictional force, called rolling friction, which is applied when the ball is in natural roll. The form of rolling friction is

It is applied exactly like the sliding friction whenever the natural roll conditions apply. It is important to note that the coefficients of rolling and sliding friction are not necessarily the same. Think of a ball moving on a rubber surface. The coefficient of sliding friction would be very high. However, the rolling friction would be comparatively low, allowing the ball to roll across the surface easily.

Bumpin' the Cush

Collision with the table's side cushions can be handled in a couple of ways. If I consider the table to be completely 3D, I will need to handle 3D collision between the ball and the cushion. That would be the most realistic. It would allow the balls to move up and down as well as side to side. This might be interesting if I wanted to be able to perform a jump shot (when the cue ball jumps up and over other balls on the table). However, I'm not really ready to tackle the physical and interface issues involved in making this happen.

If I'm willing to give up the flexibility of allowing the balls to move in 3D, things become a bit easier. For one thing, I can eliminate the gravitational force acting on the ball. A ball sitting on a table is in a constant collision battle with the table top. By getting rid of the gravitational force, I save having to deal with the ball constantly interpenetrating the table. I still need to keep track of the gravitational force as it is used in calculating the friction force applied by the table. However, I just assume the balls are in constant sliding or rolling contact with the table.

Also, if I ignore vertical motion of the balls, I can turn the collision with the side cushions into a 2D computational geometry problem. The boundaries of the table are now line segments and I can use the 2D collision detection routines developed in my article "Crashing into the New Year".

Later, I may wish to allow the balls to jump. It would then be easy enough to convert the collision back to 3D. These kinds of decisions are made all the time during the game production process. Since game simulation is all about speed versus realism, simplifying the problem if it works for your particular application makes sense.

Rack 'Em Up

Using these techniques, I have created a demonstration of a simple pool table. The simulation uses rolling and sliding friction to simulate the way a real billiard ball moves across a table. Collision between balls is handled through conservation of momentum and the elastic collision model. There are several areas that still need work. Of course, I didn't talk about applying "English" to the shot by striking the ball off the center of mass. This technique is what makes shots such as a Masse, draw, or topspin possible. This is largely just a matter of where the impulse from the cue stick is applied. Also, the lack of friction between colliding balls does not allow effects such as collision-induced spin.

Another problem arises when we consider simultaneous collision between several billiard balls. When calculating the resulting force when two balls collide, it was fairly easy to determine the resulting force. However, when several balls collide simultaneously, the law of conservation of momentum becomes much harder to enforce. In order to calculate the resultant forces correctly, I need to solve several simultaneous equations. Obviously, this tends to complicate things quite a bit.

Alas, that will have to wait for another time. Until then, see if you can modify the source code to handle these effects. You can download the source code and the executable application off the Game Developer web site at http://www.gdmag.com/.

For Further Info:

Beer, Ferdinand, and E. Russell Johnston. Vector Mechanics for Engineers: Statics and Dynamics, Sixth Ed. New York: WCB/McGraw-Hill, 1997.

Hecker, Chris. "Behind the Screen," Game Developer (October/November 1996-June 1997). Also available on Chris's web site, http://www.d6.com/.


When not wasting time at the pub eating hot wings and shooting pool, Jeff can be found at Darwin 3D. There he creates real-time 3D graphics for a variety of applications. Drop him a line at jeffl@darwin3d.com.

Discuss this article in Gamasutra's discussion forums.
Discuss this article in Jeff Lander's discussion forums.

 

________________________________________________________

[Back to] Two Ball, Corner Pocket