《3D游戏与计算机图形学中的数学方法》读书笔记--四元数

《3D游戏与计算机图形学中的数学方法》读书笔记--四元数

定义

四元数是对复数集合的拓展,可以看做四维向量空间,其中的元素 q q q可表示为: (1) q = &lt; w , x , y , z &gt; = w + x i + y j + z k q=&lt;w,x,y,z&gt;=w+xi+yj+zk\tag{1} q=<w,x,y,z>=w+xi+yj+zk(1)
通常,四元数被写作 q = s + v ⃗ q=s+\vec v q=s+v ,其中, s s s表示 w w w标量部分, v ⃗ \vec v v q q q的向量部分。

运算规则

四元数乘法满足分配率,虚部 i , j , k i,j,k i,j,k满足以下规则:
(2) i 2 + j 2 + k 2 = − 1 i^2+j^2+k^2=-1\tag{2} i2+j2+k2=1(2)
(3) i j = − j i = k ij=-ji=k\tag{3} ij=ji=k(3)
(4) j k = − k j = i jk=-kj=i\tag{4} jk=kj=i(4)
(5) k i = − i k = j ki=-ik=j\tag{5} ki=ik=j(5)
四元数乘法不满足交换律,所以乘法顺序很重要。
假设两个四元数 q 1 = w 1 + x 1 i + y 1 j + z 1 k q_1=w_1+x_1i+y_1j+z_1k q1=w1+x1i+y1j+z1k q 2 = w 2 + x 2 i + y 2 j + z 2 k q_2=w_2+x_2i+y_2j+z_2k q2=w2+x2i+y2j+z2k则:
(6) q 1 q 2 = ( w 1 w 2 − x 1 x 2 − y 1 y 2 − z 1 z 2 ) + ( w 1 x 2 + x 1 w 2 + y 1 z 2 − z 1 y 2 ) i + ( w 1 y 2 − x 1 z 2 + y 1 w 2 + z 1 x 2 ) j + ( w 1 z 2 + x 1 y 2 − y 1 x 2 + z 1 w 2 ) k \begin{aligned} q_1q_2=&amp;(w_1w_2-x_1x_2-y_1y_2-z_1z_2)\\ &amp;+(w_1x_2+x_1w_2+y_1z_2-z_1y_2)i\\ &amp;+(w_1y_2-x_1z_2+y_1w_2+z_1x_2)j\\ &amp;+(w_1z_2+x_1y_2-y_1x_2+z_1w_2)k \end{aligned} \tag{6} q1q2=(w1w2x1x2y1y2z1z2)+(w1x2+x1w2+y1z2z1y2)i+(w1y2x1z2+y1w2+z1x2)j+(w1z2+x1y2y1x2+z1w2)k(6)
当四元数表示为标量-矢量形式的时候: (7) q 1 q 2 = s 1 s 2 − v ⃗ 1 ⋅ v ⃗ 2 + s 1 v ⃗ 2 + s 2 v ⃗ 1 + v ⃗ 1 × v ⃗ 2 q_1q_2=s_1s_2-\vec v_1\cdot \vec v_2+s_1\vec v_2+s_2\vec v_1+\vec v_1\times \vec v_2\tag{7} q1q2=s1s2v 1v 2+s1v 2+s2v 1+v 1×v 2(7)
四元数的共轭表示为 q ˉ \bar{q} qˉ具有如下性质:
(8) q q ˉ = q ˉ q = q ⋅ q = ∣ ∣ q ∣ ∣ 2 = q 2 q\bar{q}=\bar{q}q=q\cdot q=||q||^2=q^2\tag{8} qqˉ=qˉq=qq=q2=q2(8)
非零四元数的倒数表示为: q − 1 q^{-1} q1 (9) q − 1 = q ˉ q 2 q^{-1}=\frac{\bar{q}}{q^2}\tag{9} q1=q2qˉ(9)

四元数旋转

对于三维空间的旋转变换 ϕ \phi ϕ而言,旋转前后要保证长度、角度和偏手性不变,即:
(长度不变) ∣ ∣ ϕ ( P ) ∣ ∣ = ∣ ∣ P ∣ ∣ ||\phi (P)||=||P||\tag{长度不变} ϕ(P)=P()
(角度不变) ϕ ( P 1 ) ⋅ ϕ ( P 2 ) = P 1 ⋅ P 2 \phi (P_1)\cdot \phi(P_2)=P_1\cdot P_2\tag{角度不变} ϕ(P1)ϕ(P2)=P1P2()
(偏手性不变) ϕ ( P 1 ) × ϕ ( P 2 ) = ϕ ( P 1 × P 2 ) \phi(P_1)\times \phi(P_2)=\phi (P_1\times P_2)\tag{偏手性不变} ϕ(P1)×ϕ(P2)=ϕ(P1×P2)()
如果同时满足角度不变和偏手性不变,则可得到同态函数: (10) ϕ ( P 1 ) ϕ ( P 2 ) = ϕ ( P 1 P 2 ) \phi(P_1)\phi(P_2)=\phi(P_1P_2)\tag{10} ϕ(P1)ϕ(P2)=ϕ(P1P2)(10)
同态函数满足以下条件: (11) ϕ q ( P ) = q P q − 1 \phi_q(P)=qPq^{-1}\tag{11} ϕq(P)=qPq1(11)
那么就表示旋转变换函数的集合。
经过计算,得出绕轴 A A A旋转 θ \theta θ角对应的单位四元数 q q q为:
(12) q = c o s θ 2 + A s i n θ 2 q=cos{\frac{\theta}{2}}+Asin\frac{\theta}{2}\tag{12} q=cos2θ+Asin2θ(12)

为什么要使用四元数?

对于多次旋转变换而言,两个旋转矩阵相乘要计算27次乘-加运算,而对于四元数而言,只需要16次乘-加运算。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值