• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            天行健 君子當自強而不息

            3D中的方位和角位移(4)

             

            四元數乘法(叉乘)

            四元數能根據復數乘法解釋來相乘,如下:

            這導出了四元數乘法的標準定義,下面以兩種四元數記法給出,見公式10.9:

            不用為四元數叉乘使用乘號,"行"或 "列"四元數也沒有什么區別。

            四元數叉乘滿足結合律,但不滿足交換律,如公式10.10所示:

            現在看看兩個四元數叉乘的模:

            展開合并同類項:

            最后應用四元數模的定義得到公式 10.11:

            因此,四元數乘積的模等于模的乘積。這個結論非常重要,因為它保證了兩個單位四元數相乘的結果還是單位四元數。

            四元數乘積的逆等于各個四元數的逆以相反的順序相乘,如公式10.12所示:

            現在到了四元數非常有用的性質。讓我們"擴展"一個標準3D點(x, y, z)到四元數空間,通過定義四元數p=[0, (x, y, z)]即可(當然,在一般情況下,p不會是單位四元數)。設q為我們討論的旋轉四元數形式[cos(θ/2), nsin(θ/2)],n為旋轉軸,單位向量;θ為旋轉角。你會驚奇地發現,執行下面的乘法可以使3D點pn旋轉:

            已經證明,四元數乘法和3D向量旋轉的對應關系,更多的是理論上的意義,不是實踐上的。實際上,它幾乎和把四元數轉換到矩陣形式然后再用矩陣乘以向量所用的時間一樣。

            讓我們看多次旋轉的情況,將點p用一個四元數a旋轉然后再用另一個四元數b旋轉:

            注意,先進行a旋轉再進行b旋轉等價于執行乘積ba代表的單一旋轉。因此,四元數乘法能用來連接多次旋轉,這和矩陣乘法的效果一樣。根據四元數乘法的標準定義,這個旋轉是以從右向左的順序發生的。這非常不幸,因為它迫使我們以 "由里向外"的順序連接多次旋轉,這和以矩陣形式作同樣的運算是不同的(至少在使用行向量時是不同的)。

            針對公式10.9所導致的"順序顛倒"問題,我們將違背標準定義,以相反的運算順序來定義四元數乘法。注意,僅僅向量叉乘部分受到了影響,見公式10.13:

            這并沒有改變四元數的基本性質和用v、θ的幾何解釋,仍然能用四元數乘法來直接旋轉向量,唯一不同的是,根據我們的定義,將四元數放在向量右邊,而把它的逆放在向量的左邊:

            能看到下面這個表達了多個旋轉連接的等式,它是自左向右的,與旋轉發生的順序一致:

            對于我們來說,讓四元數代表角位移的"高級"能力,使其易于使用,這比堅持正式標準更加重要。我們的目的在于理解四元數的本質和它提供給我們的操作,設計一個類將直接引出這些操作,在需要的地方使用這個類,永遠不需要再去擺弄里面的數。

             

            四元數的"差"

            利用四元數的乘法和逆,就能夠計算兩個四元數的"差"。"差"被定義為一個方位到另一個方位的角位移。換句話說,給定方位ab,能夠計算從a旋轉到b的角位移d。用四元數等式更加緊湊地表示為:ad=b

            兩邊同時左乘a-1:

            現在,我們就有了求得代表一個方位到另一個方位角位移的四元數的方法。

            數學上,兩個四元數之間的角度"差"更類似于"除",而不是真正的"差"(減法)。

             

            四元數點乘

            四元數也有點乘運算,它的記法、定義和向量點乘非常類似,如公式10.14所示:

            注意,和向量點乘一樣,其結果是標量。對于單位四元數ab,有-1 ≤ a . b ≤ 1。通常我們只關心 a . b 的絕對值,因為a . b = -(a . -b),所以b和-b代表相同的角位移。

            四元數點乘的幾何解釋類似于向量點乘的幾何解釋,四元數點乘 a . b 的絕對值越大,ab代表的角位移越"相似"。


            posted on 2008-02-13 17:03 lovedday 閱讀(1656) 評論(3)  編輯 收藏 引用

            評論

            # re: 3D中的方位和角位移(4) 2008-04-08 07:54 梁全

            經過仔細對比,公式10.9和公式10.13正好反了。

            也就是作者把四元數的 標準公式 和 改進公式 的表達式用反了。

            這應該只是疏忽,因為源代碼中作者按照改進公式的思想編寫的程序,可采用的公式是10.9的公式,看來只是寫書的時候把表達式弄顛倒了,程序編寫的還對。

              回復  更多評論   

            # re: 3D中的方位和角位移(4) 2008-04-09 08:37 lovedday

            不是疏忽,作者是故意改變四元數乘法的定義,目的是為了讓四元數乘法更易于表達旋轉。不過四元數是比較高級的話題,需要抽象代數的基礎,這本書其實并沒有真正講清楚,我也不是搞的特別清楚,不過已經理解了作者這么做的意圖。  回復  更多評論   

            # re: 3D中的方位和角位移(4) 2008-04-09 08:38 lovedday

            “對于我們來說,讓四元數代表角位移的"高級"能力,使其易于使用,這比堅持正式標準更加重要。我們的目的在于理解四元數的本質和它提供給我們的操作,設計一個類將直接引出這些操作,在需要的地方使用這個類,永遠不需要再去擺弄里面的數。”這是作者這么做的原因。  回復  更多評論   

            公告

            導航

            統計

            常用鏈接

            隨筆分類(178)

            3D游戲編程相關鏈接

            搜索

            最新評論

            久久AⅤ人妻少妇嫩草影院| 国产精品久久久久久五月尺| 精品人妻伦九区久久AAA片69| 青草国产精品久久久久久| 91精品国产高清久久久久久国产嫩草 | 精品一区二区久久| 久久婷婷是五月综合色狠狠| 久久国产一区二区| 看全色黄大色大片免费久久久 | 久久丫精品国产亚洲av不卡 | 人人狠狠综合久久亚洲婷婷| 亚洲国产精品一区二区久久hs| 久久婷婷人人澡人人| 久久青青草原精品国产| 久久人妻少妇嫩草AV无码专区| 色综合久久中文综合网| 亚洲欧洲中文日韩久久AV乱码| 国产综合免费精品久久久| 精品久久久久久中文字幕大豆网| 777久久精品一区二区三区无码 | 999久久久无码国产精品| 伊人久久大香线蕉亚洲五月天| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 伊人久久大香线蕉av不卡| 欧美综合天天夜夜久久| 欧美亚洲色综久久精品国产| 一本大道久久东京热无码AV| 99久久精品毛片免费播放| 精品国产99久久久久久麻豆 | 韩国三级中文字幕hd久久精品| 亚洲中文字幕无码一久久区| 日韩美女18网站久久精品| 亚洲欧洲精品成人久久奇米网| 狠狠色丁香婷婷综合久久来来去| 国产精品一久久香蕉国产线看观看 | 久久精品国内一区二区三区| 国产成人精品综合久久久久| 久久综合久久美利坚合众国| 色偷偷91久久综合噜噜噜噜| 久久精品无码专区免费| 久久久噜噜噜久久中文字幕色伊伊 |