Advertisement

glm's angleAxis function creates identity quaternion if angle 0 is passed

Started by September 15, 2012 09:07 AM
1 comment, last by Aitorman 12 years, 5 months ago
Hello there!
In my game I have a vec3 that points from the camera to an object i want the camera to follow, so I use this to get the camera's orientation quaternion:

this->cameraRot=glm::angleAxis(0.0f,vector);

If i understand that function correctly, when passing a vector (0.0f,0.0f,-1.0f) for example, it should create a quaternion that orientates the camera to point directly into the depth of the screen with no roll, and for example, with a vector (1.0f,0.0f,0.0f), it should orientate the camera to the right, with no roll too. But i don't know why, that function only creates a quaternion different from the identity quaternion if I pass a value different from 0 to the angle. Why does this happen?
Thanks in advance, Aitor
No, your understanding is off. Angle-axis rotation generates rotation about the given axis, by the given angle. If you don't specify an angle, you'll always get identity back. This is because rotation a zero angle, be it about any axis, of course does not rotate at all.

What you are thinking about is the LookAt rotation. I am not sure what the function signature in glm is, but I'm sure they have a similar function. Use a LookAt rotation to orient one direction vector to face towards another vector.
Advertisement
Thank you! My way of thinking seems silly now that I understand what it really does, corrected!

This topic is closed to new replies.

Advertisement