Finding Collision Angles in Pool Ball Refraction

  • Thread starter Thread starter Kristy234
  • Start date Start date
  • Tags Tags
    Balls Refraction
Click For Summary

Discussion Overview

The discussion revolves around calculating collision angles in a pool game simulation, specifically focusing on how balls interact upon collision. Participants explore the mechanics of ball movement, energy transfer, and the mathematical angles involved in these interactions.

Discussion Character

  • Technical explanation
  • Mathematical reasoning
  • Homework-related

Main Points Raised

  • One participant seeks assistance in determining the angle at which a moving ball collides with a stationary ball, emphasizing the need for the output angle to match the input angle.
  • Another participant suggests that in a head-on collision, the first ball should stop while the second continues in a straight line, but acknowledges that energy transfer occurs in non-head-on collisions.
  • A different perspective proposes drawing a perpendicular line between the centers of the two balls to determine the collision angle, likening it to how balls bounce off cushions.
  • One participant describes the challenges of working with coordinates and the need to calculate angles based on the (x,y) positions of the balls and their movements.
  • A participant shares a code snippet in Visual Basic 6, detailing their approach to detecting collisions and calculating angles, while expressing uncertainty about the implementation.
  • Another participant provides a link to a resource that contains relevant trigonometric information for solving the problem.

Areas of Agreement / Disagreement

Participants express differing views on the mechanics of ball collisions, particularly regarding energy transfer and the resulting movement of the balls. There is no consensus on the best approach to calculate the collision angles.

Contextual Notes

Participants mention various assumptions about the nature of collisions, such as the conditions under which balls stop or continue moving, and the mathematical methods required to calculate angles based on their positions. The discussion reflects a reliance on specific definitions and conditions that may not be universally agreed upon.

Kristy234
Messages
10
Reaction score
0
Hi, I'm currently working on a game of pool/snooker. Its all going great, but i have this problem when the balls hit each other. I can get them to bounce off the walls correctly, but that's because the walls are either vertical or horizontal...hitting a ball is more difficult.
At the moment, when a collision is detected, i need to find the angle that it hits against the tangent of two balls. I then need to alter this angle so that the output angle is the same as the input angle. Can anyone help with this? (I'm using Visual basic 6 if that's any help)
Thankyou
 
Technology news on Phys.org
Do you mean hitting another stationary ball?
Then it shouldn't bounce off - the other ball should continue in a straight line in the direction the first one was going, the first one should stop at the point of contact.
 
mgb_phys said:
Do you mean hitting another stationary ball?
Then it shouldn't bounce off - the other ball should continue in a straight line in the direction the first one was going, the first one should stop at the point of contact.

With your logic, only one ball would be moving on the table at anyone time. The ball would continue in a straight line and the other would stop only if it was hit head on. my main problem is when it kinda clips the ball so that some of the energy is transferred into the other ball but some also remains.
 
Yes, sorry was thinking of another problem I'm working on at the same time!
Draw a line between the centres of the two balls, in the middle of this draw a line at right angles. The ball bounces off this line exactly as it would from a cushion.
 
Yes, that is what I'm trying to do, however it is a little difficult as I'm working on coordinates. Each ball has an x and y position and moves a certain x and y every say millisecond. So i need to find the angle that it collides with, and all i have is an (x,y) position of ball1, and an (x,y) position of ball2, as well as the width and height of the ball, and the (x,y) that it moves by.
 
So far this is what i have...I've commented it heavily because i don't know if you are familiar with vb6. 'n' represents a ball in an array, it is the ball that is originally moving. 'm' represents each other ball to test for a collision.

For m = 0 To 15 '(m is the variable for the array, so for all balls)
If (ball(m).Left - ball(n).Left) ^ 2 + (ball(m).Top - ball(n).Top) ^ 2 <= (ball(n).Width) ^ 2 And m <> n And (ball(m).Left - ball(n).Left) ^ 2 + (ball(m).Top - ball(n).Top) ^ 2 > 0 Then '(basically, if it has collided)
Dim alpha, beta, gamma As Double '(just some angles to use)
alpha = theta(n) '(theta(n) is the angle that the moving ball is traveling at)
'(then i try to define some angles...its hard to show how i got this without a diagram, but hopefully you will understand it)
If Abs(ball(m).Top - ball(n).Top) <> 0 Then
beta = Atn(Abs(ball(m).Left - ball(n).Left) / Abs(ball(m).Top - ball(n).Top))
Else
beta = 0
End

s(m) = s(n) '(s is just the speed, so transfer all the speed...i do this at the moment just for experimental purposes until i can get the rest of it working)

'(this is my attempt at getting the set correct angle)
theta(m) = 180 + alpha - 2 * beta '(theta(m) is the angle that the hit ball needs to travel at)
Y(m) = Sin(theta(m)) '(the y distance it should move every millisecond)
X(m) = Sin(90 - theta(m)) '(the x distance it should move every millisecond)

End If
Next

It's a bit messy, sorry.
 
Last edited:
http://www.cc.uoa.gr/~ctrikali/aplets_web/fysiki_i/collisions.pdf" contains the trig you need to solve this.
 
Last edited by a moderator:
Thanks, that really helped :)
 

Similar threads

  • · Replies 11 ·
Replies
11
Views
2K
  • · Replies 5 ·
Replies
5
Views
4K
  • · Replies 14 ·
Replies
14
Views
4K
Replies
8
Views
2K
Replies
2
Views
1K
  • · Replies 11 ·
Replies
11
Views
1K
Replies
1
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 10 ·
Replies
10
Views
3K
Replies
24
Views
4K