天天看點

四元素(Quaternion)與旋轉 一、四元數的含義

一、四元數的含義

1、數學含義及表示方法

      三維複數域,可表示為 Q = [x, y, z,w] 或 Q = w + x*i + y*j + z*k, 其中 w 是實部,[x, y, z]是虛部,[i, j, k]是虛軸機關向量

2、實體含義

        四元數常用于表示三維空間的旋轉變換,注意它表示一個變換,不是一個狀态,它描述了一個旋轉軸[α, β, γ]和角θ,對應的四元數為Q = [cos(θ/2), α*sin(θ/2), β*sin(θ/2), γ*sin(θ/2)],一般我們使用右手坐标系,逆時針旋轉為正。

       與其它旋轉表示方法相比,例如歐拉角、矩陣,四元數并不直覺,但具有以下優點:

  • 四元數不存在歐拉角中的 “gimbal lock” 問題,翻譯成中文叫“萬向節死鎖”,名字很裝B有木有,其實就是當三個軸中的兩個軸由于旋轉重合了,導緻旋轉失去了一個自由度,想具體了解的,請參考歐拉角與萬向節死鎖(帶視訊的,非常形象)
  • 四元數隻有四個數,矩陣表示變換一般都是 4*4 的,存儲計算量更小(此優點可忽略
    四元素(Quaternion)與旋轉 一、四元數的含義
  • 兩個四元數之間更容易插值(實際應用中,什麼時候需要插值
    四元素(Quaternion)與旋轉 一、四元數的含義

       注意:四元素在多次運算後,會存在累計誤差,需要定期歸一化處理

二、四元數的基本運算及其實體意義

     1. 虛軸的性質

          i * i = -1; i * j = k(右手定責:i 轉到j軸,大拇指指向的方向,如下圖);j * i = -k 

四元素(Quaternion)與旋轉 一、四元數的含義

     2. 模長 Length:sqrt(x * x + y * y + z * z + w * w)

     3. 歸一化 Normalize:(x, y, z, w)./Length;用四元數表示旋轉需要歸一化處理

     4. 共轭 conjugate:(-x, -y, -z, w),對比四元數實體含義易得:共轭表示旋轉軸不變,旋轉角相反

     5.  點乘Dot(q1 .* q2):q1.x * q2.x + q1.y * q2.y + q1.z * q2.z + q1.w * q2.w

     6. 叉乘(q1 * q2):兩個四元數的各元素兩兩相乘,虛軸的乘法按上述第一點"虛軸的性質”處理

          叉乘的實體含義:先繞 q2 做旋轉變換,再繞 q1 做旋轉變化

     7. 向量 v 繞四元數旋轉:q * v * conjugate(q)

三、 四元數與歐拉角、旋轉矩陣之間的互相轉換

       該節内容請直接參考代碼(下載下傳),此代碼由虛拟現實(VR)公司Oculus 原創,包含上述四元數的基本運算,矩陣的基本運算,四元數、歐拉角、旋轉矩陣之間的互相轉換

 

繼續閱讀