三維旋轉矩陣的計算

2021-06-21 05:56:22 字數 2047 閱讀 9734

在三維空間中,旋轉變換是最基本的變換型別之一,有多種描述方式,如euler角、旋轉矩陣、旋轉軸/旋轉角度、四元數等。本文將介紹各種描述方式以及它們之間的轉換。

1. 旋轉矩陣

用乙個3階正交矩陣來表示旋轉變換,是一種最常用的表示方法。容易證明,3階正交陣的自由度為3。注意,它的行列式必須等於1,當等於-1的時候相當於還做了乙個映象變換。

2. 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,旋轉矩陣

3. 旋轉軸/旋轉角度

用旋轉軸的方向向量n和旋轉角度θ來表示乙個旋轉,其中

θ>0表示逆時針旋轉。

3.1 旋轉軸/旋轉角度 轉化為 旋轉矩陣

設v是任意乙個向量,定義

如下圖所示

這樣,我們建立了乙個直角座標系

設u為v繞軸旋轉後得到的向量,則有

r即為旋轉矩陣。進一步可表示為

4. 單位四元數(unit quaternions)

四元數由hamilton於2023年提出,實際上是在四維向量集合上定義了通常的向量加法和新的乘法運算,從而形成了乙個環。

q稱為單位四元數,如果||q||=1。乙個單位四元數可以表示三維旋轉。用單位四元數表示旋轉可以保持乙個光滑移動的相機的軌跡,適合動畫生成。

4.1 旋轉軸/旋轉角度 轉化為 單位四元數

根據旋轉軸n和旋轉角度θ,得到單位四元數q

4.2 單位四元數 轉化為 旋轉軸/旋轉角度

4.3 單位四元數 轉化為 旋轉矩陣

4.4 四元數的性質

定義四元數的逆、乘法和除法,如下所示

根據該性質,我們可以對兩個旋轉變換q1和q2作線性插值,這相當於在四維空間中的超球面上對點q1和q2作球面線性插值。

也可以按下面的方法計算

三維旋轉矩陣的詳細推導過程

我們在進行旋轉矩陣推導的時候應該要明白什麼是左手座標系和右手座標系,要知道如何判斷座標系的方向。左手座標系 以左手大拇指為x軸正方向,食指為y軸正方向,此時大拇指和食指成乙個八字形,然後加入中指,這個時候三個手指互相垂直,中指指的方向為z軸正方向。具體的圖示如下 右手座標系 以以右手大拇指為x軸正方...

DirectX三維空間旋轉矩陣原理

三維空間的旋轉分開來看其實就是二維空間的旋轉,對於二維空間的旋轉各位同學大家高中應該都學過,這裡簡單推導一下,由於我不會製作這種圖,隨便在網上找了一下圖,意思到了就可以,我們假設一線段從如下圖所標示的x 軸旋轉到ov線段,也就是從原來的與x軸夾角為 變為 再假設 這裡我們採用極座標系思想,假設線段長...

三維旋轉矩陣 旋轉之一 複數與2D旋轉

先複習一下複數 複數可以看做 這組基 basis 的線性組合 linear combination 所以可以用向量來表示複數。當然也就可以用復平面上的點來表示複數 複數的乘法 可以把它看做乙個矩陣和乙個向量相乘 所以複數也可以看成矩陣 把 也換成對應的矩陣 這也足以證明複數看成矩陣是正確的,所以複數...