Cesium 矩陣變換


在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,則成ab是正交的。

|OB1| =|b|cosθ ,|OB1| 稱為b在向量方向上的投影。

投影向量如下,很容易推導。

 

 

1.6、向量叉積

向量的叉積(cross product),又稱外積(outer product)

設向量a和b的叉積為n,則n與a和b都正交,向量a,b和n構成一個右手坐標系(right-handed coordinate system)

叉積n的長度為:

設向量a(xa,ya,zab(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=,則稱方陣A可逆,並稱方陣B是A的逆矩陣,B=A-1 

(5)矩陣乘法

兩個矩陣相乘在三維變換中極為重要。

兩個矩陣的乘法僅當第一個矩陣A的列數和另一個矩陣B的行數相等時才能定義。

比如一個4×4矩陣和4×1矩陣相乘得到的是一個4×1矩陣。

 

 

矩陣的乘法滿足以下運算律:
結合律:   (AB)C=A(BC) 
左分配律:(A+B)C=AC+BC
右分配律:C(A+B)=CA+CB
矩陣不滿足交換律 ,也就是AB != BA,這個在后面介紹的矩陣變換后會有直觀的感受。 

在三維開發中經常用到矩陣和矢量相乘,點和向量都可以用一個列矩陣來表示。

比如將一個空間中的點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中的矩陣變換

改天再寫

五、相關示例

改天再寫

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM