向量的定義:
既有大小又有方向的量稱之為向量,與之相對應(yīng)的是標(biāo)量膏斤,標(biāo)量是只有大小沒有方向的量彻舰。
一個向量的一般在頭上添加一個箭頭表示,比如向量V诫咱,可以表示為
游戲中一般以二維向量跟三維向量居多笙隙,例如一個由A點指向B點的向量,可以表示為坎缭,由于向量是有方向的竟痰,因此向量與向量并不等價
二維向量的表示為签钩,如A = (2, 3), B=(-1, -4)
三維向量可以表示為,如A = (2, 3, 4), B = (-1, -4, 6)
需要特別注意的是兩個特殊的向量:零向量跟單位向量
長度為0的向量稱之為零向量坏快,零向量與所有向量平行
模為1的向量稱之為單位向量铅檩,單位向量并不是唯一的,每個向量單位化以后都是單位向量
向量的幾何意義
我們都知道莽鸿,位置是相對的柠并。因此坐標(biāo)軸就很重要,在游戲中富拗,向量結(jié)合坐標(biāo)軸來確定位置臼予。
就以Unity來說,如果假設(shè)Unity的坐標(biāo)軸的原點表示為O(0,0)啃沪,那么一個物體的坐標(biāo)點為A(3粘拾,3),實際上可以看作一條從原點O指向點A的向量创千,可以表示為
向量的計算
1. 向量的數(shù)乘
向量的數(shù)乘表示向量跟一個實數(shù)相乘的乘積缰雇,結(jié)果還是一個向量。 比如實數(shù)a跟一個向量相乘追驴,結(jié)果為
- 數(shù)乘的幾何意義
我們都知道械哟,向量是有方向跟大小的,而數(shù)乘就最直觀的表現(xiàn)就是更改向量的方向跟模的大小殿雪。
當(dāng) a > 0時暇咆,向量V的方向不變,模變?yōu)樵瓉淼腶倍
當(dāng) a = 0時丙曙,向量變?yōu)榱阆蛄堪忠担5扔?
當(dāng) a < 0時,向量方向變?yōu)樵瓉硐喾吹姆较蚩髁W優(yōu)樵瓉淼膢a|倍
在Unity的坐標(biāo)軸中扯旷,如果一個物體的位置為A(3, 3,3)索抓,如果我們將其位置乘以2再賦值給這個物體钧忽,那么A的位置就會變成A'(6,6,6)。也就是說逼肯,我們將這個物體的位置從A點移動到了A'點耸黑。
2. 向量的加減法
- 向量的加法
兩個向量相加以后的結(jié)果還是一個向量,新向量的各個分量的值等于兩個向量的對應(yīng)分量的加值汉矿。計算公式為
例如兩個二維向量相加崎坊,向量等于向量加向量备禀,即:
- 加法的幾何意義
向量的加法洲拇,可以用平行四邊形法則或者三角形法則描述:
1. 平行四邊形法則:
兩個向量相加奈揍,可以考慮為兩個同起點的向量分別作為邊長,繪制出來的一個平行四邊形赋续,這個平行四邊形的以舊向量同起點的對角線就是兩個向量之和所得的一條新向量
2. 三角形法則:
兩個向量相加男翰,可以考慮為這兩條向量首尾相連后,分別作為三角形的兩條邊長纽乱,然后以第一條的起始位置蛾绎,第二條的尾巴位置進行補全的一條向量,就是這兩條向量的加值向量鸦列。如下圖:
- 向量的減法
兩個向量相減所得還是一個向量租冠,這個向量的各個分量的值為舊向量的各個分量的差值。公式為:
例如兩個二維向量相加薯嗤,向量等于向量加向量顽爹,即:
向量的減法同樣支持三角形法則,與加法所不同的是骆姐,減法的所得的最終向量镜粤,其方向是由減數(shù)向量的終點指向被減數(shù)向量的終點。
- 向量的模
向量的模就是向量的長度(大胁M省)肉渴,是一個標(biāo)量,用表示带射。如果一個向量同规,則存在,即窟社,向量的模等于向量的各個分量的平方之和的開平方
零向量的模為零捻浦,單位向量的模為1
向量的單位化:任意非零的向量,可以通過將每個分量數(shù)乘以 桥爽,得到的新向量就是這個向量的單位化向量
公式為:模的性質(zhì)
零向量等于0朱灿,其他向量的模都大于0
一個實數(shù)乘以一個向量以后的模,等于一個實數(shù)乘以一個向量的模
向量的加法支持三角形法則钠四,也就是說盗扒,三角形的兩條邊長之和大于第三邊
- 向量的點積
向量的點積表示為
幾何公式: 其中為兩個向量之間的夾角
幾何意義:點積表示了兩個向量的接近程度,即夾角越小缀去,兩個向量越靠近侣灶,在等于0的時候平行,等于1的時候垂直缕碎。因此向量的點積在游戲中經(jīng)常用來判斷兩個向量的接近程度褥影。比如兩個移動的物體是否會撞上,需要不需要避開之類的AI計算咏雌。同時凡怎,已知兩個向量校焦,可以計算兩個向量的夾角。從而進行旋轉(zhuǎn)操作等
則夾角在[0, 90)
則夾角等于 90统倒,兩個向量垂直
則夾角在(90,180)性質(zhì):
點乘支持交換律
點乘支持加法的分配律
一個實數(shù)不影響兩個向量的點乘
- 向量的叉乘
三維向量的叉乘表示為
至于誰乘以誰減去誰寨典,則是使用以下這個方法。
幾何意義:
兩個叉乘所得出的新向量房匆,垂直與這兩個向量耸成,并穿過這兩個向量的交叉點。新向量的方向則取決于我們使用的坐標(biāo)系浴鸿,Unity使用的是左手坐標(biāo)系井氢,OpenGL使用的是右手坐標(biāo)系。左手坐標(biāo)系中岳链,左手掌心向外毙沾,食指向上,中指向前宠页,大拇指的方向就是x軸左胞,食指指向的是y軸,中指指向的是z軸举户,將兩個向量對準(zhǔn)坐標(biāo)軸烤宙,剩余的一個方向就是新向量的方向
叉積的模: 其中是兩個向量的夾角
模的幾何意義:兩個三維向量的叉積的模表示以這兩個向量為邊長的平行四邊形的面積。
根據(jù)上面的公式可知俭嘁,叉積的模是兩個向量的模的乘積乘以他們的躺枕,而所代表的就是求三角形高的公式。
性質(zhì):
支持負(fù)交換律
實數(shù)與相乘可以隨意切換