根据距离进行翻译

时间:2013-10-11 02:52:03

标签: c++ opengl

我的原点有一个正方形。首先,我想旋转它。然后,将它翻译成离原点5个单位。

旋转后我想将它翻译为5的距离。但是当我实现下面的代码时。它没有将它翻译到我想要的地方。翻译的正确方法是什么。 glTranslatef( 5,5, 5); glRotatef(45, x,y,z);

1 个答案:

答案 0 :(得分:0)

如果您的方形中心位于原点,则glTranslatef然后是glRotatef。

要围绕自定义中心进行轮播,以下是通用公式:

TranslationFromRotCenterToOrigin * RotationMatrix * TranslationFromOriginToRotCenter

在OpenGL中以相反的顺序给出一些东西(因为glTranslatef / glRotatef将当前的OpenGL矩阵乘以指定的平移/旋转矩阵)

glLoadIdentity();
glTranslatef( 5, 5, 5);
glTranslatef( toRotCenterX, toRotCenterY, toRotCenterZ );
glRotatef( 45, x, y, z );
glTranslatef( -toRotCenterX, -toRotCenterY, -toRotCenterZ );

希望这有帮助