我正在尝试在3D模式下进行简化的直升机(目前是立方体)仿真,并且在旋转方面遇到一些问题。直升机可以沿三个轴旋转:
- 使用后螺旋桨自行旋转:y轴旋转
- 左右倾斜以向左或向右移动:z轴旋转
- 上下倾斜以向后或向前:x轴旋转
我需要能够分别控制每个轴。到目前为止,我已经尝试过使用欧拉角,但是无论使用哪种旋转顺序,我都会碰到万向节锁或某些轴“切换位置”。
我似乎需要使用四元数,但是我不知道如何控制每个单独的轴,因为四元数使用方向和角度。我应该创建三个四元数并将它们相乘吗?我会不会遇到同样的问题?
奇怪的是,如果我用手指来代表直升机的三个轴(竖起= y,索引= z,中间= x),我似乎没有遇到这些问题。为什么?