2011-06-21 1 views
1

У меня есть плоскость, и я хочу повернуть ее вокруг оси y. Координаты плоскостей в:Вращение в opengl

Vec4f(-1,-1, -5, 1), 
Vec4f(1,-1, -5, 1), 
Vec4f(1, 1, -5, 1), 
Vec4f(-1, 1, -5, 1), 

Я просто хочу самолет, чтобы повернуть, не ходить по кругу, так что я перевести его обратно в проихождения затем сделать поворот:

glTranslatef(0,0,-5); 
glRotatef(50.0*t, 0, 1, 0); 

draw(plane); 

Но самолет все еще делает круг вокруг источника. Что я делаю не так?

ответ

3

Преобразования применяются в противоположном порядке, в котором вы их умножаете, также вы можете перевести обратно туда, откуда оно было. Так изменить это так:

translation = -5; 
if(translate_back) glTranslatef(0,0,-translation); 
glRotatef(50.0*t, 0, 1, 0); 
glTranslatef(0,0,+translation); 
+0

Спасибо, это работает, но еще один вопрос, когда я перехожу самолет обратно к зарождению я glTranslate (0,0,5) не glTranslate (0,0, -5) , поэтому код становится следующим: glTranslatef (0,0, -5); glRotatef (50,0 * t, 0, 1, 0); glTranslatef (0,0,5); – Merni

+0

Just translate_back = true в приведенном выше коде, тогда у вас есть ответ :) – datenwolf

+0

, но ваш ответ неправильный, он должен быть обратным – Merni