• <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游戲編程相關鏈接

            搜索

            最新評論

            青青热久久国产久精品| 久久久久国产| 色偷偷88888欧美精品久久久| 国产成人精品综合久久久久| 久久精品国产亚洲AV电影| 久久99精品久久久久久hb无码 | 午夜精品久久久久| 性高湖久久久久久久久| 久久精品成人国产午夜| 婷婷国产天堂久久综合五月| 久久99国产精品久久| 无码人妻久久一区二区三区蜜桃| 狼狼综合久久久久综合网| 久久精品一区二区三区中文字幕| 国产成人综合久久精品红| 久久免费视频观看| 精品多毛少妇人妻AV免费久久| 久久久精品免费国产四虎| 亚洲av成人无码久久精品| 日韩一区二区三区视频久久| 99久久99这里只有免费的精品| 性做久久久久久久久浪潮| 国内精品久久久久久中文字幕| 久久综合给合久久狠狠狠97色 | 国内精品久久国产大陆| 国产aⅴ激情无码久久| 久久亚洲2019中文字幕| 亚洲国产成人久久综合一 | 久久久久高潮综合影院| 欧美一级久久久久久久大| 精品久久久久久国产牛牛app| 久久久久久久99精品免费观看| 国产精品美女久久久m| 无码AV中文字幕久久专区| 亚洲中文字幕伊人久久无码| 久久精品国产亚洲7777| 久久本道久久综合伊人| 91精品国产91久久久久久| 青青草原综合久久| 精品久久久久久无码免费| 久久久WWW成人|