一种基于多波束测深数据的Delaunay三角网快速生成方法与流程

文档序号:15237851发布日期:2018-08-24 07:38阅读:322来源:国知局

本发明涉及是多数据波束测深的方法,具体涉及是一种基于多波束测深数据的delaunay三角网快速生成方法。



背景技术:

不规则三角网作为对二维平面域内任意离散点集构网的一种图形表现手段和分析工具,具有几何结构良好、数据结构简单的特点。和规则格网相比,不规则区域数据点分布适应能力更强,因此在地学、有限元分析等领域得到了广泛的应用。而应用的关键就在于搜索定位三角形和重构方法上,三角网因其构网的唯一性和合理性使得其被应用在构网的生成上。

随着三角剖分法的广泛应用,近几十年来该算法得到了广大学者的关注和研究,根据delaunay三角网构建过程的不同,把生成delaunay三角网的算法分为逐点插入法、三角网生长法和分治法。分治法通过将点集区域递归划分构建子网,而后进行子网合并生成最终的三角网,构网效率较高但是算法设计复杂且在递归过程中占用较多的内存。逐点插入算法主要在生成初始三角网的基础上,以逐点插入的形式构建三角网,具有算法实现简单,占用内存少的特点,但是随着三角网的增多判断插入点所在的三角形就会占据大量的时间,因此构网效率并不高。三角网生长算法主要是基于基边寻找第三点构建三角网的过程,和分治算法相比实现简单,不用进行大量子网的递归生成与合并,和逐点插入法相比有着同样的缺点就是算法的实现效率不高特别是在离散点较多的时候,需要花费大量的时间检索合适的第三点。

在delaunay三角网的构网过程中需要大量的影响域判定的计算,因此对判定过程的简化会使整个构网效率大大提高。

综上所述,为了提高构网作业的工作效率和保证构网的正确性,迫切需要开发一种改进的三角网逐点插入算法,以满足实际使用的需要。因此,这里根据多波束测深数据的特点采用的逐点插入算法考虑到搜索定位三角形和影响域判定的时间优化,以提高逐点插入算法构网的效率同时保证构网的正确性。



技术实现要素:

发明的目的在于提供一种基于多波束测深数据的delaunay三角网快速生成方法,已解决在delaunay三角网的构网过程中需要大量的影响域判定的计算,从而减少了判定时间,提高构网作业的工作效率和保证构网的正确性。

本发明一种基于多波束测深数据的delaunay三角网快速生成方法,根据多波束测深数据每一ping数据在一条直线上的特性,每一ping数据进行关联插入,并用正切值代替角度计算来判断三角网优化过程,算法具体实现过程步骤如下:

(1)建立超级三角形;建立一个超级三角形使得所有数据点都在该超级三角形内部遍历所有需要插入的点,找到xmin,xmax,ymin,ymax;即所有点都在这个矩形内部,所以超级三角形只需包含这个矩形即可;

(2)从所有数据点中取出一ping;采用传统方法在整个三角网中搜寻包含第一个点的三角形,即对所有三角形逐个进行检测;

(3)按照从里到外的顺序进行该点影响域的判断;从p所在的三角形开始,搜索该三角形的邻接三角形,并进行空外接圆检测;找到外接圆包含点p的所有三角形并删除这些三角形,形成一个包含p的多边形空腔,我们称之为delaunay空腔;然后连接p与delaunay腔的每一个顶点,形成新的delaunay三角网格,完成局部优化;

(4)沿着ping线的方向搜寻包含下一点的三角形;重复步骤(3),完成该点的局部三角网更新;

(5)重复步骤(4),直至这一ping数据点处理完毕;

(6)重复步骤(2)到步骤(5),直到所有数据处理完毕;

(7)待所有点都插入完毕后,将含有超级三角形顶点的三角形删除;

(8)对整体三角形网络进行凹凸边缘检测,将所有边缘凹角通过补三角方法变成凸角。

