Hey, I have a particle that is hit with a force F at a particular position on the ball P. How can I calculate the angular velocity of the X,Y and Z axis? The actual rotating of the object should be fine, but it's the values of the angular velocity (Vector3) that I'm not sure of. Sorry I can't show any code, but I'm not really sure where to start. Thanks for any help.


1 Answer 1


I assume you're already calculating the linear momentum change from the collision so I won't cover that. Essentially, angular momentum works in the same way as linear but with Force replaced by Torque and Mass replaced by Inertia.

dv = T / I

where dv is the change in angular velocity, T is the torque from the collision and I is the moment of inertia which for a sphere is

I = (2/5)MR^2 (solid sphere) I = (2/3)MR^2 (shell)

where M is the mass of the sphere and R is the radius.

The torque, T, is calculated from the cross product of the force with the vector from the collision point to the center of the sphere:

T = F x (P - O)

where O is the center of the sphere.

Putting it all together:

dv = (F x (P - O)) / ((2/5)MR^2)

  • \$\begingroup\$ Thanks a lot. You're right, I've got the linear momentum change working. Am I right in thinking that I would simply add a negative constant to the final equation in order to ensure that it stops spinning over time? \$\endgroup\$
    – Skoder
    Mar 8, 2011 at 0:19
  • \$\begingroup\$ @Skoder Not exactly. Think about how your linear momentum is reduced over time (hint: other forces act on the object like friction and air resistance). You just need to do something similar for the angular momentum. \$\endgroup\$
    – dma
    Mar 15, 2011 at 16:22

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .