不规则三角网(TIN)生成的算法

第五章 不规则三角网(TIN)生成的算法
  5.1.1递归生长法
递归生长算法的基本过程为如图5.1.1所示:
(a)形成第一个三角形  (b) 扩展生成第二个和第三个三角形
图5.1.1 递归生长法构建Delaunay三角网
(1)在所有数据中取任意一点1(一般从几何中心附近开始),查距离此点最近的点2,
相连后作为初始基线1-2;
(2)在初始基线右边应用Delaunay法则搜寻第三点3,形成第一个Delaunay三角形;
(3)并以此三角形的两条新边(2-3,3-1)作为新的初始基线;
(4)重复步骤(2)和(3)直至所有数据点处理完毕。
食品工业科技采编平台该算法主要的工作是在大量数据点中搜寻给定基线符合要求的邻域点。一种比较简单的搜索方法是通过计算三角形外接圆的圆心和半径来完成对邻域点的搜索。为减少搜索时间,还可以预先将数据按X或Y坐标分块并进行排序。使用外接圆的搜索方法限定了基线的待选邻域点,因而降低了用于搜寻Delaunay三角网的计算时间。如果引入约束线段,则在确定第三点时还要判断形成的三角形边是否与约束线段交叉。
5.1.2凸闭包收缩法
与递归生长法相反,凸闭包搜索法的基本思想是首先到包含数据区域的最小凸多边形,并从该多边形开始从外向里逐层形成三角形网络。平面点凸闭包的定义是包含这些平面点
的最小凸多边形。在凸闭包中,连接任意两点的线段必须完全位于多边形内。凸闭包是数据点的自然极限边界,相当于包围数据点的最短路径。显然,凸闭包是数据集标准Delaunay三角网的一部分。计算凸闭包算法步骤包括:
(1)搜寻分别对应x-y,x+y最大值及x-y,x+y最小值的各二个点。这些点为凸闭包的顶点,且总是位于数据集的四个角上,如图5.1.2(a)中的点7,9,12,6所示;
(2)将这些点以逆时针方向存储于循环链表中;
(3)对链表中的点I及其后续点J搜索线段IJ及其右边的所有点,计算对IJ有最大偏移量的点K作为IJ之间新的凸闭包顶点,如点11对边7-9。
(4)重复(2)-(3)直至不到新的顶点为止。
(a)初始边界7,9,12,6;(b)搜索凸闭包顶点11,5,4;(c)凸闭包
图5.1.2 凸闭包的计算(引自 Tsai,1993)
一旦提取出数据区域的凸闭包,就可以从其中的一条边开始逐层构建三角网,具体算法如下:
     
              (a)第一个三角形    (b)第一层三角形
图5.1.3 凸闭包收缩法形成三角网
(1)将凸多边形按逆时针顺序存入链表结构,左下角点附近的顶点排第一;
(2)选择第一个点作为起点,与其相邻点的连线作为第一条基边,如图5.1.3(a)我还缺少什么中的9-5;
(3)从数据点中寻与基边左最邻近的点8作为三角形的顶点。这样便形成了第一个Delaunay三角形;
(4)将起点9与顶点8的连线换作基边,重复讲诚信与善意的谎言(3) 即可形成第二个三角形;
(5)重复第(4)步,直到三角形的顶点为另一个边界点11。这样,借助于一个起点9 便形成了一层Delaunay三角形;
(6)水头损失适当修改边界点序列,依次选取前一层三角网的顶点作为新起点,重复前面的处理,便可建立起连续的一层一层的三角网。
该方法同样可以考虑约束线段。但随着数据点分布密度的不同,实际情况往往比较复杂。比如边界收缩后一个完整的区域可能会分解成若干个相互独立的子区域。当数据量较大时如何提高顶点选择的效率是该方法的关键。
5.2数据逐点插入法
5.1节介绍的三角网生长算法最大的问题是计算的时间复杂性,由于每个三角形的形成都涉
及所有待处理的点,且难于通过简单的分块或排序予以彻底解决。数据点越多,问题越突出。本节将要介绍的数据逐点插入法在很大程度上克服了数据选择问题。其具体算法如下(见图5.2.1):
(1)首先提取整个数据区域的最小外界矩形范围,并以此作为最简单的凸闭包。
(2)按一定规则将数据区域的矩形范围进行格网划分,为了取得比较理想的综合效率,可以限定每个格网单元平均拥有的数据点数。冗余设计
(3)根据数据点的(x,y)坐标建立分块索引的线性链表。
(4)剖分数据区域的凸闭包形成两个超三角形,所有的数据点都一定在这两个三角形范围内。
(5)按照(3)建立的数据链表顺序往(4)的三角形中插入数据点。首先到包含数据点的三角形,进而连接该点与三角形的三个顶点,简单剖分该三角形为三个新的三角形。
(6)根据Delaunay三角形的空圆特性,分别调整新生成的三个三角形及其相邻的三角形。
对相邻的三角形两两进行检测,如果其中一个三角形的外接圆中包含有另一个三角形除公共顶点外的第三个顶点,则交换公共边。
(7)重复(5)-(6)直至所有的数据点都被插入到三角网中。
(a)第一分块数据插入后 (b) 第二分块数据插入后 (c)全部三角形阿富汗将有新宪法
图5.2.1 逐点插入法构建Delaunay三角网
可见,由于步骤(3)的处理,保证相邻的数据点渐次插入,并通过搜寻加入点的影响三角网(Influence Triangulation),现存的三角网在局部范围内得到了动态更新。从而大大提高了寻包含数据点的三角形的效率。
5.3带约束条件的Delaunay三角网
当不相交的地形特征线、特殊的范围边界线等被作为预先定义的限制条件作用于TIN的生成当中时,必须考虑带约束条件的Delaunay三角网。最简单的处理方法是所谓的“加密法”,即通过加密约束线段上的数据点,将约束数据转换为普通数据,从而按标准Delaunay三角形剖分即可。尽管该方法加大了数据量并改变了原始数据集,但由于简单易行、稳定可靠,在许多情况下可以很好地满足需要。该方法唯一的问题在于如何恰当地确定特征线上加密数据点之间的距离,一般取平均数据点间距的一半或更小即可。以下内容主要介绍直接处理约束线段的算法。
5.3.1带约束条件的Delaunay三角网的定义
定义 1:给定一个d维欧基里德空间E和一个N点 mi 集 M。那么,关联的 Voronoi图 (又称 Thiessen多边形 )为覆盖E的一个凸多边形序列 (V(m1 ),V(m2 ),…,V(m N)),其中,V(mi)包括E中所有以M中的 mi 为最近点的点,即 V(mi)=p∈E∶ Vj,1≤j≤N,d(p,mi)≤ d(p,mj),d表示欧基里德距离。Voronoi图的几何对偶 (dual),即把点 mi 联结起来而得到的邻接格网称为M的Delaunay三角网。显然,Delaunay三角网的元素之并等于M的凸包之
内部。Delaunay三角网自然推广到输入数据不仅包括点集 M,还包括不相交叉的直线段集L。在计算几何里,这类问题称约束Delaunay三角网(Constrained Delaunay Triangles,简称 CDT)问题。对地形数据来说,L即地形特征线段集(朱庆,陈楚江,1998)。

本文发布于:2024-09-25 18:31:23,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/402658.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   三角形   顶点
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议