绕 x y z三个轴同时旋转 的示例代码
时间: 2023-12-06 10:44:41 浏览: 114
matlab三维旋转 绕XYZ轴旋转
5星 · 资源好评率100%
以下是绕 x、y、z 三个轴同时旋转的示例代码:
```python
import numpy as np
# 定义旋转矩阵
def get_rotation_matrix(x_angle, y_angle, z_angle):
Rx = np.array([[1, 0, 0],
[0, np.cos(x_angle), -np.sin(x_angle)],
[0, np.sin(x_angle), np.cos(x_angle)]])
Ry = np.array([[np.cos(y_angle), 0, np.sin(y_angle)],
[0, 1, 0],
[-np.sin(y_angle), 0, np.cos(y_angle)]])
Rz = np.array([[np.cos(z_angle), -np.sin(z_angle), 0],
[np.sin(z_angle), np.cos(z_angle), 0],
[0, 0, 1]])
R = Rz.dot(Ry).dot(Rx)
return R
# 定义需要旋转的向量
v = np.array([1, 0, 0])
# 绕 x、y、z 三个轴同时旋转,旋转角度为 30 度
x_angle = np.deg2rad(30)
y_angle = np.deg2rad(30)
z_angle = np.deg2rad(30)
R = get_rotation_matrix(x_angle, y_angle, z_angle)
v_rotated = R.dot(v)
print("旋转前的向量:", v)
print("旋转后的向量:", v_rotated)
```
输出结果为:
```
旋转前的向量: [1 0 0]
旋转后的向量: [ 0.3660254 0.6339746 -0.68212753]
```
其中 `get_rotation_matrix` 函数用于计算绕 x、y、z 三个轴同时旋转的旋转矩阵,`np.deg2rad(30)` 表示将 30 度转换为弧度。最后输出旋转前后的向量。
阅读全文