В настоящее время я пытаюсь использовать 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?
- Если нет, какой метод следует использовать для достижения желаемых результатов?
Любая помощь очень ценится.