新浪博客

Deluanay三角剖分与Voronoi图

2016-07-19 18:08阅读:
一、简介
三角剖分是计算几何领域的主要研究课题之一,其在GIS领域、医学可视化、计算机图形图像处理、曲面重构和三维有限元方法的预处理等领域都有着广泛的应用。
对于平面域上的点集,存在且仅存在一种三角划分,使得所有三角形的最小内角之和为最大,称之为Deluanay三角划分(Deluanay Triangulation)。显然DT使得所形成的每个三角形尽可能接近等边三角形避免病态三角形的出现,因此得到了广泛的应用。对点集进行Deluanay三角划分后,就能很容易得到它的Voronoi图了。

Deluanay三角剖分与Voronoi图
二、定义
假设E中的一条边e(两个端点为a,b),e若满足下列条件,则称之为Delaunay边:存在一个圆经过a,b两点,圆内(注意是圆内,圆上最多三点共圆)不含点集V中任何其他的点,这一特性又称空圆特性。
如果点集V的一个三角剖分T只包含Delaunay边,那么该三角剖分称为Delaunay三角剖分。
Deluanay三角剖分与Voronoi图

三、算法步骤
点集的Deluanay三角划分算法有很多:逐点插入算法、三角形增长算法、分割合并算法等等。本文用的是逐点插入算法。算法步骤如下:
1、对点集进行排序。按照点集的坐标x分量由小到大进行排序。
2、构造一个超级三角形(本文构造的是等边三角形)。点集内的所有点都在该超级三角形内。
3、逐点插入。
4、删除超级三角形。
5、对于点集中的每个点,获取共享该点的所有三角形的外接圆圆心。将该点所有的外接圆圆心逆时针或顺时针连接起来,得到Voronoi多边形。
为了能更好地理解该算法,下面图解说明3个点的点集的Deluanay三角划分:
数据结构:
三角形列表TriangleList
三角形列表TempTriangleList
Deluanay三角剖分与Voronoi图
Deluanay三角剖分与Voronoi图

Deluanay三角剖分与Voronoi图
Deluanay三角剖分与Voronoi图
Deluanay三角剖分与Voronoi图
四、细节讨论
1、怎么构造超级三角形?
本文构造的是等边三角形。
2、已知三角形的3个顶点,怎么求该三角形的外接圆?

Deluanay三角剖分与Voronoi图
五、三维空间点集的Deluanay四面体划分
之前所述的是平面点集的Deluanay三角划分,现在把它扩展到三维的情况。算法几乎是一样的:
1、对点集进行排序。按照点集的坐标x分量由小到大进行排序。
2、构造一个超级四面体(本文构造的是正四面体)。点集内的所有点都在该超级四面体内。
3、逐点插入。
4、删除超级四面体。
5、对于点集中的每个点,获取共享该点的所有四面体的的棱。对于每条棱,将共享该棱的所有四面体外接球球心逆时针或顺时针连接起来,得到Voronoi多面体的一个面。最后将所有面组合起来得到Voronoi多面体。
还有一个细节要解决,那就是:
已知三维空间四面体的4个顶点,如何求它的外接球?

Deluanay三角剖分与Voronoi图
六、实验结果

Deluanay三角剖分与Voronoi图

我的更多文章

下载客户端阅读体验更佳

APP专享