我的原点有一个正方形。首先,我想旋转它。然后,将它翻译成离原点5个单位。
旋转后我想将它翻译为5的距离。但是当我实现下面的代码时。它没有将它翻译到我想要的地方。翻译的正确方法是什么。
glTranslatef( 5,5, 5); glRotatef(45, x,y,z);
答案 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 );
希望这有帮助