I want to devide a rotation, which is expressed as a quaternion.
So I am doing it with Quaternion^POWER, where power is lower than 0.
See my question before: here
If I calculate following example with angles in degree for the axes x,y,z = 80,40,20:
Quaternion(w,x,y,z) q = Quaternion(0.671,0.640,0.342,0.153); // is qual to above rotations in degree
q^0.5 //corresponds to sqrt(q)
my result converted in to angles in degree
x rotation: 39,43
y rotation: 16,51
z rotation: 17.16
I would expect:
x rotation: 40
y rotation: 20
z rotation: 10
I am quite sure that my calculation(implementation made in java) is correct I have compared it with the this site (used square): here
Could someone explain this to me? Or could show me my mistake?
Thanks in advance!!
Your results are correct (or at least, I believe they're correct); it's your expectations that are wrong. What you're tripping over is the non-commutativity of rotations; it's one reason why quaternions are generally preferred over e.g. Euler angles (which is what I presume you mean by your 'conversion to angles in degrees'). Seen from a different perspective, the square of the operation 'rotate $45^\circ$ about the X axis, then rotate $45^\circ$ about the Y axis' is not the operation 'rotate $90^\circ$ about the X axis, then rotate $90^\circ$ about the Y axis'; if we call the 45-degree rotations $X_{45}$ and $Y_{45}$ then the first operation is $X_{45}Y_{45}X_{45}Y_{45}$ and the second can be broken down as $X_{45}X_{45}Y_{45}Y_{45}$ (since a 90-degree rotation about the X axis is the same as two successive 45-degree rotations about that axis) — but the middle operations aren't equivalent: $Y_{45}X_{45}\neq X_{45}Y_{45}$.
Your case is just the converse of this - the fact that you can't get the double of a rotation (in Euler angles) by doubling the angles means that you shouldn't expect to be able to halve a rotation by halving the angles.