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.


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)

| improve this answer | |
  • \$\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 '11 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 '11 at 16:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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