Вращение в opengl - PullRequest
       16

Вращение в opengl

1 голос
/ 21 июня 2011

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

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);

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

1 Ответ

3 голосов
/ 21 июня 2011

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

translation = -5;
if(translate_back) glTranslatef(0,0,-translation);
glRotatef(50.0*t, 0, 1, 0);
glTranslatef(0,0,+translation);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...