- Home /
Quaternion - Rotate / Unrotate Error
Hi everyone!
I'm trying to unrotate a quaternion, aligning it with the axis, and then rotate it back to where it was originally. But with every iteration it seems to loss precision and just after 20 iterations the rotation dissapears. Here is an example, which is a simplification of my code:
Quaternion rotation = Quaternion.Euler (0f, 90f, 0f);
Debug.Log ("Before: " + rotation.ToString ("F7") + " / Euler: " +
rotation.eulerAngles.ToString());
int iterations = 1;
for (int i = 0; i < iterations; i++) {
var currentRotation = rotation;
rotation = Quaternion.Inverse (currentRotation) * rotation;
rotation = currentRotation * rotation;
}
Debug.Log ("After: " + rotation.ToString ("F7") + " / Euler: " +
rotation.eulerAngles.ToString());
With 1 iteration the output is:
Before: (0.0000000, 0.7071068, 0.0000000, 0.7071068) / Euler: (0.0, 90.0, 0.0)
After: (0.0000000, 0.7071067, 0.0000000, 0.7071067) / Euler: (0.0, 90.0, 0.0)
With 5 iterations:
Before: (0.0000000, 0.7071068, 0.0000000, 0.7071068) / Euler: (0.0, 90.0, 0.0)
After: (0.0000000, 0.7071019, 0.0000000, 0.7071019) / Euler: (0.0, 90.0, 0.0)
With 10 iterations:
Before: (0.0000000, 0.7071068, 0.0000000, 0.7071068) / Euler: (0.0, 90.0, 0.0)
After: (0.0000000, 0.7059279, 0.0000000, 0.7059279) / Euler: (0.0, 90.0, 0.0)
With 15 iterations:
Before: (0.0000000, 0.7071068, 0.0000000, 0.7071068) / Euler: (0.0, 90.0, 0.0)
After: (0.0000000, 0.4714038, 0.0000000, 0.4714038) / Euler: (0.0, 90.0, 0.0)
And finally with 19 iterations
Before: (0.0000000, 0.7071068, 0.0000000, 0.7071068) / Euler: (0.0, 90.0, 0.0)
After: (0.0000000, 0.0000000, 0.0000000, 0.0000000) / Euler: (0.0, 0.0, 0.0)
At the 19th iteration the euler angles becomes zero, and at previous iterations altough the euler angles are still correct, if I rotate a vector with the quaternion its magnitude is changed.
I hope you can help me and sorry for my bad english!
Your answer
Follow this Question
Related Questions
Look at like rotating around y axis 1 Answer
ConfigurableJoint - angular positions (rotation) problem 1 Answer
Make Quaternion affected by float 1 Answer
Rotation of an object with quaternion 1 Answer
Reverse rotations problems... 2 Answers