openGL ES Вращение о точке - PullRequest
0 голосов
/ 03 июня 2011

Я пытаюсь заставить объект вращаться вокруг начальной точки (0,0,0)

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

Когда я изменяю его на ось X или Y, треугольник, который я сделал, идет позади меня и затем появляется с другой стороны.

Основной эффект, которого я надеюсь добиться, - заставить его вращаться прямо перед камерой.

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

Может ли кто-нибудь дать мне толчок в правильном направлении по поводу этой особенности, особенно формулы, которую мне нужно будет использовать для ее правильного перевода?

1 Ответ

4 голосов
/ 03 июня 2011

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

Итак, эффективно,

glTranslatef(centerX, centerY, centerZ);
glRotatef(angle, 0, 0, 1);
glTranslatef(-centerX, -centerY, -centerZ);

Помните, что преобразования OpenGL применяются в обратном порядке, указанном в коде, поэтому вышеприведенное преобразуется с помощью - (centerX, centerY, centerZ), затем поворачивается, а затем переводится обратно на (centerX, centerY, centerZ).

Проверьте Глава 3 Руководства по программированию OpenGL для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...