我知道在OpenGL中,我们使用gluLookAt相对于世界放置相机,从而定义要绘制的图像。
"眼睛"指定相机的位置,"中心"指定相机指向的点。一旦我们知道了这两个,我们就可以画一条从眼睛到中心的直线。相机平面将垂直于这条线。
由于我们知道这个平面,向上矢量指定相机的顶部 - 基本上这个平面中的哪个方向是向上的。因此,向上向量始终与连接中心和眼睛的向量正交。
我的问题是,当我们只想知道连接"中心"和"眼睛"的线的旋转角度时,为什么我们需要完整的向量。这背后的原因是我不知道的计算优势吗?如果有人指定了一个错误的向上向量,它与视线方向不正交怎么办?
您传入的向上向量用于指示向上方向,但这与叉积一起使用。我认为gluLookAt的目的是简化用户所需的计算,因此例如,您只需传递(0,1,0)即可指示您想要的向上方向是沿着正Y轴。
如果你想要更好的效率,你可以完全避免gluLookAt。