2010-12-08 4 views
1

У меня возникли проблемы с тем, как вращать объект в трехмерном пространстве на основе функции rotate OpenGL glRotatef (..).Вращение по пути в OpenGL

glRotatef (angle , x , y , z) 

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

Как найти угол, x, y, z, необходимый для функции glRotatef (...), если я знаю точку, в которой я начинаю, и точку, где я заканчиваю.

ответ

0

Очень грубо, вам нужно получить ось вращения, которая будет нормальна как для направления движения, так и для нормальной поверхности, что означало бы поперечное произведение направления движения (T) и нормали поверхности (n) даст вам ось для вашего вращения. Таким образом, ось (A) будет равна:

A = норма (T x n) или, возможно, A = норма (n x T), одна из которых позволит вам использовать положительный угол для «поворота» в правильном направлении.

Однако, положительный или отрицательный характер угла поворота необходимо анализировать в зависимости от того, какой из указанных выше вас использовать, но это должно вам начать работу с осью вращения :)

1

gluLookAt функции точно что вам нужно здесь. Это избавит вас от вычисления оси и угла вручную.

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