我试图让一个物体绕原点(0,0,0)旋转
我正在遵循这个blog的一些指导原则,并且能够获得关于Z轴的基本旋转,并且它围绕Z azis做了一个非常紧的圆。
当我将它改为X或Y轴时,我制作的三角形在我身后,然后从另一侧出现。
我希望实现的基本效果是让它在镜头前旋转。
据我所知,我必须按照我想要的数量旋转它,然后将其转换回原点,但我不太确定如何计算翻译量。
有人可以给我一个正确的方向,尤其是我需要用来正确翻译它的公式吗?
答案 0 :(得分:4)
如果没有看到您的代码,很难回答,但听起来您想先将三角形的中心转换为原点,旋转,然后转换回三角形的原始位置。 glRotate()围绕原点旋转,而不是任意点。
所以,实际上,
glTranslatef(centerX, centerY, centerZ);
glRotatef(angle, 0, 0, 1);
glTranslatef(-centerX, -centerY, -centerZ);
请记住,OpenGL转换的应用顺序与它们在代码中指定的相反,因此上述转换为 - (centerX,centerY,centerZ),然后旋转,然后转换回(centerX,centerY,centerZ)。