gpt4 book ai didi

c++ - glRotatef 没有按预期旋转

转载 作者:行者123 更新时间:2023-11-28 01:02:18 24 4
gpt4 key购买 nike

我正在尝试围绕其中心旋转四边形,但是当我运行该应用程序时,四边形围绕屏幕的 0,0 位置旋转,我无法弄清楚为什么,因为一切看起来都很好。任何帮助将不胜感激。

glPushMatrix();
glTranslatef(pxob->x, pxob->y, 0);

glRotatef(pxob->theta,0.0f,0.0f,1.0f);

glBegin(GL_QUADS);
glColor3f((28.0f / 255.0f), (28.0f / 255.0f), (28.0f / 255.0f));

glVertex3f(pxob->x - (SIZE / 2), pxob->y- (SIZE / 2), 0);
glVertex3f(pxob->x + (SIZE / 2), pxob->y- (SIZE / 2), 0);
glVertex3f(pxob->x + (SIZE / 2), pxob->y + (SIZE / 2), 0);
glVertex3f(pxob->x- (SIZE / 2), pxob->y + (SIZE / 2), 0);
glEnd();
glPopMatrix();

编辑:谢谢 Krom,谢谢你的帮助,指导我度过了难关。我确实必须在 glRotatef 之前调用 glTranslatef,因为它仍想围绕 0,0 位置旋转。再次感谢!

最佳答案

您需要先glRotatef,然后是glTranslatef

这是因为首先需要将对象乘以旋转矩阵(围绕其中心旋转对象),然后应用平移矩阵(将旋转的对象移动到所需位置)。

如果你以相反的方式进行,翻译后的对象将围绕 0;0 坐标旋转。

编辑:查看您的代码 - 您构建具有 X/Y 偏移的四边形,而您已经将其应用于 glTranslatef。那可能是个错误。代码应该是:

glVertex3f(-SIZE / 2, -SIZE / 2, 0);
glVertex3f( SIZE / 2, -SIZE / 2, 0);
glVertex3f( SIZE / 2, SIZE / 2, 0);
glVertex3f(-SIZE / 2, SIZE / 2, 0);

关于c++ - glRotatef 没有按预期旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8119157/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com