欧拉角转旋转矩阵代码
时间: 2025-06-23 21:54:25 浏览: 8
### 实现欧拉角到旋转矩阵的代码
以下是基于欧拉角计算旋转矩阵的一种常见方法。该实现假设输入的角度顺序为 ZYX(即绕 Z 轴旋转 α,再绕 Y 轴旋转 β,最后绕 X 轴旋转 γ)。此算法通过依次构建三个基本旋转矩阵并将其相乘来得到最终的旋转矩阵。
```python
import numpy as np
def euler_angles_to_rotation_matrix(theta):
"""
将欧拉角 (ZYX convention) 转换为旋转矩阵 R。
参数:
theta: list or array-like, shape (3,)
包含三个角度 [γ, β, α] 的列表或数组,
对应于围绕 X、Y 和 Z 轴的旋转角度(单位:弧度)。
返回:
R: ndarray, shape (3, 3)
计算所得的旋转矩阵。
"""
gamma, beta, alpha = theta[0], theta[1], theta[2]
# 定义绕Z轴旋转的矩阵
Rz = np.array([
[np.cos(gamma), -np.sin(gamma), 0],
[np.sin(gamma), np.cos(gamma), 0],
[0, 0, 1]
])
# 定义绕Y轴旋转的矩阵
Ry = np.array([
[np.cos(beta), 0, np.sin(beta)],
[0, 1, 0],
[-np.sin(beta), 0, np.cos(beta)]
])
# 定义绕X轴旋转的矩阵
Rx = np.array([
[1, 0, 0],
[0, np.cos(alpha), -np.sin(alpha)],
[0, np.sin(alpha), np.cos(alpha)]
])
# 组合旋转矩阵
R = np.dot(Rx, np.dot(Ry, Rz)) # 注意矩阵乘法的顺序
return R
```
上述代码实现了从欧拉角到旋转矩阵的转换过程[^4]。它遵循标准的 ZYX 欧拉角约定,并利用 NumPy 库完成数值运算。如果需要其他约定(例如 XYZ 或 ZXZ),可以调整基础旋转矩阵及其组合方式。
#### 关键点说明
- **旋转顺序**:此处采用的是 ZYX 顺序,这意味着先应用 \(R_z\),接着是 \(R_y\),最后是 \(R_x\)。不同的领域可能有不同的惯例,因此需确认具体需求后再决定使用的顺序[^5]。
- **角度单位**:函数中的角度均以弧度制表示。如果输入是以度数形式给出,则应在调用前将它们转换成弧度值 \(\text{radians} = \frac{\pi}{180} \times \text{degrees}\)[^6]。
### 示例使用
下面是一个简单的例子展示如何调用 `euler_angles_to_rotation_matrix` 函数:
```python
theta_degrees = [90, 45, 30] # 输入角度为度数
theta_radians = [(angle * np.pi / 180) for angle in theta_degrees] # 转换成弧度
rotation_matrix = euler_angles_to_rotation_matrix(theta_radians)
print("Rotation Matrix:")
print(rotation_matrix)
```
这会打印出由给定欧拉角生成的对应旋转矩阵[^7]。
阅读全文
相关推荐


















