使用四元数的

时间:2018-05-12 17:31:06

标签: c++ opengl quaternions glm-math euler-angles

我正在尝试在OpenGL中实现第三人称相机。使用欧拉角和基本三角函数,我能够毫无问题地使用它:

float cameraDistance = 10.0f;
float cameraPositionX = sin(targetRotation.y) * cameraDistance;
float cameraPositionY = cos(targetRotation.y) * cameraDistance;

ViewMatrix = glm::lookAt(
    glm::vec3(cameraPositionX, cameraPositionY, 30.0f) + targetLocation,
    targetLocation,
    glm::vec3(0,1,0)
);

问题是当我开始使用四元数来存储目标旋转时。将四元数转换为欧拉角会产生模糊结果,上述代码不再适用。例如,在交叉90度之后,y旋转再次从0开始,但是x和z被翻转,所以我想我还需要在三角学方程中包括x和z,但是我的大脑是微不足道的。有没有办法翻译上面的代码以正确使用四元数?

0 个答案:

没有答案