四元数与旋转矩阵

四元数与旋转矩阵

💡 原文中文,约6300字,阅读约需15分钟。
📝

内容提要

本文推导了四元数与旋转矩阵的关系。从二维复数旋转出发,引入欧拉公式,推广至三维,将向量分解为平行和垂直于旋转轴的分量,利用四元数乘法表示旋转。最终给出单位四元数对应的三维旋转矩阵形式,并说明其与旋转轴和角度的对应关系。

🔎

延伸解读

四元数旋转的几何意义

四元数旋转的核心在于将向量分解为平行于旋转轴和垂直于旋转轴的分量。平行分量在旋转中保持不变,而垂直分量在垂直于轴的平面内旋转。通过构造一个与轴和向量都正交的向量(叉积),可以将二维旋转公式推广到三维。最终,旋转半角的四元数通过左乘和右乘共轭实现旋转,避免了直接使用旋转矩阵的复杂计算。

四元数与旋转矩阵的转换

单位四元数可以直接转换为对应的三维旋转矩阵。给定旋转轴单位向量u和旋转角θ,四元数表示为a=cos(θ/2), b=u_x sin(θ/2), c=u_y sin(θ/2), d=u_z sin(θ/2)。对应的旋转矩阵为文中给出的3x3矩阵。这种转换在计算机图形学和机器人学中常用,因为四元数插值平滑且无万向锁问题,而旋转矩阵便于与向量相乘。

四元数乘法的非交换性

与复数乘法不同,四元数乘法不满足交换律,即q1*q2 ≠ q2*q1。这体现在左乘和右乘的矩阵形式不同。在旋转表示中,旋转顺序很重要,因此四元数乘法顺序必须与旋转顺序一致。例如,先绕x轴再绕y轴旋转,与先绕y轴再绕x轴旋转的结果不同,对应的四元数乘法顺序也不同。

Q&A

四元数如何表示三维旋转?

四元数通过旋转半角的单位四元数 p 来表示三维旋转,旋转后的向量 v' 由 p v p* 计算,其中 p* 是 p 的共轭。

二维旋转矩阵是什么?

二维旋转矩阵为 [[cosθ, -sinθ], [sinθ, cosθ]],表示逆时针旋转 θ 角。

四元数的共轭和逆是如何定义的?

四元数 q = a + bi + cj + dk 的共轭为 q* = a - bi - cj - dk,逆为 q^{-1} = q* / |q|^2,其中 |q|^2 = a^2 + b^2 + c^2 + d^2。对于单位四元数,逆等于共轭。

四元数乘法为什么不满足交换律?

四元数乘法不满足交换律,因为虚部单位 i, j, k 的乘法不满足交换律,例如 ij = k 但 ji = -k。

如何将向量分解为平行和垂直于旋转轴的分量?

设旋转轴为单位向量 u,向量 v 的平行分量为 v_|| = (u·v)u,垂直分量为 v_⊥ = v - v_||。

单位四元数对应的三维旋转矩阵是什么?

单位四元数 p = a + bi + cj + dk 对应的旋转矩阵为 [[1-2c^2-2d^2, 2bc+2ad, 2bd-2ac], [2bc-2ad, 1-2b^2-2d^2, 2ab+2cd], [2ac+2bd, 2cd-2ab, 1-2b^2-2c^2]],其中 a = cos(θ/2), b = u_x sin(θ/2), c = u_y sin(θ/2), d = u_z sin(θ/2)。

四元数在哪些领域常用于表示旋转?

四元数常用于计算机图形学、机器人学、相机标定等领域,例如 Unity 和 COLMAP 中使用四元数表示三维旋转。

🏷️

标签

➡️

继续阅读