B3DRotation negated problem

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

B3DRotation negated problem

Nicolas Cellier-3

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 ?


Reply | Threaded
Open this post in threaded view
|

Re: B3DRotation negated problem

Andreas.Raab
Hi Nicolas,

Good catch. I think the operation should be called #reversed (e.g.,
reversing the angle/axis of operation).

Cheers,
   - Andreas

nicolas cellier wrote:

> 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 ?
>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: B3DRotation negated problem

Nicolas Cellier-3
Le Mercredi 08 Février 2006 02:52, Andreas Raab a écrit :
> Hi Nicolas,
>
> Good catch. I think the operation should be called #reversed (e.g.,
> reversing the angle/axis of operation).
>
> Cheers,
>    - Andreas

I agree