向量點(diǎn)乘叉乘、矩陣、OpenGL變化

向量:向量就是在3D笛卡爾坐標(biāo)中的一個(gè)頂點(diǎn)。單位向量就是長度為1的向量、

標(biāo)量:標(biāo)量是一個(gè)只有數(shù)值大小 沒有方向,部分有征服之分。通俗來說標(biāo)量只有大小沒有方向的量。

向量和標(biāo)量的區(qū)別就是 向量是有方向的。標(biāo)量是沒有方向的。

向量的點(diǎn)乘叉乘:點(diǎn)乘又叫向量的內(nèi)積,叉乘又叫向量的外積。點(diǎn)乘計(jì)算得到的結(jié)果是一個(gè)標(biāo)量;叉乘得到的結(jié)果是一個(gè)垂直于原向量構(gòu)成平面的向量。

點(diǎn)乘:只能存在于2個(gè)向量之間的相乘。2個(gè)三維單元向量 之間進(jìn)行點(diǎn)乘得到的是一個(gè)標(biāo)量。 這個(gè)標(biāo)量就表示為這兩個(gè)向量之間的夾角。在我們開發(fā)中我們不需要進(jìn)行向量之間的相乘。我們只需要去調(diào)用math3D庫里面提供的點(diǎn)乘的API就可以了。方法有 1.float m3ddDotProduct3(const M3DVector3f u, const M3DVector3f v),這個(gè)方法我們得到的是兩個(gè)向量點(diǎn)乘的結(jié)果。如果我們需要獲取兩個(gè)向量之間的角度。還需要對(duì)獲得的數(shù)據(jù)進(jìn)行轉(zhuǎn)化。當(dāng)然 API還提供了另外一個(gè)方法 可以直接獲取到兩個(gè)向量夾角的弧度方法2. float m3dGetAngleBetweenVector3(const M3DVector3f u , const M3DVector3d v),用這個(gè)方法我們可以直接獲取到兩個(gè)向量夾角的弧度。

叉乘:向量的叉乘獲得到是另外一個(gè)新的向量。而這個(gè)向量是垂直于原來2個(gè)向量定義的平面垂直。叉乘和點(diǎn)乘不同。可以使用普通的向量相乘。如圖所示

當(dāng)然 叉乘API也提供了相應(yīng)的方法 void m3dCrossProduct3(M3DVector3f result,const M3DVector3f u,const M3DVector3f v);

矩陣:在空間中有一個(gè)點(diǎn)。使用xyz來描述它。如果我們要對(duì)這個(gè)點(diǎn)進(jìn)行移動(dòng)的,我們要知道這個(gè)點(diǎn)新的位置。那么我們就需要通過矩陣計(jì)算來獲取新的位置。矩陣不僅僅3*3或者是4*4 的這種,如果這個(gè)矩陣 只有一行或者只有一列 也可以成為矩陣。我們也可以叫他為向量。

矩陣的叉乘:矩陣的叉乘是有一個(gè)規(guī)則。這個(gè)規(guī)則定義了什么樣的2個(gè)矩陣可以進(jìn)行叉乘。什么樣2個(gè)矩陣不能進(jìn)行叉乘。如圖所示:下面的圖片中有框框標(biāo)記的數(shù)字如果相等那么這個(gè)兩個(gè)矩陣就可以相乘。如果不相等那么這兩個(gè)矩陣就不能相乘。

在我們OPenGL的角度里。因?yàn)樵贠PenGL的約定里更多的是傾向使用一維數(shù)組。這樣的原因是:OPenGL使用的是Column-Major(以列為主)矩陣排序的約定,所以在我們獲取變化頂點(diǎn)向量的時(shí)候 使用的是矩陣左乘。

OPenGL的幾種變換:

1.視圖變換,即指定觀察者的位置。視圖變換是我們?cè)賾?yīng)用場(chǎng)景中使用的第一種變化。簡單來說 就是我們?cè)儆^察一個(gè)物體的時(shí)候首先要確定觀察的角度和觀察的位置。只有先定義了觀察者的位置 我們?cè)賹?duì)物體進(jìn)行移動(dòng)的時(shí)候才能觀察到。

2.模型變換,就是用來操作物體通過某一種規(guī)律將物體移動(dòng)到某一個(gè)位置,來進(jìn)行旋轉(zhuǎn) 縮放 平移,

3. 投影變換:分為正投影和透視投影。我們可以通過下面的圖來感受一下這兩種投影的區(qū)別:

?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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