所述的步骤(3)所执行结构,按照从里到外的顺序进行该点影响域的判断,从p所在的三角形开始,搜索该三角形的邻接三角形,并进行空外接圆检测;找到外接圆包含点p的所有三角形并删除这些三角形,形成一个包含p的多边形空腔,称其为delaunay空腔;连接p与delaunay空腔的每一个顶点,形成新的delaunay三角网格。

所述的步骤(3)中通过对角正切值来计算判断该点的影响域采用的方法如下:

(3.1)当两个角都是锐角或都是钝角时即tanα*tanβ>0,只需要判断tanα的正负即可判断出α+β是否大于180°;

(3.2)当一个锐角一个钝角时即tanα*tanβ<0,取临界条件,即两角和等于180度情况,假设α为锐角,β为钝角,由正切角函数关系tanα+tanβ=0此时α+β=180°;又已知正切函数是单调递增的,所以tanα+tanβ<0此时α+β<180°或是tanα+tanβ>0此时α+β>180°;

(3.3)所以只需计算两个角的正切值即可判断出两角和是否大于180°,进而确定影响域。

所述的步骤(4)所执行结构,首先判断上一点所在的delaunay空腔中与ping线相交的边,具体方法如下:

(4.1)首先选取delaunay空腔相邻的两个顶点,进行边侧检验;

(4.2)然后判断若在ping线同一侧,则进行下一组检测;若在ping线两侧,判断该顶点与ping线的夹角,从而确定是与ping线相交还是与ping线的反向延长线相交,直到找到与ping线相交的边;

(4.3)最后找到与ping线相交的边后便可以沿着ping线方向顺序进行逐个检测,直到找到该点所在的三角形。

本发明的有益效果在于:

本发明一种基于多波束测深数据的delaunay三角网快速生成方法,根据多数据波束测深数据的特点,每一ping数据进行关联插入相比于传统的逐个检测的方法,大大缩短了寻找时间;在进行优化判断方面,创新性提出了用正切值代替角度计算来判断,节省了判断时间。

附图说明

图1本发明中的数据插入顺序流程图;

图2本发明中的三角形优化图;

图3本发明中的影响域判定过程耗时对比表;

图4本发明中的一点所在三角形判断顺序;

图5本发明中的一点所在三角形判断流程图。

具体实施方式

结合附图和实施例对本发明进一步说明。

本发明的目的在于提供一种三角网快速插入算法。经过对三角网逐点插入算法的研究,借鉴多种结构和思想的优点,结合多波束测深系统数据的特点,提出了本发明的方法,因为多波束测深系统的同一ping波束的数据点在一条直线上,取首末位置的两个点构成有向线段,记为ping线,将一ping的第一个点用传统的方法插入到已存在的三角网络中,在第一点的delaunay腔中,找到与ping线相交的边,对第二个点进行边侧检验,顺着ping线方向,直到找到第二点所在三角形,后面的点以此类推,直到ping线上所有点都插入到三角网络中。

三角形优化过程采用delaunay腔法,本发明通过利用对角的正切值计算代替求出对角角度实现插入点影响域判定的过程,减少了判定时间。

本发明采用逐点插入方式生成delaunay三角网的算法的步骤如下:

(1)建立初始三角网格。针对给定的点集v,找到一个包含该点集超级三角形r,称r为辅助窗口。

(2)逐点插入。假设目前已经有一个delaunay三角网格t,现在在它里面再插入一个点p,需要先找到点p所在的三角形。连接p点和p点所在三角形的三个顶点形成三个三角形,搜索该三角形的邻接三角形,并进行空外接圆检测。进行三角网络局部优化,形成新的delaunay三角网格。

(3)删除辅助窗口r重复步骤(2),当点集v中所有的点都已经插入到三角形网格中后,将顶点包含辅助窗口r的三角形全部删除。在以上步骤中,快速定位待插入点所在的三角形、影响域判定过程是每插入一个点都会进行的。随着点数的增加,三角形数目增加很快,因此缩短这两个过程的计算时间,是提高整个算法效率的关键。

