四元数与旋转
二元数
表达
二元数即普通的复数
对于\(e^{i\theta}=\cos\theta+i\sin\theta\)的来源,可用泰勒展开(在复数上的推广)
四元数
表达
以下涉及四元数的计算,可以看懂后面的内容再回来
对于\(e^{\hat{q}v}=\cos |v|+\frac{\hat{q}v}{|v|}\sin|v|\)来源,同样可用泰勒展开(在复数上的推广)
矩阵形式表示虚部:
其它相关的四元数概念:
- 实四元数:\(q=[s,0]\)
- 纯四元数:\(q=[0,v]\)
- 共轭四元数:\(q*=[s,-v]\)
- 单位四元数:\(|q|=\sqrt{qq*}=\sqrt{s^2+|v|^2}=1\)
单位四元数的乘法满足群,证明过程可用四元数的二元形式乘法 - 四元数规范化:\(\frac{q}{|q|}\)
- 四元数求逆:\(q^{-1}=\frac{q*}{|q|^2}\)
- 四元数的对数:\(log(q)=log(re^{\frac{v\hat{q}}{|v|}\theta})=log(r)+\frac{v\hat{q}}{|v|}\theta\)
- 四元数的幂次:\(q^t=(re^{\frac{v\hat{q}}{|v|}\theta})^t=r^te^{\frac{v\hat{q}}{|v|}\theta t}\)
简化表示:
也有直接用\(\hat{v}\)代表\(v\hat{q}\)的,此时\(\hat{v}\)与\(\hat{q}\)不同,不是基的意思,可以看作是纯四元数
但是\(\hat{v_1}\times\hat{v_2}\)时应该看作\(v_1\times v_2\)
即涉及到点乘和叉乘时都要把纯四元数当做向量
运算
基的运算
基础运算:\(i^2=j^2=z^2=ijk=-1\)
可以推导出的运算(记忆方式联想叉乘,这些运算用矩阵形式同样也适用):
\(ij=-ji=k\)
\(ik=-ki=-j\)
\(jk=-kj=i\)
向量与基的元素乘:
两个基相乘:
向量的运算
从线性代数角度,对于\(n\)维列向量\(a,b\),有
- 内积:\(a^Tb\)
- 叉积:\(a\times b\)
- 外积:\(ab^T\)
对于内积:满足交换律和分配律,不满足结合律
- 交换律:\(a\cdot b=b\cdot a\)
- 分配律:\(a\cdot (b+c)=a\cdot b+a\cdot c\)
对于叉积:满足反交换律和分配律,不满足结合律
- 反交换律:\(a\times b=-b\times a\)
- 分配律:\(a\times (b+c)=a\times b+a\times c\)
- 三重矢积公式:
\((a\times b)\times c=a\cdot c\cdot b-b\cdot c\cdot a\)
\(a\times (b\times c)=a\cdot c\cdot b-a\cdot b\cdot c\)
对于混合积运算:
- 标量三重积:\((a\times b)\cdot c=a\cdot (b\times c)\)
特别有:\(a\cdot (a\times c)=0\)
四元数加法、乘法与点积
加法: 把两个四元数的实部和虚部对应相加
\(\begin{aligned}q_1+q_2=(s_1+ix_1+jy_1+kx_1)+(s_2+ix_2+jy_2+kz_2)\\=(s_1+s_2)+i(x_1+x_2)+j(y_1+y_2)+k(z_1+z_2)\end{aligned}\)
乘法:
- 四元数普通形式乘法运算:
- 四元数二元形式乘法运算:
- 四元数虚部的乘法:\((v_1\hat{q})*(v_2\hat{q})=[-v_1\cdot v_2,\;v_1\times v_2]\)
若\(v_1\)与\(v_2\)平行,则结果的虚部为0
若\(v_1\)与\(v_2\)垂直,则结果的实部为0,将满足虚部运算的封闭性 - 四元数与三维向量相乘:实际上就是把三维向量转化纯为四元数再相乘
- 模乘性质:\(|q_1q_2|=|q_1||q_2|\)
点积: \(q_1\cdot q_2=s_1s_2+v_1v_2\)
欧拉角旋转
欧拉角与内旋外旋
欧拉角有多种定义方式,其关键在于:旋转轴顺序、旋转角度、内旋和外旋的选择
- 旋转轴顺序: 三次连续旋转一共有12种
两条轴: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 - 旋转角度: 有正负之分,正则按右手定则旋转,负则按左手定则旋转
- 内旋和外旋:
内旋:按自身坐标系(会变)的坐标轴依次旋转
外旋:按全局坐标系(不变)的坐标轴依次旋转
旋转矩阵
绕轴旋转的正向和反向按右手定则来,默认旋转的度数是指正向旋转,坐标采用列向量形式
设绕\(Z,Y,X\)轴旋转的旋转矩阵分别为\(Z,Y,X\),则
假设自身坐标系和全局坐标系在初始时重合,自身坐标系经过Z-Y-X外旋后任取一点,它在最终自身坐标系内的坐标为\(P_1\),在全局坐标系内的坐标为\(p_1\),则有
其中逆矩阵其实就是反方向旋转,又因为\(Z,Y,X\)均为单位正交阵,所以它们的逆矩阵为它们的转置矩阵
\(P_1=Rp_1\)是从全局坐标转为自身坐标,可以看成外旋Z-Y-X的结果,也可以看成是内旋X-Y-Z的结果
\(p_1=R^{-1}P_1\)则是从自身坐标转为全局坐标,与全局坐标转为自身坐标互逆
注意:
这里旋转矩阵\(R\)有两种解释,即外旋Z-Y-X的结果或内旋X-Y-Z的结果
对于外旋,\(R\)是左乘形成的,即依次左乘\(Z(\alpha),Y(\beta),X(\gamma)\)得到的\(R=X(\gamma)Y(\beta)Z(\alpha)\),矩阵左乘可以看做是坐标在变换(线性代数的向量空间章节中的过渡矩阵内容)
对于内旋,\(R\)是右乘形成的,即依次右乘\(X(\gamma),Y(\beta),Z(\alpha)\)得到的\(R=X(\gamma)Y(\beta)Z(\alpha)\),矩阵右乘可以看做是基底在变换
所以这里的左乘和右乘,都是指\(R\)的形成过程,而不是对坐标去左乘或右乘(毕竟坐标都是列向量了),而无论是左乘还是右乘,它们的结果即\(R\),都是一样的
此外,旋转矩阵与坐标相乘本质上是外旋操作,比如\(X(\gamma)Y(\beta)Z(\alpha)p_1\)可以依次分解成三个外旋操作,即先绕\(Z\)轴内旋\(\alpha\)度,再按\(Y\)轴内旋\(\beta\)度,最后按\(X\)轴内旋\(\gamma\)度,而对于内旋来说却做不到这样的按结合律的分解
四元数旋转
绕轴旋转的正向和反向按右手定则来,默认旋转的度数是指正向旋转,坐标采用列向量形式
共轭变换
若要让向量\(p\)绕轴向量\(v\)正向旋转\(\theta\)度,则\(q=\cos\frac{\theta}{2}+\sin\frac{\theta}{2}v\hat{q}\),其中\(|v|=1\)
共轭变换的解读
抽象理解
四元数旋转实际上就是对一个三维向量进行四元数的共轭变换
左乘\(q\)是对向量\(p\)进行第一次旋转,把三维向量旋转到四维里去(本质是把三维向量放在四维空间进行旋转)
右乘\(q^{-1}\)是对向量\(p\)进行第二次旋转,把四维的向量再次旋转到三维里去(本质是把两次旋转后的向量映射回三维)
推导分析
结合上式的推导进行分析可知
- \(q\)包含了旋转轴向量\(v\)以及旋转角度\(\theta\)的信息
- 倒数第二条式子解释了为什么\(q\)中的\(\theta\)要以\(\frac{\theta}{2}\)的形式出现
- 最后一条式子解释了为什么共轭变换能实现绕轴旋转:
- 先把\(p\)分解成\(p_{\parallel}\)和\(p_{\perp}\),然后在基底\(u、p_{\perp}、w\)下进行旋转,其中\(u\)是轴向量
- 分量\(p_{\parallel}\)正向旋转\(\theta\)度后不变:\(p_{\parallel}'=p_{\parallel}\)
- 分量\(p_{\perp}\)正向旋转\(\theta\)度后变为:\(p_{\perp}'=\cos\theta p_{\perp}+\sin\theta w\)
- 最后再把旋转后的两个分量相加,得到向量\(p\)旋转后的结果:\(p'=p_{\parallel}'+p_{\perp}'=p_{\parallel}+\cos\theta p_{\perp}+\sin\theta w\)
- 当轴向量\(v\)与待旋转向量\(p\)平行时:有\(qp=pq\),即轴向量按轴自身旋转时保持不变
- 当轴向量\(v\)与待旋转向量\(p\)垂直时:有\(qp=pq^{-1}\)
\(qp=pq^{-1}=[0,sp_{\perp}+v\times p_{\perp}]=[0,\cos\frac{\theta}{2}p_{\perp}+\sin\frac{\theta}{2}u\times p_{\perp}]=[0,\cos\frac{\theta}{2}p_{\perp}+\sin\frac{\theta}{2}w]\)
说明此时已经将向量\(p\)在三维空间上绕轴旋转了\(\theta\)度,即\(v\)与\(p\)垂直时四元数乘法不会把\(p\)旋转到四维里去(本质是此时在四维空间中的旋转仍能映射到三维空间上),此时左乘即\(qp\)是绕轴正向旋转,右乘即\(pq\)是绕轴反向旋转(或左手定则的正向旋转)
四元数与旋转矩阵
这里的旋转矩阵与外旋Z-X-Y得到的旋转矩阵是一样的
参考链接
https://www.cnblogs.com/dechinphy/p/quaternion-calc.html
https://blog.csdn.net/xinxiangwangzhi_/article/details/124650910
https://zhuanlan.zhihu.com/p/144032401
https://blog.csdn.net/Boooooots/article/details/87995418
https://blog.csdn.net/weixin_45590473/article/details/122884112

浙公网安备 33010602011771号