bullet引擎中這個四元數代表什麼?
01-26
bullet文檔里第一個helloworld程序這一段:
- btDefaultMotionState* fallMotionState = new btDefaultMotionState(btTransform(btQuaternion(0,0,0,1),btVector3(0,50,0)));
- 想問下類構造參數里第一個btQuaternion(0,0,0,1)表示的這個下落運動狀態的什麼參數,如果是一個平動的物體那這個四元數取什麼值
這個四元數參數是代表剛體的坐向(orienation)。(0, 0, 0, 1) 是四元數單位元(identity),即代表剛體在預設的坐向。
對於一個立方體來說可能比較難理解,若假設剛體是一個茶壺,預設坐向可能是蓋子向+Y方向,咀向+X方向,如果你想改變它在開始時的坐向,就改變這個四元數參數。
我寫過一個類似的答案求問物體從a位置到b位置,怎麼求其沿x y z軸的旋轉角度。? - 白如冰的回答
任何一個四元數可以看做一個標量部分和三維向量部分組成的,同樣的一個三維歐式空間的向量也可以看做標量部分為的四元數。
以向量為軸,將一個向量旋轉角的旋轉公式為,其中。
四元數用來表示旋轉,btQuaternion(0,0,0,1)表示沒有旋轉,也就是物體一開始預設的方位朝向。比如一個圓錐體的錐頂初始是指向y軸,而Q(0,0,0,1)表示零旋轉,而Q(sin(π/4),0,0,cos(π/4))則表示將其旋轉到z軸。如果一個不旋轉的物體,直接取Q(0,0,0,1)即可。
推薦閱讀: