Поворот камеры вверх и вниз ограничен до 45 градусов - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь ограничить вращение камеры вверх и вниз, чтобы ее можно было перемещать только до максимум 45 градусов и до максимум 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);
...