Pool-Hall Physics

## Question:

I am creating a simple pool game in visual basic 6 for one of my classes. I
had originally decided to use point masses but that is too simple. I found
your page that deals with this problem(http://mcanv.com/p1lmc.html) but
I haven't been able to work out all the bugs yet. I can't seem to figure
out how to find out how to calculate the velocities along the line of sight.
Is it just speed*cos(angle) or is it more involved.
The one example I was
trying to figure out is that I have two balls. One moveing at 180 degrees
and one at 0 degrees. the speed of ball 1 is 10 and ball 2 is 20. when
they collide the angel between the centers is 45. In this case is the
velocity acting through the center for ball 1 just 10*cos(45). That doesn't
seem right since that would give you the x value for a ball moving at 45
degrees. If you could help me with this I would greatly appreciate it.
Thank you for whatever you can offer.

## Answer:

The quick way is to assume that the collision all happens within a single
chronon (time increment). In that case you just monitor the distance
between centers and when it gets down to r1+r2 (the sum of the ball radii)
or less, in that time increment you resolve each velocity into its component
along the line connecting the ball centers (in the line of sight) and its
component perpendicular to that (across the line of sight). Then you apply
the head-on collision rules for the components in the line of sight to yield
the post collision value of that component.
The component across the line of sight can not be affected by the collision
if the balls are frictionless, so that remains the same before and after the
collision for each ball. When you have calculated the post collision in
line of sight velocities, just add them to their across the line of sight
components to get the final post collision velocities.

Of course if the balls have the same mass you only need to exchange the in
line of sight velocities in the collision. If the masses are different use
the formulae:
v1f = v1i * (m1 - m2) / (m1 + m2) + v2i * (2 * m2) / (m1 + m2)
v2f = v1i * (2 * m1) / (m1 + m2) + v2i * (m2 - m1) / (m2 + m1)
where the subscript i denotes before collision velocities and f denotes post
collision.

This information is brought to you by M. Casco Associates, a company
dedicated to helping humankind reach the stars through understanding how the
universe works. My name is James D. Jones. If I can be of more help,
please let me know.

JDJ

## Question:

I'm not sure I know how to resolve the velocities along the line of sight.
If say the angle is 45 degrees and the ball is moving at 90degrees do I just
take the cos(45) to find out what velocity is acting throught the line of
sight? Thanks for what you gave me and anything else you can do.
## Answer:

It sounds like you have it right. The length of the velocity vector times
the cosine of the angle between that vector and the line of sight will get
you the component in the line of sight. Multiply the speed by the sine of
that angle to get the component across the line of sight.