一、Lawson算法
Lawson算法是一种基于点插入的Delaunay三角剖分算法。该算法通过不断地向剖分中加入点,来逐步构建整个Delaunay三角剖分。该算法思路简单,易于编程实现。
Lawson算法基本原理为:首先建立一个大的三角形或多边形,把所有数据点包围起来,向其中插入一点,该点与包含它的三角形三个顶点相连,形成三个新的三角形,然后逐个对它们进行空外接圆检测,同时用Lawson设计的局部优化过程LOP进行优化,即通过交换对角线的方法来保证所形成的三角网为Delaunay三角网。
Lawson算法中的局部优化过程(LOP:Local Optimization Procedure)是逐点插入法的关键,局部优化过程的思路是,如果一个三角形不符合Delaunay三角剖分的规则,则将一个包含一对三角形的四边形的对角线对换,从而构成符合Delaunay三角剖分的新三角形。简单来说,Lawson算法通过不断地将剖分中非Delaunay边上的点进行“翻转”,使得该边成为Delaunay边,直到所有边都是Delaunay边为止。
该算法基于散点的构网算法理论严密、唯一性好,网格满足空圆特性,是一种比较理想的算法。其逐点插入的构网过程中如果遇到非Delaunay边时,可以通过删除调整,进而构造形成新的Delaunay边。在完成构网后,增加新点时,无需对所有的点进行重新构网,只需对新点的影响三角形范围进行局部构网。但是在实际应用当中,点集数量较大,分布复杂时构网速度较慢,而且对于区域为非凸,存在内环时,则会产生非法三角形。
具体实现步骤如下:
a) 构建包含所有点的超级三角形(super triangles)T(p0p1p2),将超级三角形加入T中构成初始三角剖分。