旋转矩阵的逆序
Reverse order of a rotation matrix
我正在 Minecraft 中做一个小测试 mod 玩家可以免费驾驶小型飞机 space。
Minecraft 将相机变换应用为
glRotatef(pitch, 0, 0, 1);
glRotatef(yaw, 0, 1, 0);
glRotatef(roll, 1, 0, 0);
然而,在这个设置中,滚动应用 last,这最终使平面在世界 space 中倾斜,而不是在应用滚动之后,让银行业务变得不可能。
我发现要使银行工作正常,我应该以相反的顺序应用转换,即
glRotatef(roll, 1, 0, 0);
glRotatef(yaw, 0, 1, 0);
glRotatef(pitch, 0, 0, 1);
有没有什么方法,在给定横滚、偏航和俯仰的情况下,按照那个顺序,获得校正值以插入原始 Minecraft 相机转换以实现相同的最终旋转(基本上,使用它自己的相对轴而不是世界轴使平面旋转)?
无论如何,您可能希望以不同的表示形式(作为四元数或旋转矩阵)保持相机的旋转。这样,您只需向它添加另一个旋转,而无需理会它围绕哪个轴旋转。它将始终在平面的局部坐标系中(如果正确完成)。
一旦您决定了表示方式,您就可以将其转换回欧拉角,例如convert quaternions to Euler angles。您应该知道角度的旋转顺序。由于有几个选项,您需要适合您的订单的转换。
我正在 Minecraft 中做一个小测试 mod 玩家可以免费驾驶小型飞机 space。
Minecraft 将相机变换应用为
glRotatef(pitch, 0, 0, 1);
glRotatef(yaw, 0, 1, 0);
glRotatef(roll, 1, 0, 0);
然而,在这个设置中,滚动应用 last,这最终使平面在世界 space 中倾斜,而不是在应用滚动之后,让银行业务变得不可能。
我发现要使银行工作正常,我应该以相反的顺序应用转换,即
glRotatef(roll, 1, 0, 0);
glRotatef(yaw, 0, 1, 0);
glRotatef(pitch, 0, 0, 1);
有没有什么方法,在给定横滚、偏航和俯仰的情况下,按照那个顺序,获得校正值以插入原始 Minecraft 相机转换以实现相同的最终旋转(基本上,使用它自己的相对轴而不是世界轴使平面旋转)?
无论如何,您可能希望以不同的表示形式(作为四元数或旋转矩阵)保持相机的旋转。这样,您只需向它添加另一个旋转,而无需理会它围绕哪个轴旋转。它将始终在平面的局部坐标系中(如果正确完成)。
一旦您决定了表示方式,您就可以将其转换回欧拉角,例如convert quaternions to Euler angles。您应该知道角度的旋转顺序。由于有几个选项,您需要适合您的订单的转换。