• <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 閱讀(1657) 評論(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游戲編程相關鏈接

            搜索

            最新評論

            国产精品久久久亚洲| 欧美精品乱码99久久蜜桃| 国产综合久久久久久鬼色| 青青国产成人久久91网| 久久久艹| 99久久99久久久精品齐齐| 国产精品免费看久久久香蕉| 久久毛片一区二区| 色成年激情久久综合| 一级a性色生活片久久无少妇一级婬片免费放 | 99精品伊人久久久大香线蕉| 精品久久久久久无码人妻蜜桃| 久久午夜福利无码1000合集| 久久美女人爽女人爽| 亚洲人成伊人成综合网久久久| 香港aa三级久久三级| 久久国产乱子伦免费精品| 久久久久国产一区二区三区| 国产精品久久久久久久| 亚洲第一极品精品无码久久| 久久久久国产精品麻豆AR影院| 国产亚洲婷婷香蕉久久精品| 少妇高潮惨叫久久久久久| 国产精品久久久久久久久久影院| 大美女久久久久久j久久| 久久精品99久久香蕉国产色戒 | 国产亚洲色婷婷久久99精品| 国产精品久久久久久久久软件| 99久久国产综合精品五月天喷水| 2022年国产精品久久久久| 亚洲va久久久噜噜噜久久狠狠 | 成人精品一区二区久久久| 成人妇女免费播放久久久| 日产精品99久久久久久| 久久九九久精品国产免费直播| 久久久久一本毛久久久| 国产精品狼人久久久久影院| 精品99久久aaa一级毛片| 91精品国产高清久久久久久91| 国产2021久久精品| 久久精品成人一区二区三区|