B3DRotation negated problem

nicolas cellier ncellier at ifrance.com
Wed Feb 8 01:43:05 UTC 2006


I was looking for Quaternion in squeak and found B3DRotation. fine !

But the B3DRotation>>negated did hurt me.
This message is more than questionnable: it is mathematically incorrect.

Of course, if you think of the rotation vector angleInRadians*axis, then the 
opposite rotation vector is either (-angleInRadians)*axis or 
angleInRadians*(-axis), so far so good.

What if you multiply your rotations:

q negated * q, then you obtain the unitary quaternion (1 + 0 i + 0 j + 0 k).

If you multiply any B3DRotation with this unit quaternion, you get your 
original B3DRotation. It is neutral to * operation.

This is definition of the reciprocal, not the negated.

if you could add q to q "negated", you would not get zero (+ can be trivially 
defined in quaternions as in complex). You cannot do that operation 
internally with unit quaternion, but you can with general quaternions.
True quaternion negated is (-a -b i - c j - d k).

There you see how bad it is.

In term of rotation matrix, this operation is the transposed, in term of 
Quaternion this is the conjugated (more exaclty the conjugated negated in 
your implementation), and in term of unit qaternion it is the reciprocal.

Yes but the opposite of my rotation vector ?
Well... try to sum two rotation vectors like 90° around [0 0 1] and then 90° 
around [1 0 0], and tell me what do you get ? certainly not the composition 
of the two rotations... The sum of rotation vectors have no meaning in term 
of rotation except if same axis.

So forget about the negated, call it either reciprocal or conjugated or 
transposed or schtroumph but please not negated.

Who will change that ?




More information about the Squeak-dev mailing list