对于定位待插入点所在的三角形的方法,在过去的几十年中人们进行了广泛的研究。最基本的方法就是对所有三角形逐个进行点在三角形中的检测。目前普遍采用的三角形快速定位方式是采用方向搜索技术的定位方法。方向搜索是从某一个首三角形开始,针对三角形的三条边,做点在直线边侧的检测,判断要定位点和当前三角形重心是否落在该边的同侧。若为同侧,则继续检查下一条边,若为异侧,则继续检查待测点和以该边为公共边的邻接三角形之间的关系;当给定点与三角形重心相对于三角形的3条边都位于同侧时,则搜索终止。

本发明采用的方法是根据多波束测深数据每一ping数据在一条直线上的特点,对每一ping数据(除第一点外)进行方向搜索,在检索时间上不会因为已存在的网络数据量庞大而出现变慢的情况。具体数据插入顺序结合图1所示。

对于三角形影响域判定,目前常用的方法有计算三角形外接圆圆心,通过距离比较的方法判定该点是否在三角形外接圆内。此外,比较常用的方法还有计算四点所围成的四边形的对角和,结合图2所示,当判断△lgf在不在h的影响域中时,只需确定∠lfg与∠lhg的和是否大于180°,当两角和大于180°时△lgf在h的影响域中,当两角和小于180°时△lgf不在h的影响域中。

本发明的具体实现步骤如下:

(1)建立超级三角形,建立一个超级三角形使得所有数据点都在该超级三角形内部遍历所有需要插入的点,找到xmin,xmax,ymin,ymax。即所有点都在这个矩形内部,所以超级三角形只需包含这个矩形即可;

(2)从所有数据点中取出一ping,采用传统方法在整个三角网中搜寻包含第一个点的三角形,即对所有三角形逐个进行检测;

(3)按照从里到外的顺序进行该点影响域的判断,从p所在的三角形开始,搜索该三角形的邻接三角形,并进行空外接圆检测。找到外接圆包含点p的所有三角形并删除这些三角形,形成一个包含p的多边形空腔,我们称之为delaunay空腔。然后连接p与delaunay腔的每一个顶点,形成新的delaunay三角网格;

本发明选用角度的正切值进行判断,正切值可以由角两边的向量积和数量积的商得到,计算过程中免去了反三角函数的计算。在简化了程序的同时,缩短了判定时间。结合图3所示为常见判定算法进行一次判定的时间的耗时对比表。

在程序中求一个角的度数算法复杂或查阅大量的表格。而通过角度转换为正切值来判定相对容易,锐角的正切值是正数,钝角的正切值是负数。当两个角都是锐角或都是钝角时tanα*tanβ>0,这是只需要判断tanα的正负即可判断出α+β是否大于180°当一个锐角一个钝角时tanα*tanβ<0,取临界条件,即两角和等于180度情况,假设α为锐角,β为钝角,由正切角函数关系tanα+tanβ=0此时α+β=180°又已知正切函数是单调递增的,所以tanα+tanβ<0此时α+β<180°或是tanα+tanβ>0此时α+β>180°。所以只需计算两个角的正切值即可判断出两角和是否大于180°。

(4)沿着ping线的方向搜寻包含下一点的三角形;结合图4所示,首先判断上一点所在的delaunay空腔中与ping线相交的边。具体方法是选取delaunay空腔相邻的两个顶点,进行边侧检验。若在同一侧,则进行下一组检测;若在ping线两侧,判断该顶点与ping线的夹角,从而确定是与ping线相交还是与ping线的反向延长线相交,直到找到与ping线相交的边,便可以沿着ping线方向按照△pa4a5、△a4a5b、△a4bc、△bcd、△bde的顺序进行逐个检测,直到找到该点所在的三角形。结合图5所示,本发明一点所在三角形判断流程图,重复步骤(3)完成影响域的确定及局部更新;

(5)重复步骤(4),直至这一ping数据点处理完毕;

(6)重复步骤(2)到步骤(5),直到所有数据处理完毕;

(7)待所有点都插入完毕后,将含有超级三角形顶点的三角形删除;

(8)对整个三角形网络进行凹凸边缘检测,将所有边缘凹角通过补三角的方法变成凸角。

本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1