點積或點乘(Dot Product)
設向量a(x1,y1),向量b(x2,y2),二者的夾角θ,二者點乘的結果 d。
将兩個向量的每個分量對應相乘,然後将乘積結果相加,得出的結果,即:
d = x1*x2 + y1*y2;向量的點選運算的結果是一個标量。
幾何意義:
d > 0, θ < 90,點積值d大于0,夾角θ小于90度;d < 0, θ > 90,點積值d小于0,夾角θ大于90度;d = 0, θ = 90,點積值d等于0,夾角θ等于90度。可以通過兩個向量的點積來判斷兩個向量之間的夾角情況:cosθ = dot(a,b)
推導cosθ = dot(a,b)
首先從三角形餘弦定理的推導開始,為後面的推導做基礎準備。
![]()
向量的點積
設三角形的三個頂點:
A(ax,ay,az),B(bx,by,bz),C(cx,cy,cz)
設向量:
AC(cx-ax,cy-ay,cz-az)AB(bx-ax,by-ay,bz-az)BC(cx-bx,cy-by,cz-bz)
設三角形ABC:
角α是向量AB,AC的夾角角β是向量BC,BA的夾角角γ是向量CA,CB的夾角
三角形的三條邊分别為: a,b,c(即三條向量的模長|AC|=b,|AB|=c,|BC|=a)
在c上做高 d,這條高d将c邊一分為二,設高d與邊c的交點為D,則:
cos(α)=|AD|/|AC|;cos(β)=|BD|/|BC|;
由于
c = |AD|+|BD||AD|=cos(α)*|AC|=cos(α)*b|BD|=cos(β)*|BC|=cos(β)*a
是以
c =cos(β)*a+cos(α)*b;
将等式兩邊均乘以c,得到:
c^2 = ac*cos(β)+bc*cos(α)(1)
以上同樣步驟,可以得到:
a^2 = ac*cos(β)+ab*cos(γ)b^2 = bc*cos(α)+ab*cos(γ)
将上面兩式相加,得到:
a^2 + b^2 = ac*cos(β) + ab*cos(γ) + bc*cos(α) + ab*cos(γ)
= [ ac*cos(β) + bc*cos(α)]+[ab*cos(γ) + ab*cos(γ)]
結合(1),推導出:
a^2 + b^2 = c^2 + 2ab*cos(γ)c^2 = a^2 + b^2 -2ab*cos(γ)
同理,可以推導出:
a^2 = b^2 + c^2 -2bc*cos(α)(2)
b^2 = a^2 + c^2 -2ac*cos(β)
在三角形中ABC中,向量AB的模長是c;向量AC的模長是b;向量BC的模長是a。
|AB| = c|AC| = b
|BC| = a
注:向量的模長:向量的每個分量的平方和再開方,即:
|BC| = sqrt[(cx-bx)*(cx-bx)+(cy-by)*(cy-by)+(cz-bz)*(cz-bz)]
則:
|BC|^2 =(cx-bx)*(cx-bx)+(cy-by)*(cy-by)+(cz-bz)*(cz-bz)
由此推導出:
a^2 = |BC|^2 = BC*BC(3)
因為向量:
BC = AC-AB(4)
是以:
|BC|^2 = (AC-AB)*(AC-AB)|BC|^2 = AC*AC+AB*AB-2*AB*AC|BC|^2 = |AC|^2 + |AB|^2 - 2*AB*AC(5)
結合上面的推導(3):
(2) = (5)
即:
|BC|^2 = |AC|^2 + |AB|^2 - 2*|AB|*|AC|*cos(α)
得:
|AB|*|AC|*cos(α) = (|AC|^2 +|AB|^2 - |BC|^2)/2
由(4)代入,得:
|AB*|AC|*cos(α) = (|AC|^2+|AB|^2-|(AC-AB)|^2)/2
将向量AC(cx-ax,cy-ay,cz-az),AB(bx-ax,by-ay,bz-az),BC(cx-bx,cy-by,cz-bz)代入:
|AB*|AC|*cos(α) ={(cx-ax)^2+(cy-ay)^2+(cz-az)^2+(bx-ax)^2+(by-ay)^2+(bz-az)^2 -
[((cx-ax)-(bx-ax))^2+((cy-ay)-(by-ay))^2+((cz-az)-(bz-az))^2]}/2
合并去括号:
|AB|*|AC|*cos(α) =(cx-ax)(bx-ax)+(cy-ay)(by-ay)+(cz-az)(bz-az)
=(cx-ax,cy-ay,cz-az) * (bx-ax,by-ay,bz-az)
即:
|AB|*|AC|*cos(α) =AC * ABcos(α) = AC * AB / |AB|*|AC|
向量AB,AC經過标準化後,模長為1,|AB|*|AC| = 1*1 =1,則:
cos(α) = AC*AB/1 = AC*AB;
推導出:
cos(α) =AC*AB;
另一種推導方法:
假設a和b都是二維向量,θ1是a與x軸的夾角,θ2是b與x軸的夾角,向量a與b的夾角θ等于θ1 - θ2.、
a*b = ax*bx + ay*by
=(|a|*sinθ1)*(|b|*sinθ2) +(|a|*cosθ1)*(|b|*cosθ2)=|a||b|(sinθ1*sinθ2+cosθ1*cosθ2)=|a||b|(cos(θ1-θ2))=|a||b|cosθ
cosθ = a*b/|a||b|标準化之後的向量a,b的摸|a|、|b|均為1:
cosθ = a*b
注:|a||b|(sinθ1*sinθ2+cosθ1*cosθ2)=|a||b|(cos(θ1-θ2)),這個推導過程參見兩角和差公式:
![]()
向量的點積