一、点乘和叉乘
1、点积(点乘):
(1)向量a*向量b=|a|*|b|*cos(a,b),向量b在a上的投影长度=|b|.cos(a,b)
(2)c = a*b,c是一个标量,是一个数,c大于0说明a和b夹角小于90度,c小于0说明a和b夹角大于90度。c等于0说明a和b垂直正交!
(3)用途:判断两个向量的夹角([0度, 180度])。
延伸知识点
(4)向量c=a-b,则c^2 = a^2 + b^2 - 2|a|*|b|*cos(a,b)
2、外积(叉乘):
(1)c=a×b=|a|*|b|*sin(a,b),c是一个向量(法向量),方向满足向量a和b的右侧定则(四肢顺着向量a的方向转外向量b,这是大拇指方向就是向量c的方向)。
(2)c=向量a×b,c大于0说明b在a的左侧,c小于0说明b在a的右侧,c等于0说明a和b共线。
(3)用途:判断b和a的哪一侧
(4)a×b的数值大小 = a和b所构成的平行四边形的面积
具体计算方式如下:
二、点、线、面之间的关系
判断点和直线之间的左右关系:
点和直线的左右关系本质是以直线为向量作为基准方向,判断点的方位。
1、判断三点共线
二维坐标系,有三点A(x1, y1)、B(x2, y2)、C(x3, y3)
(1)面积法
S=(1/2)*(x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2)
(2)斜率法
(y2-y1)/(x2-x1) == (y3-y1)/(x3-x1)
(3)向量法
(y3−y1)(x2−x1)−(y2−y1)(x3−x1)=0
(4)c++中,小数相等不能使用等号,需要误差判断:
|(y3−y1)(x2−x1)−(y2−y1)(x3−x1)|<=1e−6
(5)海伦公式(初中数学)
计算三角形的三边的长度分别为a、b和c,则p=1/2*(a+c+c),即半周长
面积s=sqrt(p*(p-a)*(p-b)*(p-c))
2、点是否在矩形内部
图上图所示,p是否在矩形ABCD内部?
方法:向量AB和向量CD(注意向量的方向!)【左右两条边】是否包住点p,向量DA和向量BC【上下两条边】是否包住点p?
(AB×Ap)*(CD×Cp)>=0 && (DA×Dp)*(BC×Bp)>= 0
3、点是否在多边形内部
射线法:
-- over --