Я пытаюсь повернуть объект вокруг одной из его сторон, и уже попробовал общий подход, как найти на форумах:
Вращение вокруг точки поворота с OpenGL
translate(-P);
rotate();
translate(P);
В OpenGL
(реверсивный порядок перевода/повороты), я использовал следующий код:
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glPushMatrix();
glTranslatef(-50, 50, 0);
glRotatef(rotationCoord, 0, 1, 0);
glTranslatef(50, -50, 0);
glBegin(GL_QUADS);
glVertex3f(-50.0, 50.0, 0);
glVertex3f(50.0, 50.0, 0);
glVertex3f(50.0, -50.0, 0);
glVertex3f(-50.0, -50.0, 0);
glEnd();
glPopMatrix();
Однако, прямоугольник, который я рисую не кажется, не вращается вокруг одной стороны, как стержень. (пытаясь установить левую сторону как точку поворота и вращаться вокруг нее). Я сделал скриншот vid, чтобы показать, какую ротацию я получаю прямо сейчас. Вот видео:
Как установить стержень для этого объекта так, чтобы она вращалась вокруг этой точки?
Выбор стержня нечетный. Компонент трансляции оси y не действует, поскольку вы вращаетесь в плоскости xz. Это то, что вы намеревались? –
@MarceloCantos: На данный момент я не собирался вращать вокруг оси Y. Просто ось Х. Но левая сторона прямоугольника кажется движущейся, в то время как ось вращения должна быть неподвижной. правильно? – user1240679
'glRotatef (..., 0, 1, 0)' является вращением вокруг оси y (aka xz-plane), а не осью x. –