python中的坐标旋转scipy.spatial.transform.Rotation(草记)

#实操中学到的两种选转坐标的方式,随手记录一下#

scipy.spatial.transform.Rotation是一个坐标旋转工具,其中有多种方式进行旋转。scipy.spatial.transform.Rotation — SciPy v1.11.4 Manual

这里介绍两种方式from_mrp和from_euler

一、form_mrp

假设我们的关于一个轴进行旋转,使用向量a代表旋转轴的单位向量;旋转角度为θ

则mrp=a*tan(θ/4)  注:这里一定要注意1/4,这里的设置是为了刚性旋转,即旋转之后向量的模不变。

得到旋转矩阵r_mtrix=Rotation.from_mrp(mrp)

使用apply方法对向量b进行旋转 b_r=r_matrix.apply(b),b_r就是旋转后的向量。

实例: 

 

 

这里旋转轴a是沿着y轴的正方向,旋转角度为90°,b1和b2在y-o-z平面上,关于y轴旋转90°之后到x-o-z平面上。(此处旋转方向可以用右手定则理解,右手大拇指朝向Y轴正方向,四指握的方向就是旋转方向)

 

二、from_euler

这个方法更加直观,直接设置旋转轴和旋转角度即可。

直接上实例

直接设置,沿x轴旋转0°,沿y轴旋转90°,沿z轴旋转0°,得到与form_mrp同样的效果。此处degrees=True代表着旋转角度使用度数。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python,我们可以使用各种库和函数来进行三维坐标的平移和旋转操作。 首先,我们可以使用NumPy库来处理三维坐标和向量的运算。NumPy提供了功能强大的数组和矩阵操作函数,适用于处理复杂的三维坐标变换。 对于平移操作,可以通过将所有坐标点的x、y、z值分别增加指定的平移量来实现。例如,如果要将所有坐标点沿x轴平移2个单位,则可以使用以下代码: ```python import numpy as np # 定义要平移的三维坐标 coords = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 定义平移向量 translation = np.array([2, 0, 0]) # 执行平移操作 translated_coords = coords + translation print(translated_coords) ``` 对于旋转操作,可以使用scipy旋转函数。scipy包含了旋转函数,可以通过指定旋转轴、旋转角度和旋转心来实现三维坐标旋转。 例如,如果要沿着z轴旋转45度,可以使用以下代码: ```python import numpy as np from scipy.spatial.transform import Rotation # 定义要旋转的三维坐标 coords = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 定义旋转角度(弧度) angle = np.pi/4 # 定义旋转轴 axis = np.array([0, 0, 1]) # 定义旋转心 center = np.array([0, 0, 0]) # 创建旋转对象 rotation = Rotation.from_rotvec(angle * axis) # 执行旋转操作 rotated_coords = rotation.apply(coords - center) + center print(rotated_coords) ``` 以上代码使用了scipyRotation类来实现旋转操作。首先,我们定义旋转角度、旋转轴和旋转心,然后使用from_rotvec函数创建旋转对象,最后使用apply函数应用旋转操作。 通过以上代码,我们可以在Python实现三维坐标的平移和旋转操作。请注意,以上代码仅是示例,实际应用可能需要根据具体需求进行调整和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值