向量 学习笔记
向量的基本运算
定义 \(\overrightarrow{a}= \left( x_1,y_1 \right),\overrightarrow{b}= \left( x_2,y_2 \right),\theta\) 为两个向量的夹角
向量加法:
\(\overrightarrow{a}+\overrightarrow{b}=\left( x_1+x_2,y_1+y_2 \right)\)
满足于三角形法则(首尾顺次相连)和平行四边形法则(共起点)
向量减法:
\(\overrightarrow{a}+\overrightarrow{b}=\left( x_1-x_2,y_1-y_2 \right)\)
向量点乘:
\(\overrightarrow{a} \cdot\overrightarrow{b}=x_1x_2+y_1y_2=|\overrightarrow{a}||\overrightarrow{b}|\cos \theta\)
\(\overrightarrow{a} \cdot \overrightarrow{b}>0\) 则 \(0^{\circ} \le \theta <90^\circ\)
\(\overrightarrow{a} \cdot \overrightarrow{b}=0\) 则 \(\theta =90^\circ\)
\(\overrightarrow{a} \cdot \overrightarrow{b}<0\) 则 \(90^\circ \le \theta <180^\circ\)
向量叉乘:
\(|\overrightarrow{a} \times\overrightarrow{b}|=|\overrightarrow{a}||\overrightarrow{b}|\sin \theta\)
计算满足于右手法则
其几何意义为两个向量围成的平行四边形面积
但向量外积本质上在三维空间内定义
\(\overrightarrow{a}=(x1,y1,zz1) ,\overrightarrow{b}=(x2,y2,z2)\)
\(\overrightarrow{a} \times\overrightarrow{b}=(y1z2-y2z1,z1x2-x1z2,x1y2-x2y1)\)
向量旋转 (逆时针)
令被旋转的向量为 \(\left( x,y\right)\)
\(\left(x \cos \theta-y \sin \theta,x \sin \theta+y \cos \theta\right)\)
\(\begin{bmatrix} \cos \theta&-\sin \theta \\ sin \theta & \cos \theta \end{bmatrix}\) \(\begin{bmatrix} x\\ y \end{bmatrix}\)
可以使用画图与三角形恒等变形进行证明
求多边形的面积
将多边形上的点逆时针标记为 $ p_1,p_2,p_3 \cdots p_n$ ,选择一个辅助点 \(O\)
记向量 \(\overrightarrow{v_i}\) 表示 \(\overrightarrow{Op_i}\)
则多边形面积为
\(S= \frac{1}{2}|\sum_{i=1}^N \overrightarrow{v_i} \times \overrightarrow{v_{i\mod n+1}}|\)
使用向量叉乘的几何意义实现,用不同的方向表示正负
坐标的距离
欧式距离
在 \(n\) 维空间下的点 \(\overrightarrow{A}=(x_{11},x_{12},x_{13}\cdots x_{1n})\) 和 \(\overrightarrow{B}=(x_{21},x_{22},x_{23}\cdots x_{2n})\) 的欧式距离:
\(||\overrightarrow{AB}||=\sqrt{\sum_{i=1}^n(x_{1i}-x_{2i})^2}\)
曼哈顿距离
\(d1(A,B)=|x_1-x_2|+|y_1-y_2|\)
满足以下性质
- \(d1(A,B) \ge0\)
- \(d1(A,A) =0\)
- \(d1(A,B) = d(B,A)\)
- \(d1(A,C)+d(C,B) \ge d(A,B)\)
inline double dis(int x1,int y1,int x2,int y2){
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
切比雪夫距离
\(d2(A,B)=\max\left\{|x_1-x_2|,|y_1-y_2|\right\}\)
曼哈顿距离与切比雪夫距离的转换
将点 \((x,y)\) 转化为 \((x+y,x-y)\) ,原坐标系的曼哈顿距离为新坐标系中切比雪夫距离
将点 \((x,y)\) 转化为 \((\frac{x+y}{2},\frac{x-y}{2})\) ,原坐标系的曼哈顿距离为新坐标系中切比雪夫距离
例题:
[NOIP2017 提高组] 奶酪
[USACO04OPEN]Cave Cows 3
判断几何图形的关系
判断点是否在线段上
设点为 \(\overrightarrow{Q}\),线段为 \(\overrightarrow{P1P2}\)
判断条件:\((\overrightarrow{Q}-\overrightarrow{P1}) \times (\overrightarrow{P2}-\overrightarrow{P1})=0\) 且 \(\overrightarrow{Q}\) 在以 \(\overrightarrow{P1},\overrightarrow{P2}\) 为对角顶点的矩形内
inline int cross(reg int x1,reg int y1,reg int x2,reg int y2){return x1*y2-y1*x2;}
inline bool check(reg point p1,reg point p2,reg point q){
if (!(min(p1.x,p2.x)<=q.x&&q.x<=max(p1.x,p2.x)&&min(p1.y,p2.y)<=q.y&&q.y<=max(p1.y,p2.y))) return 0;
return cross(p2.x-p1.x,p2.y-p1.y,q.x-p1.x,q.y-p1.y)*
cross(p2.x-p1.x,p2.y-p1.y,q.x-p2.x,q.y-p2.y)==0;
}
判断两线段是否相交
设两个线段分别为 \(\overrightarrow{P1P2}\) 与 \(\overrightarrow{Q1Q2}\)
- 快速排斥实验:若以 \(\overrightarrow{P1P2}\) 为对角线的矩形与以 \(\overrightarrow{Q1Q2}\) 为对角线的矩形不相交,那么两个线段显然不向交
- 跨立实验:如果两线段相交,则两线段必然相互跨立对方
若 \(\overrightarrow{P1P2}\) 跨立 \(\overrightarrow{Q1Q2}\) ,则矢量\((\overrightarrow{P1} - \overrightarrow{Q1} )\) 和 \((\overrightarrow{P2} - \overrightarrow{Q1} )\) 位于矢量 \((\overrightarrow{Q2} - \overrightarrow{Q1} )\) 的两侧
在代码实现上为 \((\overrightarrow{P1} - \overrightarrow{Q1} ) \times (\overrightarrow{Q2} - \overrightarrow{Q1} ) * (\overrightarrow{P2} - \overrightarrow{Q1} ) \times(\overrightarrow{Q2} - \overrightarrow{Q1} ) \le0\)
当且仅当 \(\overrightarrow{Q1}\) 在 \(\overrightarrow{P1P2}\) 上时取等
同时要对 \(\overrightarrow{Q2}\) 进行判断
判断线段和直线是否相交 只要进行跨立实验
判断点是否在多边形中
设这个点为 \(P\) ,从 \(P\) 引一条射线 \(L\),计算与多边形的交点
若交点个数为奇数,在多边形内,否则在多边形外
几种情况要特判一下

浙公网安备 33010602011771号