Piotr created MATH-1634:
---------------------------

             Summary: Quaternion representation of Rotation is incorrect
                 Key: MATH-1634
                 URL: https://issues.apache.org/jira/browse/MATH-1634
             Project: Commons Math
          Issue Type: Bug
    Affects Versions: 3.6
            Reporter: Piotr
         Attachments: image-2021-10-22-13-12-53-900.png

Rotation is internally represented using quaternions. This representation is 
not correct in terms of quaternion values, though aparently the Rotation object 
behave correctly when it is constructed using angles or axes.

For example, consider following rotation:

Rotation r2 = {color:#000080}new {color}Rotation({color:#000080}new 
{color}Vector3D({color:#0000ff}0{color},{color:#0000ff}0{color},{color:#0000ff}1{color}),
 Math.{color:#660e7a}PI{color}/{color:#0000ff}2{color}, 
{color:#660e7a}VECTOR_OPERATOR{color});

It describes a counter-clockwise rotation around Z axis by 90 degrees, similar 
to the example given here:

[https://commons.apache.org/proper/commons-math/javadocs/api-3.6/org/apache/commons/math3/geometry/euclidean/threed/RotationConvention.html#VECTOR_OPERATOR]

Such rotation should transform vector (0,0,1) into (0,1,0).

The values of quaternions for this rotation are:

!image-2021-10-22-13-12-53-900.png!

(recall that 0.7071 is approximately sqrt(2)/2)

Performing the rotation using quaternion algebra, corresponds to:

p = (1,0,0) = i

f(p) = q p q^(1) = (q0 + q3*k)*i*(q0 - q3*k) = -j = (0, -1, 0)--

where, i, j, k are imaginary unit vectors corresponding to axes x,y,z 
respectively.

You can visualize quaternions here:

[https://eater.net/quaternions/video/intro]

to see that in fact these quaternion values would produce rotation by - 90 
degrees around Z axis.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to