三維旋轉


    在二維空間中,繞任意點旋轉可以分解為:

    1)平移旋轉點到原點,2)繞原點旋轉,3)逆平移旋轉點;

    可用矩陣表示為 

    其中, 表示繞原點旋轉  為平移矩陣。

   在三維空間中繞任意軸旋轉一個對象,可以分解為分別繞不同軸旋轉一定角度。

   1 繞三維坐標軸旋轉

      設 x,y,z 為三個正交方向上的單位向量,將他們構成三維空間坐標需要滿足以下叉乘關系:

      

      定義繞各個坐標軸旋轉方向如下圖:

       

 

      當任意點繞 Z 軸旋轉時,該點在 Z 軸上坐標保持不變,在 X,Y 軸上坐標軸上退化為二維旋轉,如下圖所示:

      

     由  得 

      由  得 

      最終得:  ,其中矩陣變換表示為:

      同理, 繞 X 軸旋轉表示為:,繞 Y 軸旋轉表示為:

      當對任意點旋轉  后再旋轉 ,該點回到原始位置,則旋轉矩陣  是旋轉矩陣  得逆矩陣,觀察以上旋轉矩陣可知 

 

     2 繞過原點任意單位向量軸旋轉

        當旋轉軸為過原點任意軸時,可使用如下方案旋轉:

        1)旋轉對象使得旋轉軸與某一坐標軸重合;

        2)繞該坐標軸旋轉;

        3)使用逆旋轉使旋轉軸回到原始方向;

        使用矩陣表示為: 

        

        如上圖所示,u=(a,b,c) 為任意過原點旋轉軸,。要旋轉 u 使其與 z 軸重合,首先需將 u 軸旋轉到 xz 平面。

        將 u 投影到 yz 平面得 ,在 yz 平面上將  旋轉 到 z 軸的旋轉角等於將 u 繞 x 軸旋轉到 xz 平面。

        根據余弦定理得:

        利用向量叉乘求正弦:

        求解得:。這里不使用  求解是因為該公式無法確定計算結果符號。

        使用矩陣形式表示 u 繞 x 軸旋轉 ,旋轉后向量為:

         繞 y 軸旋轉到 z 軸上的旋轉角余弦為:

        利用向量叉乘求正弦:

        使用矩陣形式表示  繞 y 軸旋轉 

        當將任意單位坐標做旋轉到與 z 軸重合后,使用以下矩陣完成真實旋轉:

        然后使用逆旋轉矩陣還原原始坐標(逆旋轉矩陣為對應旋轉矩陣的轉置矩陣),實現繞任意過原點單位向量旋轉。

 

    3 羅德里格斯公式

       使用羅德里格斯公式,同樣可以實現繞過原點任意單位向量旋轉,詳細講解在 https://www.cnblogs.com/luofeiju/p/12016761.html。

       該方法最終推導出了旋轉矩陣為:

 

       理論上來說,以上兩種方案推導出的旋轉矩陣應該是一致的(旋轉軸與旋轉角度一致情況下)。

 

    4 引入平移

       當旋轉軸不過原點時,可以引入平移矩陣實現繞任意軸旋轉。

       假設旋轉軸過點 

       首先構造單位長度旋轉軸向量為: 

       構造平移矩陣為:

       旋轉矩陣  被改寫為:

       旋轉軸為以上單位旋轉向量,從而實現了繞任意軸旋轉。

       在羅德里格斯公式中,采用同樣方式構造繞任意軸旋轉矩陣為:

 

    5 四元數描述旋轉

       1)四元數概念

             四元數是復數到高維擴充,定義為 

             

             將四元數表示成向量 

             定義四元數加法為 

             等價於 

             定義四元數乘法為 

             由於四元數平方和為 ,可定義四元數的逆為 ,使得  成立。

       2)描述旋轉軸為過原點任意單位向量的旋轉

              為旋轉軸單位向量,定義 

             則任意點 p = (x,y,z) 被描述為 ,旋轉后點為 

             使用公式  可計算出 p 點旋轉后坐標 

             使用四元數計算規則可得 

             由於 ,有 

             

             引入向量 v 的叉積矩陣 ,上式可改寫為:,實現 p 到   旋轉變換。

       3)與羅德里格斯公式關系

             令旋轉軸為單位向量(x,y,z),旋轉角度為 ,旋轉四元數定義為 

             根據三角函數有 

             羅德里格斯公式改寫為  

             由於 ,可定義 

             進一步改寫羅德里格斯公式 

             最終整理結果為 

             將  整理成矩陣形式,其結果與羅德里格斯整理矩陣一致,因此驗證了兩種方式是一致的。

 

    參考資料 Computer Graphics with OpenGL   Donald Hearn & M. Pauline Baker & Warren R. Carithers


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM