计算几何学习笔记
Last Update:
计算几何学习笔记, 尽量做到简单易懂.
一些约定#
用非加粗字母代表点 (例如
用加粗字母代表向量 (例如
向量基础#
这边介绍一个自己常用的右手定则判断叉积方向(正负).
用右手的大拇指, 食指, 中指做一个三维坐标系的样子, 形如这样:
其中大拇指与红色正半轴对齐, 食指与绿色正半轴对齐, 中指与蓝色正半轴对齐. 容易发现, 如果有向量
相似的, 我们要判断
基本操作#
判定点在直线的哪边#
如图, 我们要判断点
我们计算
判定直线交点#
我们先进行快速排斥试验, 即判定这两条线段所在矩形是否有交集. 我们称一条线段所在的矩形是一个矩形, 使得这个矩形的对角线是那条线段, 且边平行于坐标轴.
可以发现, 如果不通过快速排斥试验, 那么这两条线段必定没有相交. 反之不一定, 所以需要进行跨立试验. 通过跨立试验可以辨别第二种和第三种情况.
跨立试验就是对于线段
如果
判定点是否在多边形内部#
给定多边形
算法 1#
我们先特判一些特殊情况(点在多边形上的情况), 然后从
算法 2#
我们考虑计算
直线求交#
首先, 我们特判掉两条线段交点不为一个的情况(方向向量平行)[PS: 学了立体几何之后才发现平面的情况有多简单 quq]