1. 線性空間,向量,基三者之間的關係:
線性空間是由向量的集合組成的。在維度爲n的向量空間中,基就是由n個互相垂直的向量組成,並且在這個線性空間中的任何一個向量都能表示爲基中n個向量的線性組合。
2. 維數爲3的向量空間的定義:
維度爲3的線性空間具有幾何意義,它的定義是:所有在三維空間中以原點爲起始點的向量的集合。這裏需要注意的是這裏的向量的定義都是以原點爲起點。
3. 叉積
因爲D3D裏面是左手座標系,所以這裏澄清叉積具體規則:
Ex: a× b
“正確”的向量由向量空間的方向確定,即按照給定直角座標系 (i, j, k) 的左右手定則。若 (i, j, k) 滿足右手定則,則 (a, b, a × b) 也滿足右手定則;或者兩者同時滿足左手定則。
“右手定則”的結果向量的方向的方法是這樣的:若座標系是滿足右手定則的,當右手的四指從a以不超過180度的轉角轉向b時,豎起的大拇指指向是c的方向。
“左手定則”的結果向量的方向的方法是這樣的:若座標系是滿足左手定則的,當左手的四指從a以不超過180度的轉角轉向b時,豎起的大拇指指向是c的方向。
4.下面給出D3D視圖矩陣的計算方式:
D3DXMATRIX *D3DXMatrixLookAtLH(
D3DXMATRIX*pOut,
CONSTD3DXVECTOR3* pEye,
CONSTD3DXVECTOR3* pAt,
CONSTD3DXVECTOR3* pUp
);
eye:相機所在的位置
at:目標點的位置。at – eye 的向量剛好構成眼睛的方向。
up:向上的方向向量,書中介紹時爲[0,1,0],而很多地方用[0,-1,0]
觀察座標系的z軸爲:zaxis = normal(at -eye)
觀察座標系的x軸爲:xaxis =normal(cross(up,zaxis))
觀察座標系的y軸爲:yaxis =cross(zaxis,xaxis)
其中:normal爲使單位向量化,cross爲求兩向量的法向量(單位向量)
dot爲:軸 * eye.x + 軸 * eye.y + 軸 * eye.z
創建的矩陣爲
-----------------------------------------------------------------------------------------------------
xaxis.x yaxis.x zaxis.x 0
xaxis.yyaxis.y zaxis.y 0
xaxis.z yaxis.z zaxis.z 0
-dot(xaxis,eye) -dot(yaxis,eye) -dot(zaxis,eye) 1
注意:用過渡矩陣求出來的點的座標是以世界座標系的原點爲起點的座標,所以還需要一個平移操作才能是最後的結果。
4. D3D中的左手座標系就是以Z軸方向爲眼睛的方向,右手座標系就是以Z軸的反方向爲眼睛的方向。