四元數與旋轉


[四元數叉乘]

  共軛復數。

  

  對於四元數的叉乘, 需要按如下的展開式計算:

  

  根據上面展開式的計算,可以推導出[w1 v2][w2 v2]的計算公式:

  

[四元數與旋轉]

  在3D程序中,通常用quaternion來計算3D物體的旋轉角度,與Matrix相比,quaternion更加高效,占用的儲存空間更小,此外也更便於插值。在數學上,quaternion表示復數w+xi+yj+zk,其中i,j,k都是虛數單位: 

  i*i = j*j = k*k= -1 
  i*j = k, j*i = -k 

  可以把quaternion看做一個標量和一個3D向量的組合。實部w表示標量,虛部表示向量標記為V,或三個單獨的分量(x,y,z)。所以quaternion可以記為[ w, V]或[ w,(x,y,x)]。對quaternion最大的誤解在於認為w表示旋轉角度,V表示旋轉軸。正確的理解應該是w與旋轉角度有關,v與旋轉軸有關。例如,要表示以向量N為軸,軸旋α度,相對的quaternion應該是: 
  q = [ cos(α/ 2) , sin(α/ 2) N] 
    =[ cos(α/ 2) , ( sina(α/ 2) Nx, sin(α/ 2)Ny, sin(α/ 2)Nz ) ] 

  為了計算方便,一般要求N為單位矢量。對quaternion來說使用四個值就能記錄旋轉,而不是Matrix所需的十六個值。為什么用quaternion來計算旋轉很方便呢?先說過quaternion是一個復數,如果你還記得一點點復數的知識,那么應該知道復數乘法(叉乘)的幾何意義實際上就是對復數進行旋轉。對最簡單的復數p= x + yi來說,和另一個復數q = ( conα,sinα)相乘,則表示把p沿逆時針方向旋轉α: 
  p’ = pq 
  當然,x+yi的形式只能表示2D變換,對3D變換來說就需要使用 quaternion了,而且計算也要復雜一點。為了對3D空間中的一個點p(x,y,z)進行旋轉,需要先把它轉換為quaternion形式p = [0, ( x, y, z)],接下來前面討論的內容,定義q = cos(α/ 2) , sin(α/ 2) N為旋轉quaternion,這里N為單位矢量長度的旋轉軸,α為旋轉角度。那么旋轉之后的點p’則為: 
       p’ = qpq-1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM