算分-GEOMETRIC ALGORITHMS
Plane-Sweep: 平面扫描是二维的几何问题产生的算法范式。它的想法是用一条直线去扫描并且对于遇到的第一个数据进行处理。我们用这个想法解决三个问题:构造一些点的凸包,对凸包进行三角剖分,检测直线的交叉点。 首先介绍了凸包。设S是平面中给定两个坐标值的一系列点的集合,S的凸包记作convS,是S的所有凸集中最小的一个。把点想象成板子上的钉子,然后用一个橡皮筋在外面的钉子周围绕一圈,放手之后橡皮筋自然会跟踪凸包的边界。为了构造凸包,我们用一条直线从左到右扫描平面,直线左边的顶点都是处理好的,直线右边的点是待处理的。我们按横坐标对点进行排序为x1,x2,...,xn;然后选择前三个点用逆时针的方式形成一个三角形为x1x2x3或者是x1x3x2;对于i = 4 to n,我们按照一下方式加入xi,过xi作两条直线,要求它们可以支持这个凸包(理解成夹住凸包),然后连接xi和对应的两个顶点,就可以了。这三步完成之后就形成了凸包,下面是一个例子: 这个图展示的是加入6的这个点的过程,作了两条直线63和65,支撑了这个凸包,然后连接起来就形成了新的凸包。 然后介绍了定向,如何决定访问三个点的顺序是逆时针还是顺时针呢?其实只要结合行列式就可以了,因为可以通过行列式来计算面积,根据面积的正负来判断当前的方向。 接着介绍了寻找支撑线(支持线)的方法