[Numpy-discussion] Quaternion dtype for NumPy - initial implementation available

Charles R Harris charlesr.harris at gmail.com
Fri Jul 29 15:52:48 EDT 2011


On Fri, Jul 29, 2011 at 11:07 AM, Martin Ling <martin-numpy at earth.li> wrote:

> On Fri, Jul 29, 2011 at 09:14:00AM -0600, Charles R Harris wrote:
> >
> >    Well, if the shuttle used a different definition then it was out there
> >    somewhere. The history of quaternions is rather involved and mixed up
> with
> >    vectors, so it may be the case that there were different conventions.
>
> My point is that these are conventions of co-ordinate frame, not of
> different representations of quaternions themselves. There's no two
> "handednesses" of quaternions to support. There are an infinte number of
> co-ordinate frames, and a quaternion can be interpreted as a rotation in
> any one of them. It's a matter of interpretation, not calculation.
>
> >    It might also be that the difference was between vector and
> >    coordinate rotations, but it is hard to tell without knowing how
> >    the code actually made use of the results.
>
> Indeed, this is the other place the duality shows up. If q is the
> rotation of frame A relative to frame B, then a vector v in A appears
> in B as:
>
>        v' = q * v * q.conjugate
>
> while a vector u in B appears in A as:
>
>        u' = q.conjugate * u * q
>
> The former is often thought of as 'rotating the vector' versus the
> second as 'rotating the co-ordinate frame', but both are actually the
> same operation performed using a different choice of frames.
>
>
They are different, a vector is an element of a vector space independent of
coordinate frames, coordinate frames are a collection of functions from the
vector space to scalars. Operationally, rotating vectors is a map from the
vector space onto itself, however the  coordinates happen to be the same
when the inverse rotation is applied to the coordinate frame, it's pretty
much the definition of coordinate rotation. But the concepts aren't the
same. The similarity between the operations is how covariant vectors got to
be called contravariant tensors, the early workers in the field dealt with
the coordinates.

But that is all to the side ;) I'm wondering about the history of the
'versor' object and in which fields it was used.

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20110729/074d3f04/attachment.html>


More information about the NumPy-Discussion mailing list