Jump to content
  • Advertisement

Archived

This topic is now archived and is closed to further replies.

RodX

Balls rolling with friction

This topic is 5561 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

If a pool ball is moving and spinning across the table how does the sliding frictional force between the table and ball effects the velocity and angular velocity of the ball? I know frictional forces apply untill the rolling condition is met (w=vR where v is velocity, R is radius and w angular velocity) but does anyone know how the velocity and angular velocity cahnge to achieve this condition. I assume its something like: if wvr v'' = v + fgm(dt) w` = w - (5/fg(dt))/2RR where v is the inititial velocity, v'' the final velocity, f the sliding friction coefficient, g the gravitational acceleration, m the mass, dt the change in time, w the initial angular velocity, w'' the final angular velocity and R the radius. Does anyone know if this is right or can offer any improvements to the modell?

Share this post


Link to post
Share on other sites
Advertisement
Friction stuff is very complex (for me anyway). For static friction, the ball would start rolling if the tangencial force is greater than the vertical force (usually mass * gravity) times the coefficient of static friction.

|Ft| > u.|Fn|, the ball starts moving, else it doesn''t

|Ft| = sqrt(F.x*F.x + F.z*F.z);
|Fn| = |F.y|

for dynamic friction, I think it''s something like

Ff = -k.Vt

Vt being the tangencial velocity at the point of contact, k being a coefficient. And |Ff| is limited by another coefficient, a bit like static friction (I think it''s a similar coefficient).

so |Ff| <= u.|Fn|

When |Ff| becomes greater, limit it to u.|Fn|. The extra force can be considered as some extra energy dissipated, like generating a loud screeching sound for tires on the road, or heat.

That''s how I modelled the friction in a demo I made, and it gives satisfying results. However, I have to set k to a rather large value, like 200. That doesn''t seem right.

Share this post


Link to post
Share on other sites

  • Advertisement
×

Important Information

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

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!