3D相關的簡單數學知識

三維座標系:

 

 

向量的模:向量起點到終點的距離

FLOAT D3DXVec3Length( // Returns the magnitude.

CONST D3DXVECTOR3* pV // The vector to compute the length of.

);

向量標準化(規範化)將向量的長度縮放至1

D3DXVECTOR3 *D3DXVec3Normalize(

D3DXVECTOR3* pOut, // Result.

CONST D3DXVECTOR3* pV // The vector to normalize.

);

向量加減:

D3DXVECTOR3 u(2.0f, 0.0f, 1.0f);

D3DXVECTOR3 v(0.0f, -1.0f, 5.0f);

D3DXVECTOR3 sum = u + (-)  v; // = (2.0f, -1.0f, 6.0f)

D3標量與向量的乘積:

 

D3DXVECTOR3 u(1.0f, 1.0f, -1.0f);

D3DXVECTOR3 scaledVec = u * 10.0f;

點積(結果爲標量):

 

u · v =|u||v|cosθ

通過u*v的結果判斷兩向量的夾角,0垂直,<0大於90度,>0小於90度

 

float dot = D3DXVec3Dot( &u, &v );

 

叉積(結果是另一個向量):

長度爲兩向量的模乘以夾角的正弦值,在什麼座標系就用什麼座標系的定則去判斷叉積的方向。

方向:按照第一個向量指向第二個向量

 

D3DXVec3Cross

 

矩陣乘法:

 

 

逆矩陣:

方陣纔有逆矩陣,且不一定有

ppR 並且假設我們知道pR可以p

D3DMatrixIverse

轉置:

 

D3DMatrixTranspose

 

幾何變換:

齊次座標(用n+1維座標去表示n維座標):

3*3的變換矩陣具有一定的侷限性,無法完成平移透視投影等基本的集合變換,因此需要將三維的點和向量的座標擴展爲4維的齊次座標

點的齊次座標:(x,y,z,1)

向量的齊次座標:(x,y,z,0)w值爲0可以保證向量不受平移變換的影響,這樣對於同一個圖形中的點和向量,無需對其進行區分,只需使用一個變換矩陣對其進行幾何變換

平移變換矩陣:

D3DXMATRIX *D3DXMatrixTranslation(

D3DXMATRIX* pOut, // 返回平移後的矩陣.

FLOAT x, // x軸移動的單位

FLOAT y, // y軸移動的單位

FLOAT z // z軸移動的單位

);

 

縮放:

D3DXMATRIX *D3DXMatrixScaling(

D3DXMATRIX* pOut, // 返回縮放後的矩陣

FLOAT sx, // x軸縮放的比例

FLOAT sy, // y軸縮放的比例

FLOAT sz // z軸縮放的比例.

);

 

旋轉:

D3DXMATRIX *D3DXMatrixRotationX(

D3DXMATRIX* pOut, // 返回旋轉後的矩陣

FLOAT Angle // Angle是旋轉的弧度

);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章