• Advertisement
Sign in to follow this  

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

This topic is 1952 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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

Share this post


Link to post
Share on other sites
Advertisement
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 [url="http://clb.demon.fi/MathGeoLib/docs/float3x3_LookAt.php"]LookAt rotation[/url]. 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.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement