在Cesium和其他三維開發中中經常用到矩陣變換。比如將一個物體移動、縮放、平移都可以用變換矩陣來計算。
再比如將三維場景中的物體轉換為屏幕上顯示的二維圖形,需要用到透視投影(perspective projection)矩陣。
變換(tansformation)是一個函數,實現將一個空間坐標映射為另一個空間坐標,矩陣(matrix)是這種計算的一種方式,在三維開發中用途廣泛。
一、向量
1.1、向量的基本概念
向量又稱為矢量(vector),表示既有大小又有方向的量。在物理學中,力,速度,位移等都可以用向量來表示。
向量通常用一個有向線段表示。
1.2、向量的加法
向量的加法運算符合平行四邊形法則。
設向量a(x1,y1,z1)b(x2,y2,z2),則
a+b =(x1+x2,y1+y2,z1+z2)
1.3、向量的長度
向量的大小,也就是向量的長度(magnitude),也稱為模,是一個標量。
設向量a(x,y),則向量a的長度記為|a|,公式如下,三維向量的公式同理。

1.4、歸一化向量
向量的歸一化就是把向量的長度變為1,方向保持不變。公式為:
向量v稱為u的歸一化(normalization)向量。
1.5、向量的點積和投影
向量的點積(dot product)又稱為數量積(scalar product)或內積(inner product)。
向量的點積是一個標量,也就是一個數值。
設向量a,b,向量a和向量b的夾角,0≤θ≤π,則向量的點積公式如下:
設向量a(x1,y1,z1)b(x2,y2,z2),則
a·b=x1*x2+y1*y2+z1*z2
如果a·b=0,則成a和b是正交的。
|OB1| =|b|cosθ ,|OB1| 稱為b在向量a 方向上的投影。
投影向量如下,很容易推導。
1.6、向量叉積
向量的叉積(cross product),又稱外積(outer product)
設向量a和b的叉積為n,則n與a和b都正交,向量a,b和n構成一個右手坐標系(right-handed coordinate system)
叉積n的長度為:
設向量a(xa,ya,za)b(xb,yb,zb),則
二、矩陣
2.1、矩陣的基本概念
由 m × n 個數aij排成的m行n列的數表稱為m行n列的矩陣,簡稱m × n矩陣(引用百度百科)。記作:
這m×n 個數稱為矩陣A的元素,簡稱為元,數aij位於矩陣A的第i行第j列。
(1)矩陣的加法
同型矩陣之間才可以進行相加。減法同理,就是對應元素相減。
(2)單位矩陣
一個矩陣,從左上角到右下角的對角線(稱為主對角線)上的元素均為1。除此以外全都為0,稱為單位矩陣,通常記為E。
任何矩陣與單位矩陣相乘都等於本身。
(3)矩陣的轉置
把矩陣A的行和列互相交換所產生的矩陣稱為A的轉置矩陣這一過程稱為矩陣的轉置。
(4)逆矩陣
設A是一個n階矩陣,若存在另一個n階矩陣B,使得: AB=BA=E ,則稱方陣A可逆,並稱方陣B是A的逆矩陣,B=A-1
(5)矩陣乘法
兩個矩陣相乘在三維變換中極為重要。
兩個矩陣的乘法僅當第一個矩陣A的列數和另一個矩陣B的行數相等時才能定義。
比如一個4×4矩陣和4×1矩陣相乘得到的是一個4×1矩陣。
在三維開發中經常用到矩陣和矢量相乘,點和向量都可以用一個列矩陣來表示。
比如將一個空間中的點P(x,y,z)左乘一個3✖3的矩陣得到新的坐標P1(x',y',z')。
2.2、平移變換
平移(translation)變換是把空間中一個點沿着給定的方向移動固定的距離,設位移向量d,點P移動后P1,則 P1=P+d;
如果用齊次坐標(homogeneous coordinate)表示點和向量(齊次坐標的概念請自行查閱資料學習),
設點P(x,y,z,1),點P1(x',y',z',1),向量d=(tx,ty,tz,0),則
x'=x+tx
y'=y+ty
z'=z+tz
表示成矩陣形式如下:
平移變換矩陣即為:
2.3、旋轉
計算點p繞着z軸旋轉θ角后的p‘的坐標,r為OP的長度。
x=rcosA
y=rsinA
x'=rcos(A+θ)
y'=rsin(A+θ)
利用兩角和的三角函數公式可得到
x'=xcosθ - ysinθ
y'=xsinθ + ycosθ
z'=z
用矩陣表示,繞Z軸旋轉的變換矩陣為:
繞X軸旋轉的變換矩陣為:
繞Y軸變換的矩陣
2.4、縮放
假設在X軸,Y軸,Z軸上的縮放因子分別為Sx,Sy,S
2.6、模型視圖投影矩陣
這個以后再說
三、Cesium中的坐標系
Cesium中的地球默認采用的是WGS84坐標系。
改天再寫
四、Cesium中的矩陣變換
改天再寫
五、相關示例
改天再寫