我一直在试图弄清楚本教程中代码的两部分内容:Keyboard and Mouse。OpenGL相机/方向矢量
具体做法是:
// Direction : Spherical coordinates to Cartesian coordinates conversion
glm::vec3 direction(
cos(verticalAngle) * sin(horizontalAngle),
sin(verticalAngle),
cos(verticalAngle) * cos(horizontalAngle)
);
和
// Right vector
glm::vec3 right = glm::vec3(
sin(horizontalAngle - 3.14f/2.0f),
0,
cos(horizontalAngle - 3.14f/2.0f)
);
我没有看到第一个是如何球形 - >直角。当我看到它,我得到:
x = r * sin(theta) * cos(phi)
y = r * sin(theta) * sin(phi)
z = r * cos(theta)
我欧拉角度看,那些轴角和四元数都没有阐明什么该做或者我只是不能够把握什么我正在阅读。 ;)
第二个,右边的矢量不应该是方向矢量的右边90度吗?
你是否将这些值传递给'gluLookAt(...)'或它们是否构成矩阵的基础? “向右90度”泛化不起作用的一个原因是因为它可能与你的向上平行,然后你有一个退化的三维空间。 'gluLookAt(...)'实际上是在计算交叉乘积后重新对基础向量进行了正交化处理,这样输入向上和向前的向量不一定要在90度才能生成工作视图矩阵。 –
在结束位置,向前和向上传递给glm :: lookAt() – stewsims