1限定三角化
1.1 定义
Delaunay三角剖分:
Delaunay三角剖分是 Boris Delaunay 于1934 年提出的。它具有一些优秀的性质,例如说它最大化三角剖分T中所有三角形的最小角,以避免剖分出扁平的三角形。
Delaunay边:e是E中满足一下条件的边:存在一个圆经过其端点a、b,圆内(不是圆上)不含有点集V中的任何其他点,则称e为Delaunay边。
Delaunay三角剖分:如果V的一个三角剖分T只包含Delaunay边,那么该三角剖分称为Delaunay三角剖分。
约束性Delaunay三角剖分:尽可能的进行Delaunay三角剖分称为约束Delaunay三角剖分。
Delaunay边:如何一个边内接于一个空圆,则为一个Delaunay边。
Gabriel边:如果一个边,若以此边为直径的圆是一个空圆(圆内不含其他点)则称为Gabriel边。
1.2创建限定三角剖分
约束性Delaunay三角剖分可以用以下两个全局函数细化为限定三角剖分。它们分别是:
template<class CDT> void make_conforming_Delaunay_2 (CDT& t)
template<class CDT> void make_conforming_Gabriel_2 (CDT& t)
在上面两个函数中,参数CDT必须通过约束性Delaynay三角剖分类进行实例化。(关于三角剖分部分可以参考2D三角剖分部分,ps:我会陆续翻译相应的部分O(∩_∩)O)
关于用于实例化约束性Delaunay三角剖分CDT的几何特性参数geometric traits必须是 ConformingDelaunayTriangulationTraits_2
从上面的两个函数可以看出,变量t是通过引用的方式传递参数的。它可以使约束三角剖分网格细分为限定三角剖分网格,或者通过添加顶点细化为Gabriel三角剖分。建议用户备份原始数据,特别当源数据还要进行其他计算的时候。