矩陣乘法的幾何意義


轉載自http://blog.sina.com.cn/s/blog_442001420102vdux.html

矩陣的幾何意義,它可以總結為3個容易理解的特性。

變換(Transformations)

你應該已經知道變換(transformation),它將任意3D點的坐標變換到另一個3D點的坐標。下圖你可以看到3個基本變換的例子:​

      第一個變換只是簡單地將3D空間中的所有點移動到左下方,這種變換叫做平移(translation)。第二個變換是旋轉(rotation),所有點繞一個指定軸旋轉,本例中是繞Z軸旋轉。最后一個基本變換是縮放,所有點的坐標乘以一個特定的數值。我將它們稱為基本變換,是因為你能想象的任何變換都可以用這三個基本變換的組合表示。

下圖你可以看到平移的結果,然后還要進行旋轉:

 

矩陣的3個特性

特性1:矩陣可以看做一個特殊(但並不復雜)的元素,可以表示上述變換。所以假如你有3個矩陣:Mtrans, Mrot和Mscal,它們分別對應一種變換。

​特性2: 如果你將一個矩陣乘以對應的3D點坐標,就可以獲取變換后的點坐標,如下圖所示:

 

這意味着對任意點,你可以簡單地通過將它的坐標乘以一個矩陣獲取它的投影、旋轉和縮放!

特性3: 如果你將兩個矩陣M1和M2相乘,會獲得一個新矩陣M3。對應這個新矩陣M3的變換即對應前兩個矩陣的變換組合。

第三個特性非常有用。例如上面平移后旋轉的例子中,計算給定點的位置的一個方法是首先計算經過平移矩陣M1的變換,然后將結果乘以M2計算旋轉,這讓你必須為每個點計算2次,由下圖表示:

使用第三個特性,你只需簡單地先計算M1和M2的乘積獲取M3。然后將點乘以矩陣 M3獲取點的平移並旋轉后的坐標!2個矩陣的乘法很快(64次乘法和48次加法),而變換場景中的所有點要慢得多(每個點16次乘法和12次加法)

矩陣數學

你可以將一個3D點的坐標作為一個矩陣的一列和3行,點和矩陣間的乘法如下定義:

現在你應該知道了所有知識。如你所見,並不是很難。下面舉一個例子。設3D空間有一個坐標為(6,18,9.5)的點。先看一個簡單的例子:我們想將場景變大為2倍,這意味着我們要縮放2倍,一個簡單的縮放矩陣如下所示:

結果是:

在這個例子中,s = 2,所以點的坐標變為(12, 36, 19)。

下面看一下旋轉矩陣,它看起來有點復雜,但記住所有sin和cos實際上就是一個介於-1和+1之間的數值。下面三個矩陣表示繞X,Y和Z軸的旋轉,θ為旋轉角度:

例如將點(10,5,0)繞Z軸旋轉45度,我們的旋轉矩陣如下:

因為pi=3.14對應180度,45度對應pi/4。結果是:

所以當我們將點(10,5,0)旋轉45度,結果是點(10.6065, -3.5355, 0)!幸運的是,DirectX可以為你完成這些運算,但現在我們理解了工作原理。

帶平移的矩陣

如果一個矩陣,你會看到16個數據項,這意味着4行和4列。選擇這種方式是為了讓矩陣也可以表示平移。

       要平移一個點,我們需要添加一個數字。使用3x3矩陣,我們只能獲取初始矩陣的倍數。所以在X,Y和Z邊上需要添加一個常數。為了簡單起見,設為1。從現在開始,我們使用4個坐標表示一個3D點。例如,位於(10,5,0)的點的坐標為(10,5,0,1)。

縮放和旋轉矩陣保持不變,但多了一個額外的行和列其值為0,但m44值為1。下圖你可以看到以平移形式的縮放和Y旋轉矩陣:

看起來有點復雜,但現在我們可以定義一個平移矩陣了:

讓我們看一個小例子。如果我們想將點(10,5,0)移動(-8,2,4)。可以這樣做:

結果是(2,7,4)。但這里我仍想強調3個基本特性:

1) 我們有一個矩陣對應每個基本變換

2) 將點的坐標乘以一個矩陣會獲得變換后的坐標

3) 兩個矩陣相乘獲得一個新矩陣,對應變換的組合

如果你理解以上特性,你會注意到第4個坐標沒有幾何意義,它只是讓我們可以定義一個平移矩陣。

你會注意到有時這個常量不是1。事實上,通用規則是只需簡單地將X,Y和 Z 坐標除以第4個坐標,我們將第4個坐標稱之為W坐標。

簡單地說:(20,10,0,2) = (10,5,0,1),這兩個坐標表示的是同一個3D點(10,5,0),所以從4個坐標中獲取3D點的簡單規則是:

此篇文章來自於http://www.riemers.net/index.php,原文地址分別是Matrices and DirectX,The maths behind Matrices,Homogeneous matrices


免責聲明!

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



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