C++ 摄像机上下旋转限制为45度

C++ 摄像机上下旋转限制为45度,c++,graphics,glut,C++,Graphics,Glut,我试图限制我的相机上下旋转,这样它最多只能上下移动45度 Vector3 forwards(0, 0, -1); Vector3 up(0, 1, 0); Vector3 rights = forwards.crossProduct(up); Vector3 position(0, 0, 0); switch (special_key) { case GLUT_KEY_RIGHT: forwards.rotateArbitrary(Vector3::UNIT_Y_PLUS,

我试图限制我的相机上下旋转,这样它最多只能上下移动45度

 Vector3 forwards(0, 0, -1);
 Vector3 up(0, 1, 0);
 Vector3 rights = forwards.crossProduct(up); 
 Vector3 position(0, 0, 0);

switch (special_key)
{
case GLUT_KEY_RIGHT:

    forwards.rotateArbitrary(Vector3::UNIT_Y_PLUS, 0.1);
    rights.rotateArbitrary(Vector3::UNIT_Y_PLUS, 0.1);
    break;
case GLUT_KEY_LEFT:
    forwards.rotateArbitrary(Vector3::UNIT_Y_PLUS, -0.1);
    rights.rotateArbitrary(Vector3::UNIT_Y_PLUS, -0.1);
    break;
case GLUT_KEY_UP:
    forwards.rotateArbitrary(rights, 0.1);
    up.rotateArbitrary(rights, 0.1);
    break;
case GLUT_KEY_DOWN:
    forwards.rotateArbitrary(rights, -0.1);
    up.rotateArbitrary(rights, -0.1);
    break;
    // add more cases here
}

glLoadIdentity();
Vector3 look_at = position + forwards;
gluLookAt(position.x, position.y, position.z,
    look_at.x, look_at.y, look_at.z,
    up.x, up.y, up.z);

你到底是怎么做到的?是什么让你陷入困境?谢谢,但我能够得到它如果你找到了解决方案,那么请在这里创建一个答案,以帮助有类似问题的其他人,并创建一个很好的Q/a对。