unity基礎 點乘和叉乘

2021-10-08 13:31:30 字數 1116 閱讀 3449

1、點乘

定義:a*b=|a||b|cos

幾何意義:一條邊向另一條邊的投影乘以另一條邊的長度

運算:x1*x2+y1*y2+z1*z2.結果是乙個標量不是乙個變數。

應用:1、根據點乘計算兩個向量的夾角

2、根據點乘的結果得到夾角的大小範圍,判斷某乙個角色是在鏡頭前還是鏡頭後。如果點乘結果》0 表示夾角是0-90度,是在鏡頭前,否則在鏡頭後。

3、根據點乘的結果判斷兩個向量的長度大小關係

2、叉乘

定義:axb=c,三個都是向量

幾何意義:結果是乙個於這兩個向量都垂直的向量,這個向量的模是以兩個向量為邊的平行四邊形的面積

運算:(y1*z2-y2*z1)*i+(x2*z1-x1*z2)*j+(x1*y1-x2*y1),思考題:如何演算出來的結果?

性質:1、向量c和ab所在平面垂直

2、|c|=|a||b|*sin

3、axb = -bxa,叉乘的的方向右手定則確定。可以用來判斷a向量是在b向量的左邊或者是右邊,或者是順/逆時針方向

右手定則:右手的四指方向指向第乙個向量,屈向叉乘向量的夾角方向(兩個向量夾角方向取小於180°的方向),那麼此時大拇指方向就是叉乘所得的叉乘向量的方向.

區別:1、點乘判斷角度,叉乘判斷方向

2、得到a,b夾角的正弦值,計算向量的夾角(0,90),可以配合點乘和angle方法計算出含正負的方向。

3、根據叉乘大小,得到a,b向量所形成的平行四邊形的面積大小,根據面積大小得到向量的相對大小。

**//點積

private void testdot(vector3 a, vector3 b)

//叉乘

private void testcross(vector3 a, vector3 b)

else if (c.y == 0)

else

}// 獲取兩個向量的夾角  vector3.angle 只能返回 [0, 180] 的值

// 如真實情況下向量 a 到 b 的夾角(80 度)則 b 到 a 的夾角是(-80)

// 通過 dot、cross 結合獲取到 a 到 b, b 到 a 的不同夾角

private void getangle(vector3 a, vector3 b)

unity 點乘叉乘

點乘 也叫內積 a b a b 表示向量a在向量b上的對映長度,是乙個標量,如果是正的,則ab向量角度小於90,如果a b 0 則ab向量夾角大於90度。滿足乘法交換律,即 a b b a。注 有兩個向量 a x1,y1,z1 b x2,y2,z2 a b x1 x2 y1 y2 z1 z2 叉乘 ...

unity 點乘和叉乘的應用

點乘 兩個向量點乘得到乙個標量 數值等於兩個向量長度相乘後再乘以二者夾角的余弦值 如果兩個向量a,b均 為單位 向量 那麼a.b等於向量b在向量a方向上的投影的長度 點乘後得到的是乙個值 若結果 o,則 兩向量 互垂直 若結果 0 則 兩向量夾角大於90 若結果 0 則兩向量夾角小於 90 叉乘 兩...

Unity中的叉乘和點乘

兩個向量的點乘,就是我們說的數量級 a b a b cos 結果是乙個標量,如果 0,則兩個向量夾角等於90度,垂直關係 小於0,則兩個向量夾角大於90度 大於0,則兩個向量夾角小於90度 如果cos 等於 1,則兩個向量相反,等於1則兩個向量同向 如果兩個向量a,b均 為單位 向量 那麼a.b等於...