WebGL使用的是正交右手坐標系,且每個方向都有可使用的值的區間,超出該矩形區間的圖像不會繪制:
- x軸最左邊為-1,最右邊為1;
- y軸最下邊為-1,最上邊為1;
- z軸朝向你的方向最大值為1,遠離你的方向最大值為-1;
注:這些值與Canvas的尺寸無關,無論Canvas的長寬比是多少,WebGL的區間值都是一致的。
如圖:
向量
點積
p1.x * p2.x + p1.y * p2.y + p1.z * p2.z
兩個向量的分量相乘之后再相加的結果,該結果和兩個向量的夾角相關;兩個向量的點積為0時,表示這兩個向量的夾角為90度,即相互垂直或正交,大於0時,表示夾角小於90度,小於0時,表示夾角大於90度;
叉乘
叉乘之后的結果不是一個標量,而是一個新的向量,該結果向量和用來運算叉乘的兩個向量所在的平面垂直;該向量即三角形平面的法向量;
齊次坐標
我們表示一個3維空間的向量或點時,一般使用包含3個分量的Vector3來表示,而齊次坐標則多引入了一個分量;
之所以多引入一個分量,是為了在仿射變換中的運算更加的方便,更具體的解說請看下面的文章:
https://www.cnblogs.com/csyisong/archive/2008/12/09/1351372.html
https://blog.csdn.net/janestar/article/details/44244849
矩陣
在3D中,一般使用4x4的矩陣。
相乘
矩陣相乘在3D圖形中是一個非常重要的運算,在3D中無論是移動、旋轉還是縮放大小,都是通過在當前矩陣的基礎上乘以一個新的矩陣來達到目的。
單位矩陣
可以理解為常量中的1,任何矩陣乘於單位矩陣都不變。
逆矩陣
逆矩陣可以理解為倒數,即當前矩陣乘於其逆矩陣的結果為單位矩陣,需要注意的是,只有方陣(行列數量相等)才有逆矩陣,同時不是所有的方陣都有逆矩陣。
引入逆矩陣的原因之一是用來實現矩陣的除法。比如有矩陣X,A,B,其中X*A = B,我們要求X矩陣的值。本能來說,我們只需要將B/A就可以得到X矩陣了。但是對於矩陣來說,不存在直接相除的概念。我們需要借助逆矩陣,間接實現矩陣的除法。具體的做法是等式兩邊在相同位置同時乘以矩陣A的逆矩陣,如下所示,X*A*(A的逆矩陣)=B*(A的逆矩陣)。由於A*(A的逆矩陣)=I,即單位矩陣,任何矩陣乘以單位矩陣的結果都是其本身。所以,我們可以得到X=B*(A的逆矩陣)。
轉置矩陣
轉置矩陣是指將行列互換之后的矩陣,和逆矩陣常用於法線變換。
仿射變換
矩陣的仿射變換包含了主要包含了平移、旋轉和縮放。