unity中的點乘和叉乘
點乘很多資料上都是說表示兩個向量的相似度,具體是怎麼表示相似度,結果大小如何表示相似度,越大越相似,還是越差,如果細細去推導才發現很多東西以前的理解是有錯誤或者說是不清不楚的。
點乘的定義:
a·b=|a|·|b|cos【表示向量a,b的夾角,取值範圍為[0,180]】
根據上面的公式可以知道 a·b 可以看出結果是乙個標量
點乘可以求出兩個向量的夾角,但是點乘的結果不是兩個向量的夾角。
假設上面的oa長度為1 ob長度為2 角度aoc為30°
a·b=12cos30≈1.732 這個幾何意義無法用相似度或者夾角來表示的。
幾何意義:是一條邊向另一條邊的投影乘以另一條邊的長度.
表示向量的夾角的幾何意義:
cos=(a·b)/(|a|·|b|)
向量的叉乘
定義:c = a x b,其中a b c均為向量
可以看出向量叉乘得到的是乙個向量,很多看過資料的都知道結果表示是垂直於兩個向量組成面的方向那麼有兩個問題需要進一步的解答。
問題1:在unity中垂直方向有兩個的,比如垂直於地面是朝上的也可以朝下的,具體朝哪個方向。
問題2:在unity中向量是有大小和方向的,問題1 計算出了方向,那請問叉乘後向量的大小是多少。
兩個向量 a b
a=(a1,a2,a3)
b=(b1,b2,b3)
i j k來表示三維座標軸
a=(a1i,a2j,a3k)=a1i+a2j+a3k
b=(b1i,b2j,b3k)=b1i+b2j+b3k
已知ii=0 jj=0 kk=0
ij=k jk=i ki=j
ji=-k kj=-i i*k=-j
axb=(a1i+a2j+a3k)*(b1i+b2j+b3k)
根據上面推導可以得出結論
axb=(a2b3-a3b2)i+(a3b1-a1b3)j+(a1b2-a2b1)k
結果寫成多項式
變換形式得到叉乘矩陣:
稱為a向量的叉乘矩陣。
性質1:c⊥a,c⊥b,即向量c與向量a,b所在平面垂直
性質2:模長|c| = |a||b| sin
方向上unity為左手座標系,最終的方向是根據向量a到向量b的旋轉方向來定義的,建議**實際體驗
Unity中的叉乘和點乘
兩個向量的點乘,就是我們說的數量級 a b a b cos 結果是乙個標量,如果 0,則兩個向量夾角等於90度,垂直關係 小於0,則兩個向量夾角大於90度 大於0,則兩個向量夾角小於90度 如果cos 等於 1,則兩個向量相反,等於1則兩個向量同向 如果兩個向量a,b均 為單位 向量 那麼a.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基礎 點乘和叉乘
1 點乘 定義 a b a b cos 幾何意義 一條邊向另一條邊的投影乘以另一條邊的長度 運算 x1 x2 y1 y2 z1 z2.結果是乙個標量不是乙個變數。應用 1 根據點乘計算兩個向量的夾角 2 根據點乘的結果得到夾角的大小範圍,判斷某乙個角色是在鏡頭前還是鏡頭後。如果點乘結果 0 表示夾角...