學(xué)過矩陣?yán)碚摶蛘呔€性代數(shù)的肯定知道正交矩陣(orthogonal matrix)是一個非常好的矩陣,為什么這么說?原因有一下幾點:
以上可以看出正交矩陣是非常特殊的矩陣,而本文題目中的旋轉(zhuǎn)矩陣就是一種正交矩陣!它完美的詮釋了正交矩陣的所有特點。
先說一下什么是旋轉(zhuǎn)矩陣?如圖1所示,我們假設(shè)最開始空間的坐標(biāo)系XA,YA,ZA就是笛卡爾坐標(biāo)系,這樣我們得到空間A的矩陣VA={XA,YA,ZA}T,其實也可以看做是單位陣E。進過旋轉(zhuǎn)后,空間A的三個坐標(biāo)系變成了圖1中紅色的三個坐標(biāo)系XB,YB,ZB,得到空間B的矩陣VB={XB,YB,ZB}T。我們將兩個空間聯(lián)系起來可以得到VB=R·VA,這里R就是我們所說的旋轉(zhuǎn)矩陣。
圖1
由于XA={1,0,0}T,YA={0,1,0}T,ZA={0,0,1}T,結(jié)合圖2可以看出,旋轉(zhuǎn)矩陣R就是由XB,YB,ZB 三個向量組成的。講到這里,大家應(yīng)該會發(fā)現(xiàn)旋轉(zhuǎn)矩陣R滿足第一個條件,因為單位向量無論怎么旋轉(zhuǎn)長度肯定不會變而且向量之間的正交性質(zhì)也不會變。那么旋轉(zhuǎn)矩陣就是正交陣!不過這還不能說明問題,下面我更進一步利用數(shù)學(xué)公式進行證明。
進一步討論之前,我們先說兩點數(shù)學(xué)知識。(1)點乘(dot product)的幾何意義:如圖3,我們從點乘的公式可以得到α·β相當(dāng)與β的模乘上α在β上投影的模,所以當(dāng)|β|=1時,α·β就是指α在β上投影的模。這一點在下面的內(nèi)容中非常重要。(2)旋轉(zhuǎn)矩陣逆的幾何意思:這個比較抽象,不過也好理解。旋轉(zhuǎn)矩陣相當(dāng)于把一個向量(空間)旋轉(zhuǎn)成新的向量(空間),那么逆可以理解為由新的向量(空間)轉(zhuǎn)回原來的向量(空間)。
圖3
接下來就是重點了,我們結(jié)合圖4進行分析。上面已經(jīng)說明了,旋轉(zhuǎn)矩陣R就是由XB,YB,ZB 三個向量組成的。我們來看看XB,YB,ZB究竟是什么?由于圖中所有的向量均是單位向量,所以XB與XA點乘的結(jié)果可以看成XB在XA上的投影的模,也就是XB在空間A中x軸的分量?。D中中間的位置列出了XB向量中的三個分量分別為XB在XA上的投影的模、XB在YA上的投影的模和XB在ZA上的投影的模。這從幾何角度很好理解。以此類推,可以得出的旋轉(zhuǎn)矩陣R的表達形式。我們根據(jù)圖4可以驚喜的發(fā)現(xiàn),矩陣R的第一行就是XA在XB,YB,ZB上的投影的模,也就是XAT。
圖4
這個發(fā)現(xiàn)有什么用呢?圖5做出解釋。根據(jù)上面公式可以推出A到B的旋轉(zhuǎn)矩陣等于B到A的旋轉(zhuǎn)矩陣的轉(zhuǎn)置。根據(jù)我們上一段所說的A到B的旋轉(zhuǎn)矩陣的逆就是等于B到A的旋轉(zhuǎn)矩陣,因此很容易推出R-1等于RT!這滿足正交矩陣的第二個條件,又一次證明了旋轉(zhuǎn)矩陣就是正交陣。在平時的工作中,我也測試過所有的旋轉(zhuǎn)矩陣的行列式的值都是為1的,所以旋轉(zhuǎn)矩陣滿足正交陣的一切性質(zhì),可以說是很完美的矩陣。
圖5
現(xiàn)在以三個歐拉角中的RotX為例(其余兩個歐拉角以此類推),驗證一下以上說的結(jié)論。
首先結(jié)合圖5的公式,計算出RotX的旋轉(zhuǎn)矩陣Rrotx。
圖6
這樣就完成旋轉(zhuǎn)矩陣Rrotx,我們接下來驗證一下。
總結(jié)一下:旋轉(zhuǎn)矩陣是一個完美的矩陣——正交矩陣。它的行列式為1,且每個列向量都是單位向量且相互正交,它的逆等于它的轉(zhuǎn)置。