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
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\$– SkoderMar 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\$– dmaMar 15, 2011 at 16:22