commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Luc Maisonobe (JIRA)" <>
Subject [jira] Resolved: (MATH-363) please clarify quaternion conventions in org.apache.commons.math.geometry.Rotation
Date Sun, 11 Apr 2010 12:04:41 GMT


Luc Maisonobe resolved MATH-363.

    Resolution: Fixed

The convention has been chosen according to a vectors perspective rather than a frames perspective.
A rotation changes vectors coordinates with respect to frames. If we consider the frame is
fixed and the vector changes (which is the convention we used), then the angle represent the
motion of the vector. If we consider the vector is fixed but the frame is moving, the angle
would represent the motion of the frame. If the vector rotates by theta around vector u, it
is the same as if frame would rotate by -theta around u. Both views may be logical, it really
depends on the context.

In 3D graphics (as well as in spacecraft attitude determination), vectors are mostly fixed
and represent some well determined directions, and rotations are used to get the coordinates
of these vectors in various frames (canonical reference frame, observator frame, light source
frame, object frame ...). In this perspective, our convention seems odd.

In simulation tools, there is only one reference frame but vectors are moving. In this perspective,
out convention is logical.

So I agree this needs to be better explained, but as you guessed we will not change the convention.
I have added a more thorough explanation in the constructor involved. You can find it in the
subversion repository. Could you check it is understandable and explains what happens ?

Fixed in subversion repository as of r932871.
Thanks for reporting this.

> please clarify quaternion conventions in org.apache.commons.math.geometry.Rotation
> ----------------------------------------------------------------------------------
>                 Key: MATH-363
>                 URL:
>             Project: Commons Math
>          Issue Type: Improvement
>    Affects Versions: 2.0
>         Environment: all
>            Reporter: Albert Huang
>            Priority: Minor
> Please clarify which quaternion convention is used in the Rotation documentation, and
provide constructor methods to use alternate quaternion conventions.
> For example, the computer graphics community has standardized on representing a rotation
of angle theta about the unit vector (i, j, k)  with the quaternion
> { cos(theta/2), i * sin(theta/2), j * sin(theta/2), k * sin(theta/2) }
> e.g., any introductory computer graphics textbook referring to quaternions will describe
them in this convention.  This is also the convention appearing on Mathworld, Wikipedia, etc.

> The convention in org.apache.commons.math.geometry.Rotation instead appears to be
> { cos(-theta/2),  i * sin(-theta/2),  j * sin(-theta/2), k * sin(-theta/2) }
> Since I'm not likely to convince you to switch conventions, please at least document
the convention and provide ways to convert from the alternate (this should be trivial?)

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
For more information on JIRA, see:


View raw message