1. 矩陣(Matrix)
1.1 矩陣和笛卡爾坐標系之間的關系
理解矩陣的關鍵點在于,我們要知道,矩陣的行就代表坐標系的一個軸(axis/ base)纵散,如果我們需要變換(transform)點或者向量從一個坐標系到另一個坐標系隐圾,我們只需要將心坐標系的每個軸的坐標放入矩陣的行中即可伍掀。
- 新坐標系的方向(orientation)由旋轉部分決定(rotation)
- 新坐標系的大小(size)由伸縮部分決定(scale)
- 新坐標系的位置(position)由平移矩陣決定(translation)
如圖所示:
如何去理解:
假設在 A 坐標系中有一個點 p暇藏,這時候我們將 p 繞著 z 軸旋轉蜜笤,我們先不去想它在 A坐標系 中的變化,而是假設有另一個坐標系(比方說 local coordinate system)盐碱,而這個 local coord system 是和點 p 鉚定的沪伙,p 怎么動,它也怎么動县好,所以 p 相對于 local coord system 的坐標是不變的围橡。
一開始,A坐標系 和 local coord system 是重疊的聘惦,那么當 p 繞 A 坐標系的 z 軸旋轉時某饰, local coord system 做同樣的旋轉,而這個旋轉矩陣每一行就分別對應了這個 local coord system 在 A 坐標系中的xyz軸善绎。
1.2 正交矩陣(Orthogonal Matrix)
行和列正交的矩陣就是正交矩陣
特性:
轉置矩陣(transpose)等于逆矩陣(inverse)
1.3 仿射變換(Affine Transformation)
所謂仿射變換黔漂,歸根結底就是在變換過程中仍然能夠保留直線。
因此禀酱,translation炬守,rotation,shearing 都是仿射變換剂跟。
和仿射變換對應的是投射變換(projective transformation)减途,透視投影(perspective projection)就是投射變換中的一種,很明顯曹洽,這種變換不能保留直線的平行關系鳍置。
2. 點和矩陣的變換
2.1 齊次坐標系(Homogeneous Coordinates)
點的齊次坐標系是將三維坐標加上一個 w=1 作為第四項,得到[x, y, z, 1]
因此送淆,變換矩陣需要加上[0,0,0,1]的第四列税产,但是,這不是唯一情況偷崩,因為在投影矩陣辟拷,錯切矩陣中,第四列有可能是請他情況阐斜,最后得到變換后點的 w 也不再是1衫冻,這時,我們就需要將這個點進行透視分割(perspective divide)谒出,即隅俘,四項都除以w。
2.2 行/列主序向量(Row/Column Major Vector)
row major vector:
column major vector:
還有兩個術語需要注意下笤喳,左乘/前乘(left/ pre-multiplication)和右乘/后乘(right/ post-multiplication)是指向量相對于矩陣的位置为居。
顯然可見,如果是 row major vector莉测,那么就是 left/ pre multiplication,如果是 column major vector唧喉,那么就是 right/ post multiplication捣卤。
關于這一點忍抽,Maya文檔里面是使用錯了的,千萬注意董朝。
2.3 行/列主序矩陣(Row/Column Major Matrix)
從數(shù)學角度上來講鸠项,這兩種矩陣并無差別,只是在表示時候 row major matrix 是 m[row][col]子姜,另一個是 m[col][row]. 他們的差別主要體現(xiàn)在計算機計算性能上.
row major matrix 存儲時是按照行存儲數(shù)據(jù), 而 column major matrix 存儲時是按照列順序存儲.
計算機cpu在訪問一個值時,會將其后面的幾個值也放在cache里面,以[3*1]*[3*3]這樣一個 pre-multiplication 為例,每一次計算新向量中一個成員時是需要訪問矩陣一個列, 采用 column major matrix 能顯著優(yōu)化性能.
2.4 創(chuàng)建一個方向矩陣/局部坐標系(Orientation Matrix/ Local Coordinate System)
我們通常也會稱之為 TNB 坐標系祟绊,即 tangent bitangent normal,無論我們采用左手坐標系還是右手坐標系去將他們標注為 xyz 軸哥捕,只需要記住 normal 叉乘 tagent = bitangent牧抽。
TNB用世界坐標系表示的三個軸可以組成一個矩陣,這個矩陣乘以TNB坐標系內一個點的坐標就可以得到該點世界坐標遥赚。