我计算了每个轴的轴角度旋转。如果我只应用三个旋转中的一个,则对象按预期旋转。
如果我乘以旋转矩阵,就像你通常那样组合旋转时我得不到所需的结果,导致第一次旋转影响其他旋转矩阵,因此最终结果不是我正在寻找的。
我想将每个旋转应用到对象,就像之前没有旋转一样。
我想这是一项简单的任务,但似乎我没有找到合适的关键字。 (标题也不完美......(可以提出建议))
感谢您的每一个提示/帮助。
答案 0 :(得分:1)
您遇到了gimbal lock。这不是一个数学问题,这是一个逻辑上的谬误。为了便于说明,请尝试使用手机:
可是:
如果指令围绕x旋转180度,绕z顺时针旋转90度,那么哪一个是不正确的?两者都不正确。说明不明确。
个人轮换的顺序总是很重要,因为第二个影响第一个完成的工作,第三个影响第一个和第二个完成的工作,等等。改变顺序只会改变影响哪个。
方向通常直接存储为矩阵或四元数,因为它是明确的,因为它可以保持正确排序的操作顺序。
答案 1 :(得分:0)
旋转矩阵的组合不是微不足道的。我建议将您的旋转矩阵表示为quaternions。四元数具有非常有用的属性。将两个四元数相乘将得到第三个四元数,它以矩阵形式放回,是两个输入矩阵的精确组合。我认为Boost
库有代码,但我没有亲自使用它。
编辑:你可以从(标准化的)轴向量和旋转角度得到一个腐蚀矩阵。在维基百科上查看此article