描述三维空间中刚体旋转的三种常见方式:轴角表示(Axis-Angle)、固定角(Fixed Angles) 和 欧拉角(Euler Angles),虽然最终都用于表达同一个旋转操作,但它们的定义方式、几何意义、优缺点和应用场景各不相同。下面详细解释这三种方法的定义、优缺点及对比。
一、三种旋转表示方式的定义
1. 轴角表示(Axis-Angle)
✅ 定义:
用一个单位向量 n⃗=(nx,ny,nz), n=(nx,ny,nz) 表示旋转轴,
用一个标量 θ 表示绕该轴逆时针旋转的角度(单位:弧度)。
合起来表示为一个三维向量:r⃗=θ⋅n⃗, r=θ⋅n,称为旋转向量(Rotation Vector)。
📌 例如:r⃗=(0,0,π),r=(0,0,π) 表示绕 z 轴旋转 180°。
🔁 几何意义:
任意三维旋转都可以等效为“绕某一根通过原点的轴旋转某个角度”——这是欧拉定理(Euler's Rotation Theorem) 的结论。
2. 固定角(Fixed Angles / Space-fixed / Extrinisic Rotations)
✅ 定义:
将一个旋转分解为相对于固定坐标系(如世界坐标系)三个坐标轴的连续旋转。
旋转顺序很重要,例如常见的 ZYX 顺序:
绕固定的 Z 轴旋转 yaw(偏航);
绕固定的 Y 轴旋转 pitch(俯仰);
绕固定的 X 轴旋转 roll(滚转)。
📌 注意:每次旋转都相对于原始的、不动的坐标系进行。
🔁 几何意义:
类似于“先整体绕地球北极转,再绕东-西轴抬头低头,最后绕前-后轴翻滚”。
3. 欧拉角(Euler Angles / Body-fixed / Intrinsic Rotations)
✅ 定义:
将一个旋转分解为相对于物体自身坐标系(随动坐标系)三个轴的连续旋转。
常见顺序如 ZYZ、ZYX 等。以 ZYX 为例:
绕物体当前 Z 轴旋转 yaw;
绕物体旋转后的新 Y 轴旋转 pitch;
绕物体再旋转后的新 X 轴旋转 roll。
📌 每次旋转后,坐标轴也随之改变。
🔁 几何意义:
更贴近实际运动,比如飞机:先偏航 → 此时机身坐标系已变 → 再俯仰 → 坐标系再变 → 最后滚转。
💡 关键区别:
固定角:绕固定坐标系轴旋转(extrinsic)。
欧拉角:绕物体自身坐标系轴旋转(intrinsic)。
轴角:一次绕某个轴旋转,不涉及顺序。
二、优缺点对比
| 特性 | 轴角(Axis-Angle) | 固定角(Fixed Angles) | 欧拉角(Euler Angles) |
|---|---|---|---|
| ✅ 定义简洁性 | 高(一根轴+一个角) | 中等(需指定顺序) | 中等(需指定顺序) |
| ✅ 几何直观性 | 数学直观(适合理论) | 较强(相对于世界) | 强(贴近物理运动) |
| ❌ 万向锁(Gimbal Lock) | ❌ 无 | ✅ 有(如 pitch=±90°) | ✅ 有(如 pitch=±90°) |
| ✅ 插值能力 | ⭐⭐⭐⭐☆(可转为四元数做SLERP) | ⭐⭐☆☆☆(线性插值不自然) | ⭐⭐☆☆☆(易出问题) |
| ✅ 奇异性 | 仅在 θ=0 时轴方向不确定 | 在特定角度出现奇异 | 在特定角度出现奇异 |
| ✅ 转换到旋转矩阵/四元数 | 容易(Rodrigues 公式) | 可转换,但依赖顺序 | 可转换,但依赖顺序 |
| ✅ 存储效率 | 高(3个数) | 高(3个数) | 高(3个数) |
| ✅ 用户友好性 | 低(不易理解) | 中(工程人员可用) | 高(广泛用于航空、UI) |
| ✅ 唯一性 | 多数情况下唯一(θ ∈ [0, π]) | 不唯一(不同顺序结果不同) | 不唯一(存在多组解) |
1. 轴角(Axis-Angle)
✅ 优点:
符合欧拉定理,物理意义明确。
无万向锁问题。
是构造四元数和使用 Rodrigues 公式 计算旋转矩阵的基础。
适合旋转插值(通过四元数实现 SLERP)。
❌ 缺点:
直观性差,普通人难以理解“绕 (0.7, 0.7, 0) 轴转 45°”是什么意思。
当旋转角为 0 时,旋转轴方向任意(退化情况)。
不能直接用于复合旋转(需转为矩阵或四元数)。
2. 固定角(Fixed Angles)
✅ 优点:
所有旋转基于世界坐标系,便于与全局参考系对齐。
在机器人路径规划、相机标定中便于描述“从世界坐标到物体坐标”的变换。
避免了“随动轴”的复杂性。
❌ 缺点:
存在万向锁(如绕 Y 轴转 90° 后,Z 和 X 轴对齐)。
插值时可能出现非预期路径。
与实际物体运动过程不完全一致(现实中物体通常是绕自身轴旋转)。
3. 欧拉角(Euler Angles)
✅ 优点:
高度直观,广泛用于航空、航天、游戏开发(yaw-pitch-roll)。
用户界面友好,易于调试和输入。
分解清晰,便于分步控制(如控制无人机偏航角归零)。
❌ 缺点:
存在万向锁:当第二个旋转角为 ±90° 时,第一个和第三个轴对齐,丢失一个自由度。
旋转顺序依赖性强:ZYX ≠ XYZ,不同顺序结果不同。
插值困难:直接线性插值会导致路径扭曲或抖动。
万向表示不唯一:同一旋转可能对应多组欧拉角(如 0° 和 360°)。
四、实际应用建议
| 应用场景 | 推荐表示方式 | 原因 |
|---|---|---|
| 动画插值、姿态平滑过渡 | ✅ 轴角 → 四元数 | 支持 SLERP,路径最短且平滑 |
| 机器人运动学、视觉SLAM | ✅ 轴角 或 四元数 | 无奇异性,便于数学处理 |
| 飞机/无人机姿态显示 | ✅ 欧拉角(RPY) | 符合飞行员/工程师习惯 |
| 3D建模软件UI | ✅ 欧拉角 | 用户易于理解和操作 |
| 从传感器读取姿态 | ⚠️ 欧拉角(注意万向锁) | 但内部计算建议转为四元数 |
| 构造旋转矩阵 | ✅ 轴角(Rodrigues)或 欧拉角 | 都可,轴角更紧凑 |
五、总结
| 方法 | 核心思想 | 是否有万向锁 | 是否适合插值 | 是否直观 |
|---|---|---|---|---|
| 轴角 | 一次绕轴旋转 | ❌ 无 | ✅ 适合(配合四元数) | ❌ 抽象 |
| 固定角 | 绕固定坐标系三轴旋转 | ✅ 有 | ❌ 不适合 | ✅ 较直观 |
| 欧拉角 | 绕物体自身坐标系三轴旋转 | ✅ 有 | ❌ 不适合 | ✅ 很直观 |
🎯 最佳实践:
存储和计算用四元数或轴角(避免奇异性);
显示和交互用欧拉角(提高可读性);
避免直接对欧拉角做线性插值。
642

被折叠的 条评论
为什么被折叠?



