基于格网划分的Delaunay三角剖分算法研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
总第261期
2011年第7期
计算机与数字工程
Computer &Digital Engineering
Vol.39No.7
57
基于格网划分的Delaunay三角剖分算法研究*
李小丽 陈花竹
(河南大学软件学院 郑州 450000)
摘 要 为了提高海量数据的Delaunay三角网的构网速度,本文采用格网划分的三角剖分方法,首先将数据按照线性四叉树方式划分为若干格网块,构建块内子三角网,然后按照自下而上的合并方式对块进行合并,形成全局Delaunay三角网。
在此基础上,为了避免出现过小锐角的情况,通过加入约束角来对三角格网进行优化。
关键词 Delaunay;格网划分;约束角
中图分类号 TP301.6
Studyof Massive Data DelaunayTriangulation
Based on Grid Partition Method
Li Xiaoli Chen Huazhu
(Software College,Henan University,Zhengzhou 450000)
Abstract To raise the speed of the construction of Delaunay triangulation oriented massive data,this thesis uses thegrid partition method.At first,it divides the data into certain grid tiles by quadtree method,constructs sub Delaunay trian-gulation.Then,it merges two triangulations from bottom up to form the whole Delaunay triangulation.On the basis of that,to avoid producing too acute angles,we give a threshold angle to improve the angles of the triangulation.Key Words Delaunay,grid partition,threshold angle
Class Number TP301.6
1 引言
Delaunay三角网在地形拟合、三维建模、有限元分析等方面应用广泛。
并且它具有空外接圆、最小内角最大以及唯一性等重要性质,Delaunay三角网一直被公认为是优的三角剖分。
经过长期的研究,国内外出现了大量算法,主要归纳为三类:逐点插入算法、三角网生长算法和分治算法。
近年来随着Delaunay三角网在应用领域的不断拓展以及应用需求的不断深入,特别是对海量数据的管理和分析,已成为Delaunay三角剖分的一大研究热点,并出现了格网划分的的三角剖分思想[1]。
本文在点插入算法和分治算法的基础上,采用格网划分的思想,对海量数据进行分块管理和构建,希望获得
较高的算法效率。
并对加入了约束角的三角格网如何优化进行了分析。
2 基于格网划分的Delaunay三角剖分算法
随着科学技术的不断发展,海量数据的廉价获取已成为可能,而且目前人们在可视化方面的要求也越来越高,那么针对海量数据的管理和分析也越来越普遍。
但是普通计算机仍无法满足对海量数据处理的要求,即便是硬件配置较高的计算机,当数据量达到一定程度后仍无法正常处理。
怎么在普通计算机上进行海量数据的Delaunay三角网构建是一个亟待解决的问题[1]。
本文采用基于格网划分的海量数据Delaunay三角剖分算法,通过分
*收稿日期:2011年1月9日,修回日期:2011年2月17日
作者简介:李小丽,女,硕士研究生,助教,研究方向:地理信息系统。
陈花竹,女,硕士研究生,助教,研究方向:偏微分方程的图像处理。
58
李小丽等:基于格网划分的Delaunay三角剖分算法研究第39卷
块的方式来对海量数据进行管理[2~3]。
当在三角网中进行点的插入删除操作时,可以快速定位其所在的块并确定影响区域,
进而提高了构网速度,降低了对计算机硬件的要求较低,便于对三角网进行更新维护。
2.1 格网划分
首先计算区域内的最大点密度,根据此点密度,
确定正方形格网的行列宽,保证每个网格中点的数目在一定范围之内。
通过线性四叉树分割方式对区域进行格网划分,并对每块进行四叉树编码。
为了解决块内点数目不均的状况,当块内点数过小时,根据线性四叉树编码方式对块自下而上进行合并。
2.2 块内构建Delaunay三角网
在格网块内通过逐点插入算法构建Delaunay三角网,逐点插入算法的基本步骤是:1)定义一个包含所有数据点的初始凸多边形;2)对初始凸多边形通过环切边界法进行初始三角剖分,然后重复3)、4)步,直至所有数据点被处理完毕;3)插入新数据点P,首先找出所有其外接圆包含P点的三角形,并删除离P点最近的边,形成一个Delaunay空腔,然后连接点P与空腔的每一个顶点;4)以
LOP算法优化三角网[4]。
本文将块内的Delaunay
三角网的三角形分为如下四类:形状可能改变的三角形,
拓扑关系可能改变的三角形、第二类三角形的邻接三角形、除上述之外的三角形[
1]。
当块内Delaunay三角网构建完毕之后,将当前块的Delaunay三角网的结果存入空间数据库或其它数据文件,而仅将受邻接格网内的点影响的边界三角形及其邻近三角形驻入内存(第一类、二类、三类三角形)。
2.3 格网块Delaunay三角网合并
块内三角形构建完毕之后,按照四叉树编码的
逆序,自下而上的进行格网块间的合并[
3]。
对两Delaunay子三角网的合并首先找到两个子三角网合并的顶线和底线,从底线开始构建三角形,在此过程中伴随删除非Delaunay三角形,直到顶线结束。
由于位置的不同,相邻两Delaunay子三角网合并可分为左右和上下两种合并情况。
格网块Delaunay三角网合并的方式与上述Delaunay子三角网合并的方式相同,首先找出两Delaunay三角网合并的顶线与底线,然后从顶线
开始到底线结束,该过程伴随着非Delaunay三角Delaunay根据分析
可知当两块进行合并时,
第一类和第二类三角形将受到影响,第三类和第四类不会受到影响。
这两个格网块的并集形成一个新格网块,对该格网块重新选择其第一、二、三类三角形(只需把两个格网块相邻的三角形进行判断),把第三、四类三角形存入空间数据库或其它数据文件,
释放第四类三角形占用的内存,这样只有新格网块的第一、二、三类三角形驻入内存,为后续格网块的网合并做好准备。
按照线性四叉树编码,自下而上的方式进行两Delaunay三角网合并,重复上述步骤,直至所有格网块都处理完毕,再把驻入内存的三角形存入空间数据库或其它数据文件,释放内存,整个构网结束。
3 算法流程
在分块的过程中,为了提高分块的效率和便于合并,我们对块采用线性四叉树编码方式,并且使用自下而上的合并方式对块进行合并。
第一步:划分格网块
为了避免出现块内点数目过大的情况,我们首先找出区域内点的最大密度,
根据此密度,按照线性四叉树划分方式确定初始格网,并对每块进行编码。
在为每个点确定格网块时,记录每块内的点数。
然后根据块内点数情况,如果点数过小则按照自下而上的方式合并块。
第二步:块内建立子三角网[
5~6]
1
)建立初始凸多边形2
)采用环切法建立初始三角形网3)采用点插入法插入剩余点。
从而建立了子三角形网。
第三步:合并块
图1 两子网合并
现有两个凸壳HL、HR,寻找连接HL、HR的顶线和底线过程如下:找到HL
最右边的点X和
HR最左边的点Y,从连接X、Y点的线段XY开始,如果HR上Y的逆时针方向相邻点Z位于线段XY的下侧,则用Z替换Y,直到HR上的所有点都位于XY之上。
然后考察HL,如果HL上X的顺时针方向上相邻的点K位于XY的下侧,则用Z替换X,直到HL上的所有点都位于XY之上。
最终形成的线段ab就是连接HL、HR的底线。
同
2011年第7期
计算机与数字工程
59
理可以找到连接HL、HR两个凸壳的顶线cd[7]。
以连接HL、HR两个凸壳的底线开始,找到第三个点与底线组成Delaunay三角形。
然后以新生成的连接HL、HR两个子三角网的三角形的变作为新的底线,逐步向上推值到顶线结束。
4 优化
在完成了Delaunay的核心算法之后,我们需要对其进行优化。
当在已知点集中加入边界限制时,网格剖分时所需考虑的便不光是满足Delaunay
原则[8]
,还需要解决剖分三角形与边界交叉的情
况。
同时,初次剖分后有些三角形存在过于小的锐角,此时需要采取一定的措施来修正优化网格。
优化网格的方法有四种,
加入三角形的外接圆圆心[9]、离心点、汇点、位于Voronoi边而不在最短边
的平分线上的点,这四种作为点集的新点。
在这里
主要对角度进行优化[
10]。
4.1 一些原则和定义
1
)限定角由用户给定一个角度α,如果对初次剖分的三角形中的小于α的角度进行优化之后,所有角度值都大于等于给定的角度α,则α就是限定角。
2
)瘦三角形若某三角形含有一个度数小于α的锐角,则称该三角形为瘦三角形,此时需要对其进行优化处理使得其最小角大于α。
3)pq
线段的瓣接圆
图2 红色圆部分为pq的瓣接圆
如果一个圆通过点pq,并且半径为2sinα|pq|,其圆心位于pq的右侧,则该圆所占的区域为pq线段的瓣接圆,可以表示为petal(pq)。
在一个Delaunay三角网中,pq的瓣接圆必须包含另外一个点,否则的话Delaunay三角网中必存
在瘦三角形。
HarPeled和üngor证明,Delaunay三角网
中的三角形当且仅当每一个点对所在的瓣接圆中包含另外一个点时,三角形是好的三角形。
4
)四种点的介绍外接圆圆心点:三角形的外接圆圆心。
离心点:pq的垂直平分线与pq瓣接圆的交点。
如果该三角形pqr的外接圆的圆心位于pq瓣,
汇点:邻接锐角三角形的圆心。
位于Voronoi边上但不在pq边的垂直平分线上的点:该点是三角形pqr的非pq边的垂直平分线与pq瓣接圆的交点。
4.2 优化算法描述
优化算法主要用来对瘦三角形的角度进行优化,根据瘦三角形的特点通过定位算法,选择以上四种点之一,对三角形进行优化,最终使Delaunay三角网中的角度都大于等于α。
对于输入的Delaunay三角网,当存在瘦三角形pqr,并且pq是最短的边时,
插入一个点x∈petal(pq
),点X为以上四种点之一,并且此点离现有其它点最远。
根据实践结果,a的角度最大值为42°[1
0]。
5 结语
本文采用格网划分的方式对Delaunay三角网进行剖分和管理,
能够提高三角网的构网速度。
此外,
通过向三角网中加入点来对三角网中的角度进行优化。
优化算法中如何通过更有效的方式来选择点将是本文下一步研究的重点。
参考文献
[1
]胡金星,马照亭,吴焕萍.基于网格划分的海量数据Delaunay三角剖分[J].测绘学报,2004,33(2):163~167[2]徐青,常歌,杨力.基于自适应分块的TIN三角网建立
算法[J].中国图像图形学报,2000,5(6):461~465[3]蒋红斐.基于分治算法构建Delaunay三角网的研究
[J].计算机工程与应用,2003,39(16):81~83
[4]马智民,罗斌.Delaunay三角网构建D
EM整体优化算法.长安大学学报(自然科版)[J].2008,28(3):44~48[5]武晓波,王世新,肖春生.Delaunay三角网的生成算法
研究[J].测绘学报,1999,28(1):28~35
[6
]刘云,夏兴东,黄北生.基于分治算法与逐点插入法的Delaunay三角网建立算法的改进[J].现代测绘,2010,33(4
)[7]张宏,温永宁,刘爱利.地理信息系统算法基础[M].
第一版.北京:科学出版社,2006:149~154
[8]高晓沨,黄懿.2D-Delaunay三角网格的数据结构与遍
历[J].天津理工大学学报,2006(2
)[9]RUPPERT J.A new and simple alg
orithm for quality2-dimensional mesh generation[C]//Proc.ACMSIAM-Symp.on Disc.Alg
orithms,1993:83~92[10]Erten H,Ungor A.Triangulations with locally
opti-mal steiner points[J].Proceedings of the 5th Euro-graphics Symposium on Geometry Processing.Aire-la-Ville,Switzerland:Eurographics Association,2007:143~152。