angular momentum and velocity representations
Starting off, torque vectors represent the axis of which rotational force is applied. This vector cross multiplied by any body point vector is the linear force at that point. The magnitude of the new vector (equal to the magnitude of torque vector * magnitude of body point) is the same as the arc length of the path that would be "traveled" by the body point (though since this is just force, it is not really travelling :-)... so arc length divided by radius of arc(magnitude of body vector) = change in radians (magnitude of torque vector)...
Restated: A vector, calculated from application of torque, has a magnitude equal to the radians of rotation.
so proceeding up the chain of integration... acceleration and/or momentum also have the same property that the rotation vectors magnitude is equal to the angle, correct? For that matter, why not represent orientation itself with a vector where |v| = theta? There would not need to be any changes to matrices or quaternions... For each frame, compute vector magnitude (necessary for normalizing vectors to change to matrix or quaternion anyway) and substitute theta with it, then normalize the vector using already computed magnitude to rotate points:
a' = xcos(theta)+a(a.x)(1 - cos(theta) + (a x n)sin(theta)
see: http://mathworld.wolfram.com/RotationFormula.html
where a=vector to point to rotate, n=rotation vector
Is this convention? If not, why?
sin() and cos() are really slow operations.
If you look at how a quaternion is represented, it's very similar to the representation of f(length(axis)) == rotation, where the normalized length of 1.0 means 180 degrees (full pi) rotation. Except the fourth value is stored explicitly, which makes it faster.
If you look at how a quaternion is represented, it's very similar to the representation of f(length(axis)) == rotation, where the normalized length of 1.0 means 180 degrees (full pi) rotation. Except the fourth value is stored explicitly, which makes it faster.
At some point you have to change your torque vector into a quaternion then, which calls for a sin, cos, sqrt anyway. Of course that calculation is only done when torque is applied.
Quote:Original post by coder0xffIf I'm not mistaken, you can apply forces and integrate angular effects without use of trig functions or square roots (see Baraff). I'm not a physics pro so I could be wrong about this, but I don't remember using any such functions when implementing the methods described in that paper. Rather, the orientation matrix is updated via its derivative, constructed from the cross products of the angular velocity vector and the local basis vectors (via a skew-symmetric matrix). An equivalent formulation for quaternions can also be derived.
At some point you have to change your torque vector into a quaternion then, which calls for a sin, cos, sqrt anyway. Of course that calculation is only done when torque is applied.
(Again, I could totally be wrong about this, but if so there are enough physics experts here that I'm sure the truth will come out :-)
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement