I am doing a simulation about moving balls on a surface. There are frictions between different balls and the surface. In the beginning, balls have a linear velocity and an angular velocity (which are independent from each other), then because of the friction, I think the state of the balls should turn from sliding to rolling (if they haven't fully stopped yet). I want to know how to compute the change of the linear velocity and the angular velocity in a time step? Is there a formula for this?


When there is friction $f$ acting on a ball of mass $M$ and radius $R$, the friction delivers both linear impulse and angular impulse to the ball. In a time step $\Delta t$, the change in linear velocity is $$ \Delta v = \frac{1}{m}f\Delta t $$ whereas the change in angular velocity is $$ \Delta \omega = \frac{1}{I}fR \Delta t = \frac{5f\Delta t }{2MR}$$ assuming that you have solid balls with rotational inertia $I=\frac{2}{5}MR^2$.

Note that the above analysis only applies when the non-slipping condition, $v=r\omega$, is not satisfied.

  • $\begingroup$ First of all, thanks for your respond. $\endgroup$ – Yu Wang Nov 10 at 4:56
  • $\begingroup$ First of all, thanks for your response. I still need more detailed descriptions about this since the ball is rotating with an arbitrary angular velocity, which may not be colinear to the linear velocity of the ball, so I need a more detailed description. Thank you. $\endgroup$ – Yu Wang Nov 10 at 5:03
  • $\begingroup$ @YuWang Can you clarify what you mean by “angular velocity...may not be colinear to the linear velocity”? Are you referring to the non-slipping condition I referred to in my answer? $\endgroup$ – Leo L. Nov 10 at 15:24
  • $\begingroup$ What I mean is the angular velocity (rotation of the sphere) is arbitrary. For velocity as (vx,vy,vz) and rotation as either axisangle or quaternion, how to plug them in the formula? In addition, what direction should the friction be? $\endgroup$ – Yu Wang Nov 15 at 18:00

Not the answer you're looking for? Browse other questions tagged or ask your own question.