计算几何 学习笔记
推荐阅读这个,模板可在这里找strangeman的提交记录。
## 向量相关
#### 向量的坐标表示
有点 \(A(x_1,y_1)\) 和点 \(B(x_2,y_2)\),则 \(\overrightarrow{AB}\) 可表示为 \((x_2-x_1,y_2-y_1)\)
#### 共线向量
共线向量 \(a(x_1,y_1)\) 和 \(b(x_2,y_2)\) 满足 \[ x_1y_2=x_2y_1 \]
由此得到判断三点共线的方法:计算 \(\overrightarrow{AB}\) 和 \(\overrightarrow{BC}\) 进行比较。
#### 向量的点乘
向量 \(a(x_1,y_1)\) 和 \(b(x_2,y_2)\) 的数量积 \[ a \cdot b=x_1x_2+y_1y_2 \]
由此得到向量垂直的条件: \[ a\perp b \Leftrightarrow x_1x_2+y_1y_2=0 \]
#### 向量的叉乘
向量 \(a(x_1,y_1)\) 和 \(b(x_2,y_2)\) 的向量积 \[ a \times b=x_1y_2-y_1x_2 \]
#### 叉乘的意义 + 若两个向量的叉积不为 \(0\),则他们相交;否则他们重合或平行。
两个向量的叉积是他们围成的平行四边形的面积,由此可以快速计算三角形的面积,从而快速计算多边形的面积。注意:逆时针求得的面积是正的,顺时针求得的是负的。
若两个向量的叉积大于 \(0\),则第二个向量由第一个逆时针选择得到;反之由顺时针旋转得到。由此可以判定多边形的凹凸性、判定点与多边形的位置关系、判定线段相交等等。
多边形相关
#### 三角函数 + \(\pi=\arccos(-1)\),这样精度比较高。
- 开平方、反三角函数最容易炸精度。因此不要使用正弦定理求解角度,尽量使用余弦定理或点乘。还有个好处就是余弦值在 \([0,\pi]\) 是唯一的!
#### 凸包与面积 求凸多边形的面积的基本思想是三角剖分后求每个三角形的面积。由此产生了两种子类型:
1.在动态凸包中处理。则每次增加点、删除点的面积与该点和相邻两点组成的三角形的面积相关;
2.以某一点为基准点处理。则面积与基准点和当前边构成的三角形的面积相关,注意三点共线的情况要特判。