直接摘自百度百科,但愿你们能根据下面的介绍稍微理顺思路,按需使用,加油!算法
解释一下:点集的三角剖分(Triangulation),对数值分析(好比有限元分析)以及图形学来讲,都是极为重要的一项预处理技术。尤为是Delaunay三角剖分,因为其独特性,关于点集的不少种几何图都和Delaunay三角剖分相关,如Voronoi图,EMST树,Gabriel图等。Delaunay三角剖分有最大化最小角,“最接近于规则化的“的三角网和惟一性(任意四点不能共圆)两个特色。
Delaunay三角剖分算法定义
【定义】三角剖分
[1] :假设V是二维实数域上的有限点集,边e是由点集中的点做为端点构成的封闭线段, E为e的集合。那么该点集V的一个三角剖分T=(V,E)是一个平面图G,该平面图知足条件:
1.除了
端点,平面图中的边不包含点集中的任何点。
2.没有相交边。
3.平面图中全部的面都是三角面,且全部三角面的合集是散点集V的
凸包。
在实际中运用的最多的三角剖分是Delaunay三角剖分,它是一种特殊的
三角剖分。先从Delaunay边提及:
【定义】Delaunay边:假设E中的一条边e(两个端点为a,b),e
若知足下列条件,则称之为Delaunay边:存在一个圆通过a,b两点,圆内(注意是圆内,圆上最多三点共圆)不含点集V中任何其余的点,这一特性又称空圆特性。
【定义】Delaunay三角剖分:若是点集V的一个三角剖分T只包含Delaunay边,那么该三角剖分称为Delaunay三角剖分。
优化处理:
理论上为了构造Delaunay
三角网
[2] ,Lawson提出的局部优化过程LOP(Local Optimization Procedure),通常三角网通过LOP处理,便可确保成为Delaunay三角网,其基本作法以下所示:
1.将两个具备共同边的三角形合成一个多边形。
2.以最大空圆准则做检查,看其第四个顶点是否在三角形的
外接圆以内。
3.若是在,修正对角线即将对角线对调,即完成局部优化过程的处理。
Delaunay剖分的算法
Delaunay剖分是一种三角剖分的标准,实现它有多种算法。
Delaunay三角剖分算法准则特性
准则:
要知足Delaunay三角剖分的定义,必须符合两个重要的准则:
一、空圆特性:Delaunay
三角网是惟一的(任意四点不能共圆),在Delaunay三角形网中任一三角形的外接圆范围内不会有其它点存在。以下图所示:
二、最大化最小角特性:在
散点集可能造成的三角剖分中,Delaunay三角剖分所造成的三角形的最小角最大。从这个意义上讲,Delaunay三角网是“最接近于规则化的“的三角网。具体的说是指在两个相邻的三角形构成
凸四边形的对角线,在
相互交换后,六个内角的最小角再也不增大。以下图所示:
特性:
如下是Delaunay剖分所具有的优异特性:
1.最接近:以最近的三点造成三角形,且各
线段(三角形的边)皆不相交。
2.惟一性:不论从区域何处开始构建,最终都将获得一致的结果。
3.最优性:任意两个相邻三角形造成的
凸四边形的对角线若是能够互换的话,那么两个三角形六个内角中最小的角度不会变大。
4.最规则:若是将
三角网中的每一个三角形的最小角进行升序排列,则Delaunay三角网的排列获得的数值最大。
5.区域性:新增、删除、移动某一个顶点时只会影响临近的三角形。
6.具备
凸多边形的外壳:三角网最外层的边界造成一个凸多边形的外壳。
Delaunay三角剖分算法计算方法
a)Lawson算法
逐点插入的Lawson算法
[3] 是Lawson在1977年提出的,该算法思路简单,易于编程实现。基本原理为:首先创建一个大的三角形或多边形,把全部数据点包围起来,向其中插入一点,该点与包含它的三角形三个顶点相连,造成三个新的三角形,而后逐个对它们进行空外接圆检测,同时用Lawson设计的局部优化过程LOP进行优化,即经过交换对角线的方法来保证所造成的
三角网为Delaunay三角网。
上述基于
散点的构网算法理论严密、惟一性好,网格知足空圆特性,较为理想。由其逐点插入的构网过程可知,遇到非Delaunay边时,经过删除调整,能够构造造成新的Delaunay边。在完成构网后,增长新点时,无需对全部的点进行从新构网,只需对新点的影响三角形范围进行局部联网,且局部联网的方法简单易行。一样,点的删除、移动也可快速动态地进行。但在实际应用当中,这种构网算法当点集较大时构网速度也较慢,若是点集范围是非凸区域或者存在内环,则会产生非法三角形。
如左图所示:当离散点集构成圆环时,Lawson算法产生的非法三角形
离散点集合
Lawson算法产生的三角剖分
正确的三角剖分
b)Bowyer-Watson算法(推荐)
Watson算法的基本步骤是:
一、构造一个超级三角形,包含全部散点,放入三角形链表。
二、将点集中的散点依次插入,在三角形链表中找出外接圆包含插入点的三角形(称为该点的影响三角形),删除影响三角形的公共边,将插入点同影响三角形的所有顶点链接起来,完成一个点在Delaunay三角形链表中的插入。
三、根据优化准则对局部新造成的三角形优化。将造成的三角形放入Delaunay三角形链表。
四、循环执行上述第2步,直到全部散点插入完毕。
这一算法的关键的第2步图示以下: