向量的点积

本文详细介绍了向量的点积概念,通过点积可以判断两个向量之间的夹角情况。点积的几何意义包括:d>0对应夹角小于90度,d<0对应夹角大于90度,d=0对应夹角为90度。通过三角形余弦定理和向量标准化,推导出cosθ=AC*AB,从而得出向量夹角的计算公式。

点积或点乘(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 * AB

cos(α) = 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)),这个推导过程参见两角和差公式:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值