# Rotation from AngleAxis() ToAngleAxis() flips back and forth

I could use some pointers on how Quaternion.AngleAxis() and Quaternion.ToAngleAxis() works.

What I’m trying to do is to rotate a box 90 degrees around the X-Axis each time I scroll the mouse-wheel forwards. Everything works fine until the box have made a full 360 degree rotation, that is 4 forwards on the mouse-wheel, and starts the second ‘lap’ of rotation. Suddenly the box rotates forward one step and when I scroll the mouse-wheel the next time it rotates back to 0 degrees.

Here is the code for picking the angles.

``````if (scroll > 0){
rot = 0f;
Vector3 right = transform.right;
float angle = 0f;

transform.rotation.ToAngleAxis(out angle, out right);
angle = angle + 90f;

startRotation = transform.rotation;
endRotation = Quaternion.AngleAxis(angle, Vector3.right);
}
``````

And the code for the actual rotation

``````if (rot < 1f){
rot = rot + Time.deltaTime * 4f;
transform.rotation = Quaternion.Lerp(startRotation, endRotation, rot);
}
``````

Any suggestions to what’s causing this are very appreciated.

Solved it.
Instead of taking the transform.rotation as start position for the rotation I did the same as with endRotation and used AngleAxis to calculate the start rotation as well.

``````if (scroll > 0){
rot = 0f;
Vector3 right = transform.right;
float angle = 0f;

transform.rotation.ToAngleAxis(out angle, out right);
startRotation = Quaternion.AngleAxis(angle, Vector3.right);

angle = angle + 90f;
endRotation = Quaternion.AngleAxis(angle, Vector3.right);
}
``````