在我的 OpenGL 应用程序中,我有一个使用键盘(移动)和鼠标(环顾四周)控制的相机。
到目前为止,一切都运行良好,我注意到如果我将相机在 Y 轴上移动到 300 以上,则在移动鼠标时它会开始混乱。例如,如果我转到 Y = 310,然后向上移动鼠标,当它开始向上看时,它也开始向左转动。
我不确定这是什么原因。任何人都可以帮忙吗?
这是为 gluLookAt() 计算向前和向上位置的代码
双cosR、cosP、cosY;//双重sinR,sinP,sinY的sin / cos的温度值;//输入的roll/pitch/yaw
if(Yaw > 359) Yaw = 0;
if(Pitch > 359) Pitch = 0;
if(Yaw < 0) Yaw = 359;
if(Pitch < 0) Pitch = 359;
cosY = cosf(Yaw*3.1415/180);
cosP = cosf(Pitch*3.1415/180);
cosR = cosf(Roll*3.1415/180);
sinY = sinf(Yaw*3.1415/180);
sinP = sinf(Pitch*3.1415/180);
sinR = sinf(Roll*3.1415/180);
//forward position
forwardPos.x = sinY * cosP*360;
forwardPos.y = sinP * 360;
forwardPos.z = cosP * -cosY*360;
//up position
upPos.x = -cosY * sinR - sinY * sinP * cosR;
upPos.y = cosP * cosR;
upPos.z = -sinY * sinR - sinP * cosR * -cosY;