#include <opencv2/core/quaternion.hpp>
|
枚举 | EulerAnglesType {
INT_XYZ
,
INT_XZY
,
INT_YXZ
,
INT_YZX
,
INT_ZXY
,
INT_ZYX
,
INT_XYX
,
INT_XZX
,
INT_YXY
,
INT_YZY
,
INT_ZXZ
,
INT_ZYZ
,
EXT_XYZ
,
EXT_XZY
,
EXT_YXZ
,
EXT_YZX
,
EXT_ZXY
,
EXT_ZYX
,
EXT_XYX
,
EXT_XZX
,
EXT_YXY
,
EXT_YZY
,
EXT_ZXZ
,
EXT_ZYZ
} |
| 欧拉角类型的枚举。更多…
|
|
◆ EulerAnglesType
欧拉角类型的枚举。
不考虑使用两种不同的约定来定义旋转轴的可能性,存在十二种可能的旋转轴序列,分为两组
- 正则欧拉角 (Z-X-Z、X-Y-X、Y-Z-Y、Z-Y-Z、X-Z-X、Y-X-Y)
- 泰特-布莱恩角 (X-Y-Z、Y-Z-X、Z-X-Y、X-Z-Y、Z-Y-X、Y-X-Z)。
三个基本旋转可以是 外在的(围绕原始坐标系 *xyz* 的轴的旋转,假设该坐标系保持静止),或者 内在的(围绕旋转坐标系 *XYZ* 的轴的旋转,与运动体固定,每次基本旋转后都会改变其方向)。
外在和内在旋转都是相关的。
欧拉角的定义如下:
- 代表第一个旋转角,
- 代表第二个旋转角,
- 代表第三个旋转角。
对于 X-Y-Z 顺序的内在旋转,旋转矩阵 R 可以通过以下方式计算:
对于 X-Y-Z 顺序的外在旋转,旋转矩阵 R 可以通过以下方式计算:
其中
该函数是根据这套约定设计的
- 采用 右手 参考系,并使用 右手定则 来确定角度的符号。
- 每个矩阵都表示 主动旋转(组合矩阵和被组合矩阵都应该作用于在初始固定参考系中定义的向量的坐标,并作为结果给出在同一参考系中定义的旋转向量的坐标)。
对于 和 ,有效范围是 (−π, π]。
对于 ,有效范围是 [−π/2, π/2] 或 [0, π]。
对于泰特-布莱恩角, 的有效范围是 [−π/2, π/2]。当将四元数转换为欧拉角时,在 的条件下,欧拉角的解是唯一的。如果 或 ,则存在无限多个解。这种情况的常用名称是万向节死锁。对于正则欧拉角, 的有效范围在 [0, π] 中。在 的条件下,欧拉角的解是唯一的。如果 或 ,则存在无限多个解,并且会发生万向节死锁。
枚举器 |
---|
INT_XYZ | 使用 X-Y-Z 型欧拉角的内在旋转。
|
INT_XZY | 使用 X-Z-Y 型欧拉角的内在旋转。
|
INT_YXZ | 使用 Y-X-Z 型欧拉角的内在旋转。
|
INT_YZX | 使用 Y-Z-X 型欧拉角的内在旋转。
|
INT_ZXY | 使用 Z-X-Y 型欧拉角的内在旋转。
|
INT_ZYX | 使用 Z-Y-X 型欧拉角的内在旋转。
|
INT_XYX | 使用 X-Y-X 型欧拉角的内在旋转。
|
INT_XZX | 使用 X-Z-X 型欧拉角的内在旋转。
|
INT_YXY | 使用 Y-X-Y 型欧拉角的内在旋转。
|
INT_YZY | 使用 Y-Z-Y 型欧拉角的内在旋转。
|
INT_ZXZ | 使用 Z-X-Z 型欧拉角的内在旋转。
|
INT_ZYZ | 使用 Z-Y-Z 型欧拉角的内在旋转。
|
EXT_XYZ | 使用 X-Y-Z 型欧拉角的外在旋转。
|
EXT_XZY | 使用 X-Z-Y 型欧拉角的外在旋转。
|
EXT_YXZ | 使用 Y-X-Z 型欧拉角的外在旋转。
|
EXT_YZX | 欧拉角类型为Y-Z-X的外旋。
|
EXT_ZXY | 欧拉角类型为Z-X-Y的外旋。
|
EXT_ZYX | 欧拉角类型为Z-Y-X的外旋。
|
EXT_XYX | 欧拉角类型为X-Y-X的外旋。
|
EXT_XZX | 欧拉角类型为X-Z-X的外旋。
|
EXT_YXY | 欧拉角类型为Y-X-Y的外旋。
|
EXT_YZY | 欧拉角类型为Y-Z-Y的外旋。
|
EXT_ZXZ | 欧拉角类型为Z-X-Z的外旋。
|
EXT_ZYZ | 欧拉角类型为Z-Y-Z的外旋。
|
此类的文档是从以下文件生成的: