1. 程式人生 > >New程式媛OpenGL全解析之—向量

New程式媛OpenGL全解析之—向量

大家好


本期視訊的連結地址是:

https://www.bilibili.com/video/av23269538/

大家也可以直接在bi站首頁搜尋:New程式媛 ,即可看到相應視訊

本期的程式碼因為已經給大家全部貼出了,所以不再另附資源,請大家動手獨立完成。

丹丹今天要給大家帶來的是向量的基本知識。配合視訊一起看效果更佳哦~

向量和矩陣是遊戲開發的必備基礎。

好多小夥伴跟丹丹反映每次文章過長,太乾 所以之後的推文,丹丹儘量再模組化。其實又長又幹的文章要花費丹丹的不少心血,希望小夥伴們喜歡的話幫忙分享,或者給予點贊鼓勵哦

好啦,來看知識點!

向量:有方向有大小的向量。

遊戲中速度、加速度、力、位移等就是使用向量來描述的。

此處大家需要注意的是,向(矢)量只要方向和大小不改變,可以移動到任意的位置,所以向量的起始點設定到原點,向量就可以直接使用如下形式來表示了:

所以如果有A點為(xa,ya,za),B點為(xb,yb,zb

則我們的AB向量為(xb-xa,yb-ya,zb-za)

接著我們來看看向量的基本運算

向量加法

我們可以看做是首尾相接首尾接的一個運演算法則

也可以看做是類似於力的合成的平行四邊形法則運算:

向量取反

向量為(x,y,z)取反即為(-x,-y,-z)

向量減法

向量取反後的加法

向量與標量的運算

求向量長度/求模

直接通過勾股定理來計算:

向量的單位化

有一個特殊型別的向量叫做單位向量(Unit Vector)。單位向量有一個特別的性質——它的長度是1。我們可以用任意向量的每個分量除以向量的長度得到它的單位向量:

向量點積

根據以上的公式可以看出,點積在遊戲中可以用cos角度來判斷兩向量的夾角

當然向量的點積還可以做的事情就是求投影:

向量叉乘

向量的叉乘公式如下:

叉乘的結果是一個垂直於原來兩向量所在平面的向量。根據左右手法則我們可以判斷一個向量相對於另一個向量的左右方位。

其次可以利用叉乘得出點到線的距離:

好啦,一起來看看程式碼吧:

ok~ 向量的基本知識今天就給大家介紹到這裡。咱們動起手來碼起來吧。

丹丹期待大家的意見和建議,歡迎小夥伴們積極留言