旋轉矩陣 Rotate Matrix 的性質分析

2021-07-07 03:02:22 字數 2278 閱讀 1623

學過矩陣理論或者線性代數的肯定知道正交矩陣(orthogonal matrix)是乙個非常好的矩陣,為什麼這麼說?原因有一下幾點:

正交矩陣每一列都是單位矩陣,並且兩兩正交。最簡單的正交矩陣就是單位陣。

正交矩陣的逆(inverse)等於正交矩陣的轉置(transpose)。同時可以推論出正交矩陣的行列式的值肯定為正負1的。

正交矩陣滿足很多矩陣性質,比如可以相似於對角矩陣等等。

以上可以看出正交矩陣是非常特殊的矩陣,而本文題目中的旋轉矩陣就是一種正交矩陣!它完美的詮釋了正交矩陣的所有特點。

先說一下什麼是旋轉矩陣?如圖1所示,我們假設最開始空間的座標系xa

,ya,za

就是笛卡爾座標系,這樣我們得到空間a的矩陣va

=t,其實也可以看做是單位陣e。進過旋轉後,空間a的三個座標系變成了圖1中紅色的三個座標系xb

,yb,zb

,得到空間b的矩陣vb

=t。我們將兩個空間聯絡起來可以得到vb

=r•va

,這裡r就是我們所說的旋轉矩陣。

由於xa

=t,ya

=t,za

=t,結合圖2可以看出,旋轉矩陣r就是由xb

,yb,zb

三個向量組成的。講到這裡,大家應該會發現旋轉矩陣r滿足第乙個條件,因為單位向量無論怎麼旋轉長度肯定不會變而且向量之間的正交性質也不會變。那麼旋轉矩陣就是正交陣!不過這還不能說明問題,下面我更進一步利用數學公式進行證明。

進一步討論之前,我們先說兩點數學知識。(1)點乘(dot product)的幾何意義:如圖3,我們從點乘的公式可以得到α•β相當與β的模乘上α在β上投影的模,所以當|β|=1時,α•β就是指α在β上投影的模。這一點在下面的內容中非常重要。(2)旋轉矩陣逆的幾何意思:這個比較抽象,不過也好理解。旋轉矩陣相當於把乙個向量(空間)旋轉成新的向量(空間),那麼逆可以理解為由新的向量(空間)轉回原來的向量(空間)。

接下來就是重點了,我們結合圖4進行分析。上面已經說明了,旋轉矩陣r就是由xb

,yb,zb

三個向量組成的。我們來看看xb

,yb,zb

究竟是什麼?由於圖中所有的向量均是單位向量,所以xb

與xa點乘的結果可以看成xb

在xa上的投影的模,也就是xb

在空間a中x軸的分量!!圖中中間的位置列出了xb

向量中的三個分量分別為xb

在xa上的投影的模、xb

在ya上的投影的模和xb

在za上的投影的模。這從幾何角度很好理解。以此類推,可以得出的旋轉矩陣r的表達形式。我們根據圖4可以驚喜的發現,矩陣r的第一行就是xa

在xb,yb

,zb上的投影的模,也就是xat。

這個發現有什麼用呢?圖5做出解釋。根據上面公式可以推出a到b的旋轉矩陣等於b到a的旋轉矩陣的轉置。根據我們上一段所說的a到b的旋轉矩陣的逆就是等於b到a的旋轉矩陣,因此很容易推出r-1

等於rt

!這滿足正交矩陣的第二個條件,又一次證明了旋轉矩陣就是正交陣。在平時的工作中,我也測試過所有的旋轉矩陣的行列式的值都是為1的,所以旋轉矩陣滿足正交陣的一切性質,可以說是很完美的矩陣。

現在以三個尤拉角中的rotx為例(其餘兩個尤拉角以此類推),驗證一下以上說的結論。

首先結合圖5的公式,計算出rotx的旋轉矩陣rrotx。

這樣就完成旋轉矩陣rrotx

,我們接下來驗證一下。

我們計算每一行每一列的模,都為1;並且任意兩個列向量或者任意兩個行向量都是正交的。所以滿足上文列出的第乙個性質。

我們計算rrotx

的行列式,很簡單可以算出為1。這時我們計算一下該矩陣的逆和轉置,這裡我不寫出來了是相等的。所以滿足上文列出的第三個性質。

第三個性質要牽扯到更多的數學知識,在這裡就不驗證了。

總結一下:旋轉矩陣是乙個完美的矩陣——正交矩陣。它的行列式為1,且每個列向量都是單位向量且相互正交,它的逆等於它的轉置。

from:

推到 旋轉矩陣公式 旋轉矩陣公式推導

1.在二維平面中 如下圖所示,在xoyxoy平面中有一向量op x,y top x,y t,旋轉 角後變為向量op x y top x y t。據圖可得 x op cos y op sin x op cos y op sin 經旋轉 角後有 x op cos op cos cos sin sin x...

旋轉矩陣演算法

question 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 void func int n 要求 通過傳入的n,輸出乙個4 4的矩陣,順序如上圖所示.code nxn矩陣 include using namespace std include define max...

原地旋轉矩陣

題目 給定乙個大小為n n的矩陣a,如何在空間複雜度為o 1 的情況下,將矩陣順時針旋轉90度?解析 對於矩陣旋轉,最容易想到的便是利用乙個大小同樣為n n的臨時矩陣t,將原矩陣a i j 放在 t j n i 1 位置處。最後將矩陣t的資料拷貝置矩陣a中,完成矩陣的旋轉。但是這種方法的空間複雜度為...