三維旋轉矩陣的計算
旋轉矩陣(rotation matrix)是在乘以乙個向量的時候有改變向量的方向但不改變大小的效果的矩陣。旋轉矩陣不包括反演,它可以把右手座標系改變成左手座標系或反之。所有旋轉加上反演形成了正交矩陣的集合。
在三維空間中,旋轉變換是最基本的變換型別之一,有多種描述方式,如euler角、旋轉矩陣、旋轉軸/旋轉角度、四元數等。本文將介紹各種描述方式以及它們之間的轉換。
旋轉矩陣
用乙個3階正交矩陣來表示旋轉變換,是一種最常用的表示方法。容易證明,3階正交陣的自由度為3。注意,它的行列式必須等於1,當等於-1的時候相當於還做了乙個映象變換。
euler角
根據euler定理,在三維空間中,任意一種旋轉變換都可以歸結為若干個沿著座標軸旋轉的組合,組合的個數不超過三個並且兩個相鄰的旋轉必須沿著不同的座標軸。因此,可以用三個沿著座標軸旋轉的角度來表示乙個變換,稱為euler角。旋轉變換是不可交換的,根據旋轉順序的不同,有12種表示方式,分別為:xyz、xzy、xyx、xzx、yxz、yzx、yxy、yzy、zxy、zyx、zxz、zyz,可以自由選擇其中的一種。對於同乙個變換,旋轉順序不同,euler角也不同,在指定euler角時應當首先約定旋轉順序。
2.1 euler角 轉化為 旋轉矩陣
不妨設先繞z軸旋轉γ,再繞y軸旋轉β,最後繞x軸旋轉α,即旋轉順序為xyz,旋轉矩陣
旋轉軸/旋轉角度
用旋轉軸的方向向量n和旋轉角度θ來表示乙個旋轉,其中
θ>0表示逆時針旋轉。
3.1 旋轉軸/旋轉角度 轉化為 旋轉矩陣
設v是任意乙個向量,定義
如下圖所示
這樣,我們建立了乙個直角座標系 。
設u為v繞軸旋轉後得到的向量,則有
r即為旋轉矩陣。進一步可表示為
單位四元數(unit quaternions)
四元數由hamilton於2023年提出,實際上是在四維向量集合上定義了通常的向量加法和新的乘法運算,從而形成了乙個環。
q稱為單位四元數,如果||q||=1。乙個單位四元數可以表示三維旋轉。用單位四元數表示旋轉可以保持乙個光滑移動的相機的軌跡,適合動畫生成。
4.1 旋轉軸/旋轉角度 轉化為 單位四元數
根據旋轉軸n和旋轉角度θ,得到單位四元數q
4.2 單位四元數 轉化為 旋轉軸/旋轉角度
4.3 單位四元數 轉化為 旋轉矩陣
4.4 四元數的性質
定義四元數的逆、乘法和除法,如下所示
根據該性質,我們可以對兩個旋轉變換q1和q2作線性插值,這相當於在四維空間中的超球面上對點q1和q2作球面線性插值。
也可以按下面的方法計算
uml 菱形 UML各種表示方法
物件 負責代表部分的物件的生命週期,合成關係不能共享。表示方法 實心菱形 實線 箭頭,依賴關係 是類與類之間的連線,表示乙個類依賴於另乙個類的定義。例如如果 a依賴於b則 b體現為區域性變數,方法的引數 或靜態方法的呼叫。表示方法 虛線 箭頭 類之間的關係 uml把類之間的關係分為以下 種關聯 類a...
SLAM中的變換(旋轉與位移)表示方法
注 旋轉矩陣標題下涉及到的slam均不包含位移。根據同一點p在不同座標系下e e1,e2,e3 e e1 e2 e3 的座標a a1 a2,a3 a a1 a2 a3 有如下等式成立 即a ete a 其中ete 設為r為旋轉矩陣,即a ra 由此便得到p在e 座標系下到e 座標系下的座標變換。在s...
hdu 4998 矩陣表示旋轉
乙個旋轉變換可以轉化為乙個三維矩陣的變化 繞 x,y 旋轉角度r,執行十次,求等價旋轉點和角度 繞原點矩陣如下 由於是繞 x,y x1 x x0 cos0 y y0 sin0 x0 y1同理,那麼第三行前兩列即為x0 1 cos r y0 sin r 和y0 1 cos r x0 sin r 最後根...