python 如何将旋转矩阵分解为四元数? (最好使用 euclid 库)

in python how do I decompose a rotation matrix to a quaternion? (preferrably using the euclid library)

我已经开始试验 euclid module for python 。我现在到了要采用任意旋转矩阵并将其分解为四元数形式的地步。

这些公式可以在网络上的几个地方找到(比如 http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/ ),但我希望在 euclid 库中的某个地方有一个实现。

我最终发现了以下技巧:

q2 = euclid.Quaternion.new_rotate_matrix(m)

将旋转矩阵分解为四元数。您可能仍然需要担心 q-q 都代表相同的方向,尤其是当您在 3D 动画中设置关键帧旋转时。