在我的OpenGL应用程序中,场景中有一些对象。当我点击其中一个对象时,我希望我的相机能够看向该对象。为此,在确定了被点击的对象后,我计算相机的上下、前后和左右向量,然后需要能够计算相机的俯仰、偏航和滚转角度。然而,我对如何实现这一点感到困惑,所以任何帮助都将是极好的。
这是一个反向计算的问题。从front
向量中,您应该能够相对容易地推导出yaw
和pitch
。
如果您的坐标系将x和z作为地面
yaw = atan2(front.z, front.x);
可以通过将 front
进行归一化并使用 asin 函数来计算音高。
front.normalize();
pitch = asin(front.y);
你实际上并不需要进行所有这些计算。只需使用 glLookAt()
。它接受相机位置,要查看的位置和向上的向量,并相应地定位模型视图矩阵。
如果你真的想走捷径,请看看我对这个问题的回答。