向量是由n个实数组成的一个n行1列(n1)或一个1行n列(1n)的有序数组;
向量的点乘,也叫向量的内积、数量积,对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,点乘的结果是一个标量。
点乘公式
对于向量a和向量b:
a
=
[
a
1
,
a
2
,
a
3
,
…
,
a
n
]
a=[a_1,a_2,a_3,…,a_n]
a=[a1,a2,a3,…,an]
b
=
[
b
1
,
b
2
,
b
3
,
…
,
b
n
]
b=[b_1,b_2,b_3,…,b_n]
b=[b1,b2,b3,…,bn]
a和b的点积公式为:
a
∗
b
=
a
1
b
1
+
a
2
b
2
+
…
+
a
n
b
n
a*b=a_1b_1+a_2b_2+…+a_nb_n
a∗b=a1b1+a2b2+…+anbn
要求一维向量a和向量b的行列数相同。
点乘几何意义
点乘的几何意义是可以用来表征或计算两个向量之间的夹角,以及在b向量在a向量方向上的投影,有公式:
a
∗
b
=
∣
a
∣
∣
b
∣
c
o
s
θ
a*b=|a||b|cosθ
a∗b=∣a∣∣b∣cosθ
推导过程如下:
首先看一下向量组成,
定义向量:
c = a − b c=a-b c=a−b
根据三角形余弦定理有:
c 2 = a 2 + b 2 − 2 ∣ a ∣ ∣ b ∣ c o s θ c^2=a^2+b^2-2|a||b|cosθ c2=a2+b2−2∣a∣∣b∣cosθ
根据关系c=a-b(a、b、c均为向量)有:
(
a
−
b
)
2
=
a
2
+
b
2
−
2
a
∗
b
=
a
2
+
b
2
−
−
2
∣
a
∣
∣
b
∣
c
o
s
θ
(a-b)^2=a^2+b^2-2a*b=a^2+b^2--2|a||b|cosθ
(a−b)2=a2+b2−2a∗b=a2+b2−−2∣a∣∣b∣cosθ
即:
a
∗
b
=
∣
a
∣
∣
b
∣
c
o
s
θ
a*b=|a||b|cosθ
a∗b=∣a∣∣b∣cosθ
向量a,b的长度都是可以计算的已知量,从而有a和b间的夹角θ:
θ
=
a
c
c
c
o
s
(
(
a
∗
b
)
/
(
∣
a
∣
∣
b
∣
)
)
θ=acccos((a*b)/(|a||b|))
θ=acccos((a∗b)/(∣a∣∣b∣))
根据这个公式就可以计算向量a和向量b之间的夹角。从而就可以进一步判断这两个向量是否是同一方向,是否正交(也就是垂直)等方向关系,具体对应关系为:
a·b>0 方向基本相同,夹角在0°到90°之间
a·b=0 正交,相互垂直
a·b<0 方向基本相反,夹角在90°到180°之间
叉乘公式
两个向量的叉乘,又叫向量积、外积、叉积,叉乘的运算结果是一个向量而不是一个标量。并且两个向量的叉积与这两个向量组成的坐标平面垂直。
对于向量a和向量b:
a
=
(
x
1
,
y
1
,
z
1
)
a=(x_1,y_1,z_1)
a=(x1,y1,z1)
b
=
(
x
2
,
y
2
,
z
2
)
b=(x_2,y_2,z_2)
b=(x2,y2,z2)
a和b的叉乘公式为:
其中:
根据i、j、k间关系,有:
叉乘几何意义
在三维几何中,向量a和向量b的叉乘结果是一个向量,更为熟知的叫法是法向量,该向量垂直于a和b向量构成的平面。
在3D图像学中,叉乘的概念非常有用,可以通过两个向量的叉乘,生成第三个垂直于a,b的法向量,从而构建X、Y、Z坐标系。如下图所示:
在二维空间中,叉乘还有另外一个几何意义就是:aXb等于由向量a和向量b构成的平行四边形的面积。
说是矩阵的叉乘,其实是说的是两个向量的叉乘,矩阵是不能叉乘的。cross(A,B)返回向量A和B的叉乘,其中A,B必须是3个元素的向量!
比如
a=[1,2,3],b=[4,5,6],
则cross(a,b)=[-3 6 -3].
它表示的意思是三维空间中的两个点A(1,2,3)和B(4,5,6),再加上原点O,则构成的两个向量OA,OB,则cross(a,b)就是垂直平面OAB的向量,它的模是三角形OAB面积的2倍。结合上面的例子,假若点C(-3,6,-3),则向量OC就是平面OAB的法向量,|OC|就是三角形OAB面积的2倍。