Определение углов для осей X, Y и Z в 3D - OpenGL / C ++

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

Я могу успешно нарисовать куб в желаемом месте с помощью gluUnproject - это означает, что я уже знаю координаты, в которых расположен мой куб.

Однако я не знаю, как рассчитать все углы, необходимые для того, чтобы мой куб стал точкой в ​​новом месте.

Конечно, я все еще использую gluUnproject, чтобы найти координаты моего щелчка правой кнопкой мыши, но я знаю только, как для поворота вокруг оси Z с помощью 2D-графики.

Например, раньше, если бы я хотел повернуть четырехугольник вокруг оси Z (конечно, это был бы вид сверху вниз, где ось Z все еще "проходит" экран) в 2D, я бы сделал что-то вроде:

angle = atan2(mouseCoordsY - quadPosY, mouseCoordsX - quadPosX);
glRotatef(angle*180/PI, 0, 0, 1);

Мой вопрос: как мне сделать это в 3D?

  • Нужно ли мне рассчитывать углы для каждой оси, как я сделал выше?
  • Если Итак, как мне рассчитать угол поворота вокруг осей X и Y?
  • Если нет, то какой метод мне следует использовать для достижения желаемых результатов?

Любая помощь приветствуется.

6
задан Jake Lucas 10 November 2010 в 10:04
поделиться