1. 程式人生 > >計算機圖形學之矩陣變換的深度理解

計算機圖形學之矩陣變換的深度理解

對於圖形學來說,矩陣計算不可避免,既直觀又方便。而如果線性代數學的不透徹的話,那麼基本上是做不到應用的,這裡推薦看一下3Blue1Brown的線性代數的視訊,可以對矩陣計算有深刻的認識。

之後就是應用階段,我們這個階段就是使用我們的矩陣來完成空間中點或向量的各種變換。

重點是理解矩陣的含義:矩陣其實是一種座標系的轉換

  1. 理解矩陣的幾何功能:
    1. 矩陣是一種線性變換(線段變換後仍是線段,並且原點不會改變)
    2. 矩陣是一種對映,對映可以是一對一,也可以是一對多
    3. 矩陣是一種空間變換,每一種矩陣都是有本身的幾何意義,而不是單純的數字組合
  2. 理解矩陣的形式含義(矩陣在左,向量在右):
    1. 方陣滿秩,是進行當前空間的座標變換,不會進行維度的升高和降低
    2. M×N(M>N),這種矩陣是一種升維矩陣,幾何意義如3×2,就如同把一個平面進行一個方向維度的延展(當秩為2時),變成一個三維的空間,當然之前空間中的點(x,y)在提升維度的過程中在三維空間中還是一個平面分佈,只是多了一個值全相等的第三個維度的值而已
    3. M×N(M<N),這是一種降維矩陣,幾何意義如2×3(當秩為2時),是把三維的向量進行一個維度的壓縮,擠壓成一個平面,這個時候當然會出現很多個點壓縮到一個二維座標的情況
    4. 方陣不滿秩,其實和之前是一樣的,不滿秩就說明這個維度是虛的,沒什麼用,如果秩是一的話就是擠壓成一條線。

一.平移矩陣

當我們理解了之前的種種邏輯之後,我們終於進入到了我們的就事論事環節,首先就是我們的平移矩陣。

我們當然有理由先討論二維的情況。

1.1二維平移矩陣

形式:平移矩陣的形式是什麼樣的呢。

  • 一定是一個滿秩的矩陣,因為我們並不會進行維度的變換。
  • 座標軸的方向和長度是不變的,因為矩陣運算的本質是改變的參考系的X,Y。

尋找矩陣

那麼什麼樣的矩陣能夠使得一個點進行平移操作呢,因為平移操作並不會改變參考系XY的方向和單位向量的長度,所以實際上,在當前的維度中,我們並不可能做到,為什麼呢?因為我們之前說過,矩陣的線性變換並不會改變原點的位置,矩陣是預設原點就是(0,0),在矩陣中填充任何的值都沒辦法改變這個約定熟成的決定。那麼怎麼做到呢,我們利用更高一維的矩陣,也就是三維矩陣進行操作,其實就是在更高的維度當中,解決我們的原點平移問題。

在這裡,需要說明的是,如果我們使用的是左矩陣右向量的形式,那麼構成我們全新的座標系的向量應當是矩陣中的列。我們在增加了一個新的維度,(dx,dy,1),dx,dy就是我們要平移的數量,而增加一個1,是因為要保持秩是3,畢竟我們是從更高一層的維度來轉移我們的座標原點的。

從幾何意義來說,平移矩陣其實就是增加一個並不正交的Z軸(dx,dy,1)來進行一個座標軸的重新定義,繼而將座標轉換位置。

這裡需要注意的是,點V=(x,y,1),並不是再是我們二維座標上的點,而是以P的列向量為基所構成的三維空間上的點,只是說我們把二維的點變為V=(x,y,1)然後經過對應矩陣P的線性變換,最終得到平移點的位置。

這個過程可能有些難以理解,但是又是那麼的巧妙和精確。我們所構造的矩陣P,是通過新空間中基的列向量來構成的,其中的列向量中每一個座標值對應的數值,其實都是以我們原有的基x=(1,0),y=(0,1)來決定的。P這個矩陣,是一種線性的變換,是把用它座標系中表示的點的位置座標,來對映到原先我們確定它的時用的基的空間裡。

這其實就是一種投影運算,對V的每個座標值進行投影。

而p的逆矩陣,其實就是把我們的座標對映到P的座標中的運算。

1.2三維平移矩陣

當我們理解了二維的平移矩陣,那麼,其實三維的矩陣也是一樣的原理

二.旋轉矩陣

旋轉矩陣的基礎含義就是繞原點的旋轉。

2.1二維旋轉矩陣

形式:旋轉矩陣的形式是什麼樣的呢。

  • 一定是滿秩的,因為沒有進行維度變換
  • 座標軸的長度應該是不變的,因為沒有進行放縮操作,但是角度應該是要變的。

尋找矩陣:

假設我們有點v=(x,y),座標軸是標準的座標軸,角度是為是與x軸正方向的夾角。

首先,我們已經知道了一些知識,那就是尋找新的座標軸的基,且基的長度仍是1.那麼

形成的矩陣

這就是我們所需要的旋轉矩陣,這裡其實我們並

2.2三維旋轉矩陣

對於三維來說是差不多的,不過因為旋轉軸的不同,旋轉矩陣的形狀也是不同的

可以結構成這麼一段話,對於標準座標系而言,要將一個點V移動到V1(在這裡V和V1的表示都是標準座標系下的),那麼用新基構成的矩陣P變換V,得到V1。這是因為,V在標準座標系中的座標和V1在P的座標系下的座標是一樣的。


所以,矩陣變換的並不是V,而是V1。因為P的作用是把本身的座標裡的點變成標準座標系的點的座標,所以變換的其實不是標準座標系裡的V,而是自身的V1,因為他們兩者的值是相同的,會有很強的誤導性,但是並不是說他們空間中的絕對位置是相同的。僅僅因為參考系的變換,導致了他們的值相同。

三.放縮矩陣

放縮矩陣其實就很簡單,圖形的放縮其實就是我們本身的座標軸的基的放縮

四.投影矩陣

將點v,投影到一個平面A,投影方向是B的法向量n。

形式:正交投影矩陣的形式是什麼樣的呢。

  • 應該是高維矩陣,因為其中包含平移操作
  • 應該是一個不滿秩的矩陣,畢竟我們的座標都放到了一個面上
  • 因為是正交投影,所以我們壓縮的,其實就是沿著B法向量上的點

尋找矩陣:我們設V=(vx,vy,vz),A有一點a=(ax,ay,az),面的法向量N=(Nx,Ny,Nz)

  1. 首先確立平面上的座標系,通過點A,和法向量N建立座標系(X*,Y*,Z*).
  2. 其中Z是法向量N的方向,轉向是沒有關係的。
  3. 如果這麼就完了並不能完成平移操作,僅僅完成的是座標系方向的轉向,位置上還需要平移
  4. 所以需要原點到平面的距離向量L
  5. 建立最後的投影矩陣

注意:我們這裡所需要的,是應該求逆矩陣,當我們所需要的是投影座標表示而不是在原先座標系表示的時候

四.自由矩陣變換

熟練的掌握以上技巧就完美進行座標運算