計算機圖形學之矩陣變換

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

理解矩陣的幾何功能:

  1. 矩陣是一種線性變換(線段變換後還是線段,而且原點不會改變)
  2. 矩陣是一種映射,映射能夠是一對一,也能夠是一對多
  3. 矩陣是一種空間變換,每一種矩陣都是有自己的幾何意義,而不是單純的數字組合

理解矩陣的形式含義(矩陣在左,向量在右):3d

  1. 方陣滿秩,是進行當前空間的座標變換,不會進行維度的升高和下降
  2. M×N(M>N),這種矩陣是一種升維矩陣,幾何意義如3×2,就如同把一個平面進行一個方向維度的延展(當秩爲2時),變成一個三維的空間,固然以前空間中的點(x,y)在提高維度的過程當中在三維空間中仍是一個平面分佈,只是多了一個值全相等的第三個維度的值而已
  3. M×N(M<N),這是一種降維矩陣,幾何意義如2×3(當秩爲2時),是把三維的向量進行一個維度的壓縮,擠壓成一個平面,這個時候固然會出現不少個點壓縮到一個二維座標的狀況
  4. 方陣不滿秩,其實和以前是同樣的,不滿秩就說明這個維度是虛的,沒什麼用,若是秩是一的話就是擠壓成一條線。

一.平移矩陣

1.1二維平移矩陣

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

必定是一個滿秩的矩陣,由於咱們並不會進行維度的變換。 座標軸的方向和長度是不變的,由於矩陣運算的本質是改變的參考系的X,Y。
尋找矩陣:blog

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

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

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

這裏須要注意的是,點V=(x,y,1),並非再是咱們二維座標上的點,而是以P的列向量爲基所構成的三維空間上的點,只是說咱們把二維的點變爲V=(x,y,1)而後通過對應矩陣P的線性變換,最終獲得平移點的位置。class

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

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

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

1.2三維平移矩陣

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

二.旋轉矩陣

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

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. 創建最後的投影矩陣 注意:咱們這裏所須要的,是應該求逆矩陣,當咱們所須要的是投影座標表示而不是在原先座標系表示的時候
相關文章
相關標籤/搜索