【发布时间】:2013-07-13 12:45:18
【问题描述】:
我正在尝试围绕其一侧旋转对象,并且已经尝试了论坛上的常用方法:
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();
但是,我正在绘制的矩形似乎并没有作为枢轴围绕一侧旋转。 (尝试将左侧设置为枢轴点并围绕它旋转)。我制作了一个屏幕截图视频来展示我现在正在得到什么样的旋转。这是视频:
如何设置该对象的轴心,使其围绕该点旋转?
【问题讨论】:
-
枢轴的选择很奇怪。 y 轴平移组件没有影响,因为您在 xz 平面中旋转。这是你想要的吗?
-
@MarceloCantos :我暂时不打算绕 Y 轴旋转。只是X轴。但是矩形的左侧似乎在移动,而枢轴应该是静止的。对吗?
-
glRotatef(…, 0, 1, 0)是围绕 y 轴(又名 xz 平面)而不是 x 轴的旋转。 -
@MarceloCantos:哎呀。我不得不在上面的评论中提到,rotaiton 现在只能围绕 Y 轴,而不是 X 轴。为混乱道歉。也就是说,随着围绕 Y 轴的旋转以及现在发生的旋转,枢轴应该是静止的,我不知道为什么。
-
尝试颠倒顺序:T(P) R() T(-P)。这是抓住了最后一根稻草,但至少消除这种可能性是件好事。