一斥黑、向量、點(diǎn)乘眉厨、叉乘的介紹
在數(shù)學(xué)中锌奴,幾何向量(也稱(chēng)為歐幾里得向量,通常簡(jiǎn)稱(chēng)向量憾股、矢量)鹿蜀,指具有大小(magnitude)和方向的量荔燎。
向量可以形象化地表示為帶箭頭的線段耻姥。箭頭所指:代表向量的方向;線段長(zhǎng)度:代表向量的大小有咨。
加減:各個(gè)分量分別相加減琐簇。
標(biāo)量:只有大小,沒(méi)有方向
數(shù)乘:向量與標(biāo)量的乘數(shù),可以對(duì)向量的長(zhǎng)度進(jìn)行縮放座享,如果標(biāo)量>0婉商,向量的
方向不變,如果<0,向量的方向?yàn)榉捶较?br>
點(diǎn)乘(點(diǎn)積):是接受在實(shí)數(shù)R上的兩個(gè)向量相乘并返回一個(gè)實(shí)數(shù)值標(biāo)量u的大小渣叛、v的大小丈秩、u,v夾角的余弦。在u,v非零的前提下淳衙,點(diǎn)積如果為負(fù)蘑秽,則u,v形成的角大于90度;如果為零箫攀,那么u,v垂直肠牲;如果為正,那么u,v形成的角為銳角靴跛。兩個(gè)單位向量的點(diǎn)積得到兩個(gè)向量的夾角的cos值缀雳,通過(guò)它可以知道兩個(gè)向量的相似性,利用點(diǎn)積可判斷一個(gè)多邊形是否面向攝像機(jī)還是背向攝像機(jī)梢睛。如果點(diǎn)積越大肥印,說(shuō)明夾角越小识椰,則物理離光照的軸線越近,光照越強(qiáng)深碱。
叉乘:兩個(gè)向量的叉乘得到一個(gè)新的向量腹鹉,新向量垂直于原來(lái)兩個(gè)向量,并且長(zhǎng)度等于原向量長(zhǎng)度相乘后再乘以?shī)A角的正弦值莹痢,類(lèi)似左手坐標(biāo)系Z
點(diǎn)乘與叉乘的理解:
點(diǎn)乘:兩個(gè)向量點(diǎn)乘得到一個(gè)標(biāo)量 种蘸,數(shù)值等于兩個(gè)向量長(zhǎng)度相乘后再乘以二者夾角的余弦值 。
如果兩個(gè)向量a,b均 為單位 向量 ,那么a.b等于向量b在向量a方向上的投影的長(zhǎng)度
#點(diǎn)乘后得到的是一個(gè)值
若結(jié)果 == o竞膳,則 兩向量 互垂直 航瞭。
若結(jié)果 < 0 ,則 兩向量夾角大于90°坦辟。
若結(jié)果 >0 刊侯,則兩向量夾角小于 90°。
叉乘:兩 個(gè)向量的叉乘得到一個(gè)新的向量 ,新向量垂直于原來(lái)的兩個(gè)向量再乘夾角的正弦值
叉乘后得到的還是一個(gè)向量
在Unity3D里面锉走。兩個(gè)向量的點(diǎn)乘所得到的是兩個(gè)向量的余弦值滨彻,也就是-1 到1之間,
0表示垂直挪蹭,-1表示相反亭饵,1表示相同方向。 兩個(gè)向量的叉乘所得到的是兩個(gè)向量所組成的面
的垂直向量梁厉,分兩個(gè)方向辜羊。 簡(jiǎn)單的說(shuō),點(diǎn)乘判斷角度词顾,叉乘判斷方向八秃。 形象的說(shuō)當(dāng)一個(gè)敵人
在你身后的時(shí)候,叉乘可以判斷你是往左轉(zhuǎn)還是往右轉(zhuǎn)更好的轉(zhuǎn)向敵人肉盹,點(diǎn)乘得到你當(dāng)前的面
朝向的方向和你到敵人的方向的所成的角度大小昔驱。
二、Vector3的常用方法
****Vector是結(jié)構(gòu)體 ****
靜態(tài)成員變量
right(右):代表坐標(biāo)軸(1,0,0)
left (左):代表坐標(biāo)軸(-1,0,0)
up(上) :代表坐標(biāo)軸(0,1,0)
down (下): 代表坐標(biāo)軸(0,-1,0)
forward (前):代表坐標(biāo)軸(0,0,1)
back(后):代表坐標(biāo)軸(0,0,-1)
zero(零):代表坐標(biāo)軸(0,0,0)
one(一):代表坐標(biāo)軸(1,1,1)
****實(shí)例成員變量****
magnitude:(返回向量的長(zhǎng)度上忍,向量的長(zhǎng)度是(x*x+y*y+z*z)的平方根)(只讀)
normalized:返回一個(gè)長(zhǎng)度為一的新向量骤肛,原向量長(zhǎng)度不變
sqrMagnitude:返回向量的長(zhǎng)度的平方(只讀)
Vector3常用方法:
Cross:向量叉乘
Dot:向量點(diǎn)乘
Lerp(v(from),v(to),t):兩個(gè)向量之間的線性插值。按照數(shù)字t在from到to之間插值窍蓝。
MoveTowards(v,v,speed);當(dāng)前的地點(diǎn)移向目標(biāo)萌衬。
RotateTowards(v,v,r,m);當(dāng)前的向量轉(zhuǎn)向目標(biāo)。
Max(v,v),Min(v,v); 向量的最大值它抱,最小值
Angle:返回兩個(gè)向量之間的夾角
Distance:返回兩個(gè)向量之間的距離
Project : 極端向量在另一向量上的投影
Operator + 向量相加
Operator - 向量相減
Operator * 向量乘以標(biāo)量
Operator / 向量除以標(biāo)量
Operator== 若向量相等返回true
Operator != 若向量不等于則返回true
三、Vector3方法的應(yīng)用
Dot(向量點(diǎn)乘)方法;
在做rpg類(lèi)游戲的過(guò)程中,經(jīng)常遇到要判斷周?chē)治锵鄬?duì)自身的方位**
判斷一個(gè)物體處于另一個(gè)物體的前后方位(背對(duì)或面對(duì)),點(diǎn)積大于前面(面對(duì)),否則(背對(duì))朴艰。
Cross(向量叉乘方法)
判斷一個(gè)物體處于另一個(gè)物體的左右邊(通過(guò)v3.y>0右邊观蓄,否則在左邊)
Distance:返回兩個(gè)向量之間的距離
返回值的運(yùn)算方式為:from+(to-from)*t