查看“︁四元数与空间旋转”︁的源代码
←
四元数与空间旋转
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{NoteTA |G1=Math |G2=Physics }} '''单位四元数'''('''Unit quaternion''')可以用于表示[[三维空间]]裡的旋转<ref name="Zachary">{{cite arXiv|last=Treisman|first=Zachary|eprint=0908.1205|title=A young person's guide to the Hopf fibration}}</ref>。它与常用的另外两种表示方式(三维[[正交矩阵]]和[[欧拉角]])是等价的,但是避免了欧拉角表示法中的[[万向锁]]问题。比起三维正交矩阵表示,[[四元数]]表示能够更方便地给出旋转的转轴与旋转角。 ==基本方法== 用四元数来表示旋转要解决两个问题,一是如何用四元数表示三维空间裡的点,二是如何用四元数表示三维空间的旋转。 === 四元数表示空间中的点 === 若三维空间裡的一个点的[[笛卡尔坐标]]为 ({{mvar|x}},{{mvar|y}},{{mvar|z}}),则它用纯四元数(类似于纯虚数,即实部为0的四元数){{mvar|xi}}+{{mvar|yj}}+{{mvar|zk}} 表示。 === 单位四元数表示一个三维空间旋转 === 设 {{mvar|q}} 为一个单位四元数,而 {{mvar|p}} 是一个纯四元数,定义 :<math>R_q(p)=qpq^{-1}</math> 则 {{mvar|R}}<sub>{{mvar|q}}</sub>({{mvar|p}}) 也是一个纯四元数,可以证明 {{mvar|R}}<sub>{{mvar|q}}</sub> 确实表示一个旋转,这个旋转将空间的点 {{mvar|p}} 旋转为空间的另一个点 {{mvar|R}}<sub>{{mvar|q}}</sub>({{mvar|p}})<ref name="Zachary" />。 == 与正交矩阵表示的关系 == 四元数的表示与正交矩阵表示是等价的,这可以通过直接的代数计算得到。 仿照关于单位[[复数 (数学)|复数]]的[[欧拉公式]]的证明方法,可以得到单位四元数的欧拉公式: :<math>e^{\frac\theta2(xi+yj+zk)}=\cos\frac\theta2+(xi+yj+zk)\sin\frac\theta2,\quad\text{for }x,y,z\in\mathbb{R} \text{ s.t. } x^2+y^2+z^2=1</math> 显然,当 {{mvar|x}}=1, {{mvar|y}}={{mvar|z}}=0 的时候就回到一般的欧拉公式。 设 :<math>q=e^{\frac\theta2(u_xi+u_yj+u_zk)}=\cos\frac\theta2+(u_xi+u_yj+u_zk)\sin\frac\theta2</math> :<math>p=xi+yj+zk</math> :<math>p'=q^{-1}pq=w+x'i+y'j+z'k</math> (通过下面的计算可以知道,{{mvar|w}}=0,即计算结果是纯四元数) 则 :<math>q^{-1}=e^{-\frac\theta2(u_xi+u_yj+u_zk)}=\cos\frac\theta2-(u_xi+u_yj+u_zk)\sin\frac\theta2</math> 为简便起见,令 :<math>c=\cos\frac\theta2, s=\sin\frac\theta2</math> <math> \begin{array}{rcl} q^{-1}pq&=&[c-(u_xi+u_yj+u_zk)s](xi+yj+zk)[c+(u_xi+u_yj+u_zk)s]\\ &=&[c-(u_xi+u_yj+u_zk)s]\{-(u_xx+u_yy+u_zz)s+i[xc+(u_zy-u_yz)s]+j[yc+(u_xz-u_zx)s]+k[zc+(u_yx-u_xy)s]\}\\ &=&i\{xc^2+2(u_zy-u_yz)sc+[u_x(u_xx+u_yy+u_zz)-u_y(u_yx-u_xy)+u_z(u_xz-u_zx)]s^2\}+\ldots \end{array} </math> 省略号表示由第一项通过简单的轮换可以得到的项。最后得到四元数的矩阵表示为 <math> \begin{bmatrix}x'\\y'\\z'\end{bmatrix}=M(q)\begin{bmatrix}x\\y\\z\end{bmatrix}=\begin{bmatrix} c^2-(1-2u_x^2)s^2 & 2u_xu_ys^2+2u_zsc & 2u_xu_zs^2-2u_ysc\\ 2u_xu_ys^2-2u_zsc & c^2-(1-2u_y^2)s^2 & 2u_yu_zs^2+2u_xsc\\ 2u_xu_zs^2+2u_ysc & 2u_yu_zs^2-2u_xsc & c^2-(1-2u_z^2)s^2\\ \end{bmatrix}\begin{bmatrix}x\\y\\z\end{bmatrix} </math> 设 :<math>C=\cos\theta,S=\sin\theta</math> 运用简单的三角恒等变形可以得到, :<math> M(q)=\begin{bmatrix} C+u_x^2(1-C) & u_xu_y(1-C)+u_zS & u_xu_z(1-C)-u_yS\\ u_xu_y(1-C)-u_zS & C+u_y^2(1-C) & u_yu_z(1-C)+u_xS\\ u_xu_z(1-C)+u_yS & u_yu_z(1-C)-u_xS & C+u_z^2(1-C)\\ \end{bmatrix} </math> 容易验证,{{mvar|M}}({{mvar|q}})是正交矩阵,且行列式为+1,于是我们得到了四元数对应于正交矩阵的关系。即我们证明了{{mvar|R}}<sub>{{mvar|q}}</sub>的确表示三维空间中的一个旋转。进一步由旋转的正交矩阵表示的相关知识知,上式中的 {{mvar|θ}} 就是旋转角。 == 旋转轴与旋转角 == 由四元数的结合律马上可以得到,若{{mvar|r}}为单位纯四元数,则<ref name="Zachary" /> :<math>R_{e^{i\lambda r}}(kr)=e^{-i\lambda r}kre^{i\lambda r}=kr,\ \forall\lambda,k\in\mathbb{R}</math> 这表明{{mvar|kr}}在旋转操作下不变,也就是{{mvar|kr}}给出旋转的旋转轴(当然{{mvar|r}}也给出旋转的旋转轴),不妨取{{mvar|k}}={{mvar|s}},由四元数的欧拉公式我们马上知道,任给一个单位四元数{{mvar|q}},计算它的虚部,我们就马上可以知道转轴是什么。 同时,根据四元数的正交矩阵表示,我们又可以马上得到,计算一个单位四元数的实部,它的[[反余弦]]值给出旋转角的一半。于是我们马上可以看到用四元数相对于正交矩阵表示的优势:在四元数表示下,计算转轴和旋转角变得异常简单。 进一步地,这表明了三维空间中的每一个旋转都可以用单位四元数表出。若进一步要求 {{mvar|u}}<sub>{{mvar|x}}</sub> 非负,则这种表出是唯一的。 == 旋转操作的复合 == 显然有<ref name="Zachary" />: :<math>R_{q_1q_2}(p)=(q_1q_2)p(q_1q_2)^{-1}=q_1q_2pq_2^{-1}q_1^{-1}=R_{q_1}[R_{q_2}(p)]</math> 于是两个旋转操作的复合,只需要将对应的单位四元数相乘,这一点比欧拉角表示要简单。 == 与超球面、典型群、自旋群的关系 == 首先很容易看到,单位四元数与[[超球面|3-球面]]{{mvar|S}}<sup>3</sup>(或三维[[实射影空间]],'''RP'''<sup>3</sup>)同构。 其次,根据单位四元数的矩阵表示,我们又知道,存在一个单位四元数到特殊[[正交群]] SO(3) 的[[同态]],但这不是同构。给定一个角 {{mvar|θ}}, 2π+{{mvar|θ}} 与 {{mvar|θ}} 对应的正交矩阵相同,但是由欧拉公式给出的单位四元数不同(恰好[[相反数|相反]])。实际上,这反映了在三维空间中旋转 2π 弧度和旋转 4π 弧度是不等价的,参见[[旋量]]。 事实上,单位四元数群与[[自旋群]] Spin(3) 同构。这也表明,{{mvar|S}}<sup>3</sup>与自旋群 Spin(3) 同构。进一步地,它们[[微分同胚]]。 另一方面,单位四元数群与复数域上的2-球面同构,于是与特殊正交群 SO(2,'''C''') 同构,而后者实际上就是[[特殊酉群]] SU(2)。{{mvar|S}}<sup>3</sup> 与 SU(2) 也是微分同胚的。 ==参考== <references /> *Simon L. Altman (1986) ''Rotations, Quaternions, and Double Groups'', Dover Publications. *Du Val, Patrick (1964), "''Homographies, quaternions, and rotations''". Oxford, Clarendon Press (Oxford mathematical monographs). LCCN 64056979 == 外部連結 == * 線代啟示錄—[https://ccjou.wordpress.com/2014/04/23/%E5%9B%9B%E5%85%83%E6%95%B8%E8%88%87%E4%B8%89%E7%B6%AD%E7%A9%BA%E9%96%93%E6%97%8B%E8%BD%89/ 四元數與三維空間旋轉]{{Wayback|url=https://ccjou.wordpress.com/2014/04/23/%E5%9B%9B%E5%85%83%E6%95%B8%E8%88%87%E4%B8%89%E7%B6%AD%E7%A9%BA%E9%96%93%E6%97%8B%E8%BD%89/ |date=20150419194001 }} * [http://openhome.cc/Gossip/ComputerGraphics/QuaternionsRotate.htm 四元數與旋轉]{{Wayback|url=http://openhome.cc/Gossip/ComputerGraphics/QuaternionsRotate.htm |date=20150421143417 }} [[Category:四元數]] [[Category:三维旋转]] [[Category:刚体力学]] [[Category:三维计算机图形学]]
该页面使用的模板:
Template:Cite arXiv
(
查看源代码
)
Template:Mvar
(
查看源代码
)
Template:NoteTA
(
查看源代码
)
Template:Wayback
(
查看源代码
)
返回
四元数与空间旋转
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息