向量和矩陣

向量

  • 數(shù)學(xué)中:形象的用一個(gè)帶有箭頭的線段指代向量,線段長(zhǎng)度表示向量的大小,箭頭所指方向?yàn)橄蛄康姆较?。所以說向量我們可以理解為一個(gè)同時(shí)具有大小和方向的量。
  • OpenGL:在 3D 笛卡爾坐標(biāo)系中的?個(gè)頂點(diǎn),也就是由XYZ三個(gè)值構(gòu)成一個(gè)值就是向量。
  • 單位向量:向量長(zhǎng)度為1的向量,向量的長(zhǎng)度也叫向量的模。
  • 單位化向量:如果?個(gè)向量不是單位向量, ?我們把它縮放到1的過程(只保留方向)。

OpenGL[math3d]對(duì)于向量的定義

math3d庫中存在2種數(shù)據(jù)類型,分別表示三維和四維向量。
M3DVector3f表示?個(gè)三維向量(x, y, z)
M3DVector4f表示?個(gè)四維向量(x, y, z, w)
典型情況下w坐標(biāo)設(shè)為1.0,x,y,z值通過除以w來進(jìn)?縮放,?除以 1.0則本質(zhì)上不改。

typedef float M3DVector3f[3];
typedef float M3DVector4f[4];
//聲明一個(gè)三分量向量操作:
M3DVector3f vVector3;
//聲明一個(gè)四分量的操作:
M3DVector4f vVector4 =  {0.0f,0.0f,1.0f,1.0f};
//聲明一個(gè)三分量頂點(diǎn)數(shù)組,例如生成一個(gè)三角形
M3DVector3f vVerts[] = {
-0.5f,0.0f,0.0f,
0.5f,0.0f,0.0f,
0.0f,0.5f,0.0f
};

向量的點(diǎn)乘和叉乘

點(diǎn)乘

2個(gè)向量進(jìn)行點(diǎn)乘后會(huì)得到一個(gè)標(biāo)量,具體計(jì)算公式我們可以不需要細(xì)究,但我們要知道點(diǎn)乘后通過一些計(jì)算我們可以得到兩個(gè)向量的夾角值。

//實(shí)現(xiàn)點(diǎn)乘方法:
// 方法1:返回的是-1,1之間的值。它代表這個(gè)2個(gè)向量的余弦值。
float m3dDotProduct3(const M3DVector3f u,const M3DVector3f v);
//方法2:返回2個(gè)向量之間的弧度值。
float m3dGetAngleBetweenVector3(const M3DVector3f u,const M3DVector3f v);

叉乘

2個(gè)向量進(jìn)行叉乘可以得到另外?個(gè)向量,新的向量會(huì)與原來2個(gè)向量定義的平?垂直(法線)。

void m3dCrossProduct3(M3DVector3f result,const M3DVector3f u ,const M3DVector3f v);

矩陣

簡(jiǎn)單來說矩陣就是一個(gè)矩形的數(shù)字、符號(hào)或表達(dá)式數(shù)組。矩陣中每一項(xiàng)叫做矩陣的元素。
OpenGL中使用一維數(shù)組來表示一個(gè)矩陣(約定試用列優(yōu)先矩陣)。
列向量進(jìn)?了特別的標(biāo)注:矩陣的最后??都為0,只有最后?個(gè)元素為1。

三維矩陣/四維矩陣的聲明
typedef float M3DMatrix33f[9];
typedef float M3DMatrix44f[16];

矩陣相乘

實(shí)際上矩陣相乘的結(jié)果矩陣的第1個(gè)元素就是第一行乘以第一列每個(gè)元素積的和。

相乘還有一些限制:

  • 只有當(dāng)左側(cè)矩陣的列數(shù)與右側(cè)矩陣的行數(shù)相等,兩個(gè)矩陣才能相乘。
  • 矩陣相乘不遵守交換律(Commutative),也就是說AB≠BA。
矩陣相乘

單位矩陣:

  • 實(shí)際上就是一個(gè)斜對(duì)角全是1,其他都是0的矩陣。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容