bullet引擎中這個四元數代表什麼?

bullet文檔里第一個helloworld程序這一段:

  1. btDefaultMotionState* fallMotionState = new btDefaultMotionState(btTransform(btQuaternion(0,0,0,1),btVector3(0,50,0)));
  2. 想問下類構造參數里第一個btQuaternion(0,0,0,1)表示的這個下落運動狀態的什麼參數,如果是一個平動的物體那這個四元數取什麼值


這個四元數參數是代表剛體的坐向(orienation)。(0, 0, 0, 1) 是四元數單位元(identity),即代表剛體在預設的坐向。

對於一個立方體來說可能比較難理解,若假設剛體是一個茶壺,預設坐向可能是蓋子向+Y方向,咀向+X方向,如果你想改變它在開始時的坐向,就改變這個四元數參數。


我寫過一個類似的答案

求問物體從a位置到b位置,怎麼求其沿x y z軸的旋轉角度。? - 白如冰的回答

任何一個四元數可以看做一個標量部分s和三維向量部分vec{v}組成的,同樣的一個三維歐式空間的向量也可以看做標量部分為0的四元數。

以向量vec{u}為軸,將一個向量vec{v}旋轉	heta角的旋轉公式為vec{v}^{}=qvec{v}q^{-1},其中q=cos(	heta/2)+vec{u}sin(	heta/2)


四元數用來表示旋轉,btQuaternion(0,0,0,1)表示沒有旋轉,也就是物體一開始預設的方位朝向。比如一個圓錐體的錐頂初始是指向y軸,而Q(0,0,0,1)表示零旋轉,而Q(sin(π/4),0,0,cos(π/4))則表示將其旋轉到z軸。

如果一個不旋轉的物體,直接取Q(0,0,0,1)即可。


推薦閱讀:

TAG:遊戲引擎 | 物理引擎 |