Recently, our physics class engaged in "Venture Capital" projects, in which we had to design our own experiments, carry them out, and report our results to the class. Here is what we came up with...
Vineet Baid, Jeff Hoskinson, and Kevin Tloczynski
Have you ever watched a really good pool player and wondered how they know where to hit the ball? Or have you ever wondered why, even though you have the shot set up just right, it won't go in? These were questions we pondered when we decided our topic for the venture capital project. None of us are very good at pool, and we thought that if we could find out what exactly determines how the balls move, it could improve our game. Originally we were interested in simply discovering the mathematical equations the governed the movement of pool balls on a table; however, investigation into this revealed that a pool table is a chaotic system, and thus a second part of our purpose was to find out the exact nature of this chaotic system.
First of all, we had to put in some time playing some pool so that we could observe the way the balls tend to behave. We were hoping to find some consistent ways the balls behaved. We did come up with some rough ideas, but determined that some research was necessary before beginning our experiment. We had to look through several books on physics before we found a book that even mentioned two dimensional collisions involving objects with an appreciable size. Even then, they were only for when one object was stationary. In short, this part of our experiment involved a great deal of research and testing before we finally came up with a mathematical system that seemed to model reality. See the next section for a more in-depth discussion.
Jeff wrote a program in C++ to model the way the balls should theoretically behave using the equations thus discovered (you can download the program (DOS format) or the C++ source code). The table in this program would be perfect, modeling the movements with no outside influences and allowing an identical setup to be tested with slightly different initial conditions. We compared the behavior of the balls in this program with their actual behavior on Kevin's pool table. We set up an identical shot to the one modeled in the program on the real pool table and repeated it several times. We noticed that, although we kept the conditions as close as possible, the final result was always different.
This is my attempt to explain what happens on a pool table in a mathematical sense, the setup I used to write my program. I assigned each ball a speed and a direction (i.e. a velocity vector). When the ball collided with a wall, I first checked to see if it went into a pocket. If it did, I removed it from the table. If not, I reversed the angle (angle of incidence = angle of reflection). When two balls collided, things became a bit more complicated. What I had to do was subtract the velocity vector of the slower ball from both balls, thus leaving one stationary. Suppose for this example that Ball A collides with a slower moving Ball B. After subtracting the velocity of Ball B from both, it looks like this.
Ball B, the stationary ball, will head off along the line between the centers of the two balls. Ball A will head off at an angle 90° from the direction of ball B. The new velocities will be:angle = angle of collision - angle of Ball A before Ball B = Velocity A before * cos angle Ball A = Velocity A before * sin angle
After this is all calculated, add back in the velocity that was originally subtracted to both balls, and the collision is finished. Repeat for all balls on the table, and you've got a pool simulation. This seems to produce a very realistic simulation.
The first thing we discovered is that none of this information really helps your pool game very much. We determined that the fact that a pool table is a chaotic system makes it very difficult predict where any given ball will end up. Professionals must be very precise in setting up their shots, because a small change could make them miss.