计算几何 学习笔记

推荐阅读这个,模板可在这里找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.以某一点为基准点处理。则面积与基准点和当前边构成的三角形的面积相关,注意三点共线的情况要特判。