三維座標系:
向量的模:向量起點到終點的距離
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
矩陣乘法:
逆矩陣:
方陣纔有逆矩陣,且不一定有
p’= pR 並且假設我們知道p’和R可以求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是旋轉的弧度
);
3D相關的簡單數學知識
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.