Jump to content
  • Advertisement


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


Balls rolling with friction

This topic is 5736 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
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.

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!