- #1
REEPER
- 3
- 0
Greetings to all
I apologise if this has already come up before, I found many related topics on these forums but nothing dealing with my specific problem (providing it is due to a physics error and not a programming one).
I'm currently in the midst of programming the physics part of a Billiards simulation. I've found this link http://archive.ncsa.uiuc.edu/Classes/MATH198/townsend/math.html to be quite helpful, but I've run into problems with basic ball movement.
I can determine when the ball begins rolling naturally and adjust the friction coefficients accordingly, but from what I've read the velocity of the point on the ball in contact with the table is zero when rolling naturally(which makes sense). So, instead of using the perimeter velocity at the point of contact to determine the frictional force direction (normalise + invert), I just use the individual linear and angular velocity vectors in order to calculate the corresponding frictional force and torque. I do this by taking the velocity at the point of contact ( angular or linear ), normalising and inverting it, and then scaling it by the ball's mass, gravitational acceleration and rolling friction (0.01), in the case of angular velocity I then calculate the corresponding torque.
My problem is that when I test my code, the rotational and translational motion don't match up, the rotation diminishes faster than the translational movement (so that the ball appears to slide just before stopping). I'm at a loss as to why this would be the case so I'm guessing I'm not correctly calculating the frictional forces. To reiterate I use the methods outlined in the article I pasted (there appears to be an error in article for calculating the torque due to friction, the radius(value, not the vector) shouldn't be used to calculate the force, I think)
Thanks in advance for all and any help,
Richard.
I apologise if this has already come up before, I found many related topics on these forums but nothing dealing with my specific problem (providing it is due to a physics error and not a programming one).
I'm currently in the midst of programming the physics part of a Billiards simulation. I've found this link http://archive.ncsa.uiuc.edu/Classes/MATH198/townsend/math.html to be quite helpful, but I've run into problems with basic ball movement.
I can determine when the ball begins rolling naturally and adjust the friction coefficients accordingly, but from what I've read the velocity of the point on the ball in contact with the table is zero when rolling naturally(which makes sense). So, instead of using the perimeter velocity at the point of contact to determine the frictional force direction (normalise + invert), I just use the individual linear and angular velocity vectors in order to calculate the corresponding frictional force and torque. I do this by taking the velocity at the point of contact ( angular or linear ), normalising and inverting it, and then scaling it by the ball's mass, gravitational acceleration and rolling friction (0.01), in the case of angular velocity I then calculate the corresponding torque.
My problem is that when I test my code, the rotational and translational motion don't match up, the rotation diminishes faster than the translational movement (so that the ball appears to slide just before stopping). I'm at a loss as to why this would be the case so I'm guessing I'm not correctly calculating the frictional forces. To reiterate I use the methods outlined in the article I pasted (there appears to be an error in article for calculating the torque due to friction, the radius(value, not the vector) shouldn't be used to calculate the force, I think)
Thanks in advance for all and any help,
Richard.
Last edited: