python实现:旋转矩阵转换为四元数

简介: python实现:旋转矩阵转换为四元数

1 python实现旋转矩阵转换为四元数

例如:下面把3x3的旋转矩阵转换为四元数

from pyquaternion import Quaternion


rotate_matrix = [[-0.0174524064372832, -0.999847695156391, 0.0],
                 [0.308969929589947, -0.00539309018185907, -0.951056516295153],
                 [0.950911665781176, -0.0165982248672099, 0.309016994374948]]

RM = np.array(rotate_matrix)

# 旋转矩阵转换为四元数
def rotateToQuaternion(rotateMatrix):
    q = Quaternion(matrix=rotateMatrix)
    print(q)  # 0.567 +0.412i -0.419j +0.577k
    print(f"x: {q.x}, y: {q.y}, z: {q.z}, w: {q.w}")
    # x: 0.41198412875061946, y: -0.41923809520381, z: 0.5770317346112972, w: 0.567047506333421
    return q


if __name__ == '__main__':
    rotateMatrixToEulerAngles(RM)
    rotateMatrixToEulerAngles2(RM)

    euler_angles = [-0.05366141770874149, -1.2561686529408898, 1.6272221428848495]
    eulerAnglesToRotationMatrix(euler_angles)

    rotateToQuaternion(RM)

输出结果如下:

0.567 +0.412i -0.419j +0.577k
x: 0.41198412875061946, y: -0.41923809520381, z: 0.5770317346112972, w: 0.567047506333421
目录
相关文章
|
存储
LeetCode6-Z字形变换
LeetCode6-Z字形变换
|
2月前
|
算法 C++
Leetcode第六题(Z 字形变换)
这篇文章介绍了LeetCode第六题“Z字形变换”的解法,提供了C++的代码实现,其中使用了向量数组来模拟Z字形排列,并详细解释了算法的逻辑。
28 0
|
4月前
|
算法框架/工具 C++ Python
根据相机旋转矩阵求解三个轴的旋转角/欧拉角/姿态角 或 旋转矩阵与欧拉角(Euler Angles)之间的相互转换,以及python和C++代码实现
根据相机旋转矩阵求解三个轴的旋转角/欧拉角/姿态角 或 旋转矩阵与欧拉角(Euler Angles)之间的相互转换,以及python和C++代码实现
249 0
|
4月前
|
PHP 计算机视觉
罗德里格斯公式推导,以及如何使用cv2.Rodrigues进行旋转矩阵和旋转向量之间的相互转化
罗德里格斯公式推导,以及如何使用cv2.Rodrigues进行旋转矩阵和旋转向量之间的相互转化
125 0
|
4月前
第4章-变换-4.3-四元数
第4章-变换-4.3-四元数
36 3
|
4月前
|
算法
LeetCode第6题N 字形变换
该文章介绍了 LeetCode 第 6 题 N 字形变换的解法,通过按列生成的方式,根据行数转换逻辑来构造字符串,主要注意控制行数的转换时机,从而实现 N 字形变换。
LeetCode第6题N 字形变换
|
4月前
|
算法框架/工具
第4章-变换-4.2-特殊矩阵变换和运算
第4章-变换-4.2-特殊矩阵变换和运算
17 0
|
7月前
leetcode-6:Z 字形变换
leetcode-6:Z 字形变换
45 0
|
7月前
|
移动开发 算法 C#
Leetcode算法系列| 6. Z 字形变换
Leetcode算法系列| 6. Z 字形变换