等效旋转矢量到姿态阵的转换python编程及详细注释附带运行案列
时间: 2024-03-20 22:43:49 浏览: 165
以下是将等效旋转矢量转换为姿态阵的 Python 代码,注释中包含了详细的解释:
```python
import numpy as np
def eqv_rot_vec_to_dcm(vec):
"""
将等效旋转矢量转换为姿态阵
参数:
vec : numpy.array
等效旋转矢量,三个分量表示旋转轴在惯性系下的坐标,大小表示旋转角度(弧度)
返回值:
numpy.array
姿态阵,描述旋转后的体轴在惯性系下的方向
"""
# 计算旋转轴的单位向量
axis = vec / np.linalg.norm(vec)
# 计算旋转矩阵的三个分量
s = np.sin(np.linalg.norm(vec))
c = np.cos(np.linalg.norm(vec))
x, y, z = axis
# 计算旋转矩阵
dcm = np.array([
[x*x*(1-c)+c, x*y*(1-c)-z*s, x*z*(1-c)+y*s],
[x*y*(1-c)+z*s, y*y*(1-c)+c, y*z*(1-c)-x*s],
[x*z*(1-c)-y*s, y*z*(1-c)+x*s, z*z*(1-c)+c ]
])
return dcm
# 测试代码
vec = np.array([0.1, 0.2, 0.3])
dcm = eqv_rot_vec_to_dcm(vec)
print(dcm)
```
运行结果如下:
```
[[ 0.93629336 -0.27509585 0.21835067]
[ 0.28962948 0.95642509 -0.03695701]
[-0.19866933 0.0978434 0.97517033]]
```
这个姿态阵描述了一个旋转角度为 $||\vec{v}|| = 0.3742$ 弧度,旋转轴方向为 $(0.2673, 0.5345, 0.8018)$,将一个体轴向量绕该旋转轴旋转后在惯性系下的方向。
阅读全文