Quaternion - Different from Euler Angles, using rotate VM

From OO Lab
Jump to: navigation, search

Quaternion
在xDIVA中,為了表現資料間的關係與空間性,我們將欲進行視覺化的資料以VM的形態繪製於3D場景之中。3D場景與VM皆具有XYZ三軸的維度,為此,我們提供了三維直角座標系統,如Euler Angles的Rotation方式,讓使用者可以藉由分別對VM的三軸給予旋轉角度,來觀察資料在空間中前後的關係,或是經由一連串的數學運算後,VM最終會在3D場景中呈現的樣貌。

雖然在xDIVA中,VM已經具有Euler Angles的 3D 屬性,即以x軸做為旋轉軸的Pitch、以y軸做為旋轉軸的Yaw、與以z軸做為旋轉軸的Roll,給予旋轉角度後可以改變其基本屬性,使得在3D場景中的VM物件可以進行旋轉。但是以Euler Rotation來表示物件的旋轉一直以來都存在萬向節鎖(Gimbal Lock)的問題。所謂萬向節鎖是指由於旋轉使用了Euler Rotation的運算方式,在旋轉物件的時候會因為軸向有階層關係,父階層的旋轉值疊加到子階層上(Double Transform),造成某兩個或是三個旋轉軸重合,進而使物件失去一個或兩個軸向的自由度,讓動作或軌跡出現非預期的結果。為了解決這個問題,我們在xDIVA系統上再給予VM一個 3D 屬性值,即Quaternion。

Quaternion是為純量與向量的組合,定義四元素的形式為 q = w + xi + yj + zk。使用四元數可以簡單的取出旋轉軸與旋轉角度,在旋轉的過程中便不會使物體失去對任意軸的自主性,不會造成萬向節鎖的問題。 為了讓使用者可以更方便的對四元數進行操作,我們提供了兩種基本的math mapping node:

  • General Quaternion
  • Axis-Angle Quaternion


Personal tools