根据距离进行翻译

Translating according to the distance

本文关键字:翻译 距离      更新时间:2023-10-16

我在原点有一个正方形。首先,我想旋转它。然后,将其翻译为距原点 5 个单位的位置。

旋转后,我想将其平移为 5 的距离。但是当我实现下面的代码时。它不会将其转换为我想要的位置。正确的翻译方式是什么。 glTranslatef( 5,5, 5); glRotatef(45, x,y,z);

如果你的平方中心在原点,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 );

希望这有帮助