一种改进的用于三维一种改进的用于三维DT剖分的三角网生长算法剖分的三角网生长算法
三角网生长法具有独特的优势,但将其扩展到三维的研究远远少于逐点插入法、分治法以及二者的合成算法,
研究扩展三角网生长法实现三维DT剖分的算法。引入k近邻思想优化了原始算法,时间复杂度可达
O(NlogN),且改进对二维、三维算法都有效。通过AE二次开发完成了数据操作、算法实现和二维、三维显示
等功能,后续能够较方便地添加和扩展ArcGIS相关功能以及其他数据挖掘算法模块。用两组6个点集数据进行实
验分析,网格构建时间对比验证了算法性能。
摘摘 要要:
关键词关键词: 三维DT剖分;三角网生长法;k近邻思想;AE
空间剖分是实现空间索引与邻近查找的重要途径,与映射法、四叉树/八叉树法以及推进波前法(Advancing Front
Technique)等针对离散点集实现的其他剖分方法相比,狄洛尼三角化DT(Delaunay Triangulation)剖分[1]具有数据结构简
单、描述能力强大、唯一的、兼具全局和局部最优等特性,因而被广泛运用于地学、计算机图形学和地理信息系统等领域。
DT剖分算法方面,目前国内外研究集中在逐点插入法改进、分治法与逐点插入法集成以及分布并行处理等方面[2]。逐点
插入法改进一般从初始三角形构建、点定位和局部优化3个方面入手,其中局部优化是决定算法效率的关键,数据量大时优化
过程极为耗时。分割合并思想是分治法的核心,子网构建可以采用任意算法(包括逐点插入法与生长法)实现[3]。分布并行
处理相当于省去了分治法中向下递归的分割步骤[4],在海量数据场合更具优势[4-6]。
但生长法思路简单、算法设计容易实现、构网精度高、占内存小,生长过程直接生成Delaunay三角形,无需分割、合
并、点定位、局部优化等前期和后续操作。近年来,由于其在点集较小时也有较好性能,分布并行方式和分治法结合生长法的
研究也开始出现[6-7]。随着计算机硬件性能的改善以及分布并行处理方面的进步,算法设计在时空复杂度方面的约束越来越
小,但对生长法原始算法改进点搜索策略[8]以极大提高算法效率也是必要的。
相比二维DT剖分已有大量成熟的研究和应用成果,三维DT剖分仍在发展之中,但由于四面体网格具有很多优秀特性,已
经引起许多领域的重视[9-10]。现有文献中的研究成果表明,虽然通过扩展3种经典的二维DT剖分算法都可以完成该任务,但
在三维情况下集成分治法和逐点插入法、实现二者优势互补的难度远远高于二维情况,而生长法(空间复杂度优于分治法,时
间复杂度在一般情况下与逐点插入法持平)思路简单、容易实现的优势更加明显。现有文献中对此研究较少,但采用生长法实
现三维DT剖分是合理的选择。
本文将针对二维离散点集提出的生长法扩展到三维,通过优化改进提高其效率,并在AE(ArcGIS Engine)开发环境中实
现。
1 算法设计算法设计
1.1 算法基础
不同于二维DT剖分得到二维Delaunay三角形网格D-TIN(Delaunay Triangulation Irregular Network),三维DT剖分得到
的是三维Delaunay四面体网格D-TEN(Delaunay Tetrahedron Network),它能保存原始数据,有精确表示目标和复杂空间
拓扑关系的能力,已有一些基于 D-TIN的邻近研究[11],这方面的应用潜力还很大。 D-TEN是三维表达的工具,与之对应的
算法设计与实现是三维数据处理分析需要解决的重要问题。D-TIN的网格单元三角形由点-线-面的结构构成,D-TEN的网格单
元四面体由点-线-面-体的结构构成,其数据结构和数据模型是设计二维、三维DT剖分算法的基础。
DT剖分算法的核心内容和关键步骤是Delaunay准则的运用,二维DT剖分算法的Delaunay准则包括“空圆准则”与“最大最
小角准则”由二维扩展到三维,就得到三维DT剖分算法的“空球准则”(D-TEN中任一四面体的外接球内无其他点)与“最大最小
立体角准则”(重置D-TEN中任何两个相邻四面体的公共面,最小立体角不会增大)。
需要注意两点:若不存在4点共圆和5点共球的情况,则点集DT剖分唯一[12];二维情况下,“空圆准则”与“最大最小角准
则”等价[13],但三维情况下,“空球准则”和“最大最小立体角准则”不等价[14],由于“空球准则”的实现难度较小,目前实际应用
中多被采用。
1.2 算法思路
生长法构建D-TEN的思路与构建D-TIN类似。参考二维情况是先构建一个起始三角形作为种子,然后以它的边为基准向外
生长;所以三维情况则是先构建一个起始四面体作为种子,然后以它的面为基准向外生长。
具体步骤为:(1)将点集中距离最近的两点连线作为基线,根据空圆法则搜索第三点,连线成三角形作为基准面;
(2)根据空球法则,在基准面的外侧(基准面的顶点按逆时针顺序排列,并把面的法向指向定为面的外侧)找寻第4点来构
建四面体,并且使构成四面体4个面的三角形的顶点,从四面体外向里看时总是按逆时针顺序排列,即面的法向都朝外(和基
准面重合的面法向恰好和基准面反转);(3)以四面体的3个新面(除基准面外)作为新的基准面。重复步骤(2)、(3)
直至所有的点连线完毕。
1.3 优化改进
生长法最重要也是最耗时的环节在于以基准线(面)根据空圆(球)准则找寻第3(4)点的过程,原始算法需要遍历点
集中所有点,效率很低。1.2节的算法步骤中通过顶点逆时针排序定出线(面)的方向性,据此限定在基准线的右侧(基准面
的外侧)搜索点,一定程度上减少了需要遍历的点数,提高了算法效率,但还可以进一步改进。