程序中的四元數(shù)表示法
網上有很多四元數(shù)相關的文章。
百度百科 http://baike.baidu.com/view/319754.htm
某位的博客 http://caterpillar.onlyfun.net/Gossip/ComputerGraphics/QuaternionsRotate.htm
但當你看完這些后。再看著下面這樣的代碼,你能快速回過神來么?


























































//========================================================
不用多說,肯定有回過神來的,也有沒有回過神來的。
正如上面那某位的博客里面講到的。
對于旋轉軸A,繞其旋轉一定的角度,則可以表示為
x = s * Xa
y = s * Xb
z = s * Xc
w = cos(θ/2)
s = sin(θ/2)
這正是我們FromAxisAngle 所做的事情。
而QuaternionToMatrix則是對應了
我想說明的是,數(shù)學庫本身并不在于代碼。而是在于數(shù)學公式,代碼僅是將其用另一種符號表示出來而已。只要仔細去看,定能明白其中的道理。
關于文中介紹的公式推導以及萬向鎖,可以GOOGLE和百度。
另外,編程中還經常用到歐拉角和矩陣的轉換。
這三個的特點。
矩陣運算的數(shù)據相對來說比較直觀,容易調試和診斷。但數(shù)據存儲量大,特別是旋轉的時候,會浪費很多空間。
歐拉角儲存小,但有萬向鎖,并且插值不夠平滑。
四元數(shù)據量介于二者之間。但插值容易。
在骨骼動畫中,可以在文件中存儲歐拉角,加載后將旋轉數(shù)據轉換為四元數(shù)。最后動畫計算時統(tǒng)一采用矩陣運算。
要說的東西很多,一言難盡。今天就到這里吧。
posted on 2010-12-20 23:22 麒麟子 閱讀(798) 評論(0) 編輯 收藏 引用 所屬分類: GPU and Graphic