栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python 实现罗德里格斯公式Rodrigues 旋转向量到旋转矩阵转化

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python 实现罗德里格斯公式Rodrigues 旋转向量到旋转矩阵转化

罗德里格斯公式Rodrigues:

代码:
import numpy as np

def rodrigues_rotation(r, theta):
    # n旋转轴[3x1]
    # theta为旋转角度
    # 旋转是过原点的,n是旋转轴
    r = np.array(r).reshape(3, 1)
    rx, ry, rz = r[:, 0]
    M = np.array([
        [0, -rz, ry],
        [rz, 0, -rx],
        [-ry, rx, 0]
    ])
    R = np.eye(3)
    R[:3, :3] = np.cos(theta) * np.eye(3) +        
                (1 - np.cos(theta)) * r @ r.T +    
                np.sin(theta) * M
    return R


def rodrigues_rotation_vec_to_R(v):
    # r旋转向量[3x1]
    theta = np.linalg.norm(v)
    r = np.array(v).reshape(3, 1) / theta
    return rodrigues_rotation(r, theta)
案例:绕x轴旋转90度:
rodrigues_rotation_vec_to_R(np.asarray([1,0,0])*np.pi/2)
结果:
array([[ 1.000000e+00,  0.000000e+00,  0.000000e+00],
       [ 0.000000e+00,  6.123234e-17, -1.000000e+00],
       [ 0.000000e+00,  1.000000e+00,  6.123234e-17]])
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/879098.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号