2014-11-23 3 views
-1

Я пытаюсь изучить основы opengl Glut, и я следую руководству сайта.Движение мыши с перенасыщением

Я не могу понять, как я могу перемещать камеру в пространстве, а не только по двум ординатам.

Не могли бы вы мне помочь?

Я использую функцию glutPassiveMotionFunc (mouseMove).

//MOUSE MOVEMENT---------------------------------------------------------- 

void mouseMove(int x, int y) { 

xOrigin = x; 

// this will only be true when the left button is down 

if (xOrigin >= 0) { 
    // update deltaAngle 
    deltaAngle = (x - xOrigin) * 0.001f; 

    // update camera's direction 
    lx = x + sin(angle + deltaAngle); 
    lz = y - cos(angle + deltaAngle); 

} 
else{ 
    deltaAngle = (x + xOrigin) * 0.001f; 

    // update camera's direction 
    lx = x + sin(angle + deltaAngle); 
    lz = y - cos(angle + deltaAngle); 



    } 
} 

ответ

0

Есть несколько систем координат в OpenGL, координат экрана, глаза координат, мир координат, ...

х и у, вы получаете от функции обратного вызова мыши имеют в виду координаты экрана, которые начинается с (0,0) в верхнем левом углу окна.

Камера, с другой стороны, работает на другом уровне. Вы не указали, какую версию OpenGL вы используете ... но в любом случае вы можете прочитать страницы руководства для gluLookAt(), чтобы узнать больше о системе координат глаз.

Смежные вопросы