點乘和叉乘在unity中有廣泛的應用:結論點乘判斷角度,叉乘判斷朝向方位。
點乘:結果為乙個常數
又稱"點積","數量積」,「內積」(dot product, 用*)
對於向量 a = (x1, y1, z1) ,向量 b = (x2, y2, z2),
則向量a點乘向量 b:
a·b = x1 * x2 + y1 * y2 + z1 * z2
同時有a·b = |a||b|cosθ
由以上兩公式可見,向量的點乘結果為乙個標量,即乙個數值。
因為夾角θ<=180°,所以配合余弦曲線可以直觀地判斷出:
當向量 a·b > 0 時,θ < 90° ;
當向量 a·b < 0 時,θ > 90° ;
當向量 a·b = 0 時,θ = 90° ;
向量點乘符合乘法交換律,即:a·b = b·a
unity專案應用:
1.根據點乘計算兩個向量的夾角。θ = arccos(a·b / |a||b|)
2.根據點乘的正負值,得到夾角大小範圍,>0,則夾角(0,90)<0,則夾角(90,180),可以利用這點判斷乙個多邊形是面向攝像機還是背向攝像機。
3.根據點乘的大小,得到向量的投影長度,反應了向量的長度關係。
4.利用點積可判斷乙個多邊形是否面向攝像機還是背向攝像機。向量的點積與它們夾角的余弦成正比,因此在聚光燈的效果計算中,可以根據點積來得到光照效果,如果點積越大,說明夾角越小,則物理離光照的軸線越近,光照越強。計算機圖形學常用來進行方向性判斷,如兩向量點積大於0,則它們的方向朝向相近;如果小於0,則方向相反。
叉乘:結果為乙個向量
(又稱"叉積",「向量積」,「外積」)(cross product,用x)
定義:c = a x b,其中a b c 均為向量
幾何意義是:得到乙個與這兩個向量都垂直的向量,這個向量的模是以兩個向量為邊的平行四邊形的面積。axb = |a||b|sinθ,這個值即就是垂直於a和b組成的平面的向量c的模長!
如果是二維計算:v1( x1, y1)x v2( x2, y2)= x1 * y2 - x2 * y1
v1和v2向量的叉乘運算:相應元素的乘積的和:v1( x1, y1,z1) x v2(x2, y2, z2) = (y1z2 - y2z1)i+(x2z1 - x1z2)j+(x1y2-x2y1)k;
利用三階行列式計算
|i j k|
|x1 y1 z1|
|x2 y2 z2|
性質1:c⊥a,
c⊥b,即向量c與向量a,b所在平面垂直
性質2:模長|c| = |a||b| sin
性質3:(數學上)滿足右手法則, a x b = -b x a,所以我們可以使用叉乘的正負值來判斷a,b的相對位置,即b是處於a的順時針還是逆時針方向。
叉乘的右手定則是用來確定叉乘積的方向的。
右手法則:右手的四指方向指向第乙個向量,屈向叉乘向量的夾角方向(兩個向量夾角方向取小於180°的方向),那麼此時大拇指方向就是叉乘所得的叉乘向量的方向.(大拇指應與食指成九十度)(注意:unity當中使用左手,因為unity使用的是左手座標系)
數學上叉乘的右手法則
叉積的作用:
叉積時乙個非常重要的性質是可以通過它的符號判斷兩向量相互之間的順逆時針關係:
若p×q > 0 , 則p在q的順時針方向;
若p×q < 0 , 則p在q的逆時針方向;
若p×q = 0 , p與q共線,可能是同向也可能是反向;
unity當中叉乘的左手法則,unity專案應用:
1.根據叉乘得到a,b向量的相對位置,和順時針或逆時針方位。
簡單的說: 點乘判斷角度,叉乘判斷方向。
形象的說: 當乙個敵人在你身後的時候,叉乘可以判斷你是往左轉還是往右轉更好的轉向敵人,點乘得到你當前的面朝向的方向和你到敵人的方向的所成的角度大小。
2.得到a,b夾角的正弦值,計算向量的夾角(0,90),可以配合點乘和angle方法計算出含正負的方向。
3.根據叉乘大小,得到a,b向量所形成的平行四邊形的面積大小,根據面積大小得到向量的相對大小。
4.如何判斷乙個點是否在乙個矩形內?
只要判斷(ae x ab ) * ( ce x cd) >= 0 就說明e在ab,cd中間夾著,同理計算另兩邊da和bc就可以了。(ae x ab )>0,即說明ae在ab的順時針方向,也就是說點e在ab的下方,同理可知點e在cd的上方。然後在判斷ad和cb與點e的關係。
// 計算 |p1 p2| x |p1 p|
float
getcross
(vector2 p1,
vector2 p2,
vector2 p)
//判斷點p是否在p1p2p3p4的正方形內
bool
ispointinmatrix
(vector2 p1,
vector2 p2,
vector2 p3,
vector2 p4,
vector2 p)
類似於判斷乙個點是否在乙個三角形內?
點在三角形內?
unity中的驗證看這裡:unity驗證
向量 向量叉乘 向量點乘
向量 向量叉乘 向量點乘 2010年07月28日 星期三 14 33 向量 vector 在幾乎所有的幾何問題中,向量 有時也稱向量 是乙個基本點。向量的定義包含方向和乙個數 長度 在二維空間中,乙個向量可以用一對x和y來表示。例如由點 1,3 到 5,1的向量可以用 4,2 來表示。這裡大家要特別...
向量的點乘和叉乘
弱比了,點乘和叉乘搞反了 分清點乘和叉乘 點乘,也叫向量的內積 數量積。顧名思義,求下來的結果是乙個數。向量a 向量b a b cos在物理學中,已知力與位移求功,實際上就是求向量f與向量s的內積,即要用點乘。叉乘,也叫向量的外積 向量積。顧名思義,求下來的結果是乙個向量,記這個向量為c。向量c 向...
向量的點乘和叉乘
向量是由n個實數組成的乙個n行1列 n1 或乙個1行n列 1n 的有序陣列 也叫向量的內積 數量積,對兩個向量執行點乘運算,就是對這兩個向量對應位一一相乘之後求和的操作,點乘的結果是乙個標量。點乘公式 對於向量a和向量b a和b的點積公式為 點乘幾何意義 點乘的幾何意義是可以用來表徵或計算兩個向量之...