繁体   English   中英

旋转矩阵的逆序

[英]Reverse order of a rotation matrix

我正在Minecraft中制作一个小型测试模组,玩家可以在其中自由空间飞行一架小型飞机。

Minecraft将摄影机转换应用于

glRotatef(pitch, 0, 0, 1);
glRotatef(yaw, 0, 1, 0);
glRotatef(roll, 1, 0, 0);

但是,在这种设置下, 最后一次应用滚动,最终使飞机在世界空间中以一定的间距倾斜,而不是在应用滚动之后才倾斜,从而无法进行倾斜。

我已经发现,要使银行业务正常运转,我应该以相反的顺序应用转换,即

glRotatef(roll, 1, 0, 0);
glRotatef(yaw, 0, 1, 0);
glRotatef(pitch, 0, 0, 1);

是否可以通过某种方式按给定的滚动,偏航和俯仰顺序获得校正后的值,以重新插入原始的Minecraft相机变换中,以实现相同的最终旋转(基本上,使飞机使用其自身的相对轴而不是旋转轴)世界轴)?

无论如何,您可能都希望以其他表示形式(以四元数或旋转矩阵形式)保持摄像机的旋转。 这样,您可以向其添加另一个旋转,而无需理会旋转的轴。 它将始终位于飞机的局部坐标系中(如果正确完成的话)。

一旦确定了表示形式,就可以将其转换回欧拉角,例如将四元数转换为欧拉角 您应该注意角度的旋转顺序。 由于有两个选项,因此您需要适合您的订单的转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM