Jump to content
  • Advertisement
Sign in to follow this  
REEPER

Rolling Billiards Ball: Applying friction

This topic is 3631 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Rolling Billiards Ball: Applying friction (Computer simulation) Greetings to all 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. [Edited by - REEPER on December 28, 2008 10:36:50 AM]

Share this post


Link to post
Share on other sites
Advertisement
because force/mass != force/moment-of-inertia
the linear and angular velocities will want to diverge

but that won't happen because of static friction
which acts as a counterbalancing force
to keep linear velocity = angular velocity * radius

because static friction force > rolling friction force

even though the ball is moving the relative velocity
between felt and ball (when rolling without slipping)
is zero thus static friction comes into play

so the quick answer is to calculate the change in linear velocity
and apply the same change to angular velocity

lvel *= damp;
avel *= damp;

the little r in the document you mentioned has an arrow above it
it is the vector from the ball origin to the point on the perimeter

Share this post


Link to post
Share on other sites
Quote:

because force/mass != force/moment-of-inertia
the linear and angular velocities will want to diverge


Not sure I follow your point but I use the torque/moment-of-inertia to calculate the corresponding deceleration in the angular velocity

Quote:

so the quick answer is to calculate the change in linear velocity
and apply the same change to angular velocity

lvel *= damp;
avel *= damp;


I will try to implement something similar once I have exams out the way, although in the article the derived changes in velocities are incremental.

Vlinear = -(r crossProduct Vangular) is valid in the rolling phase so I would have to transform an incremental change into a multiplicative one (in order to obtain the Vangular change scalar): (Vlinear - delta) / Vlinear * Vangular

Quote:

the little r in the document you mentioned has an arrow above it
it is the vector from the ball origin to the point on the perimeter


I was talking about the capitalised R used in the calculation of the torque (appears out of nowhere in the force part)

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!