掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本发明涉及信息技术处理领域,具体地,涉及Delaunay三角网的构建方法。

背景技术

三角剖分是计算几何领域的重要研究内容之一,而其中三角剖分由于数据结构简单且冗余小、效率高的优点,以及最大化最小角和空外接圆的性质,在地理信息系统、数字高程插值、几何重构等领域有着广泛的应用。

Delaunay三角剖分现主要用的是直接剖分算法。直接三角剖分算法相比更加简便,内存占用少,更适合大量数据的三角网构建。对于直接Delaunay三角剖分算法,主要有三种:静态的三角网生长法和分治算法、动态的逐点插入法。其中逐点插入法相比其他算法占用内存小,效率高,对于大规模数据适应性高,其在很多领域有更广泛的应用。

点定位算法在路径规划等多种领域都是不可或缺的一种算法,在进行Delaunay三角剖分过程中也往往是关键性问题。因为Delaunay三角剖分算法使用逐点插入法,该算法会判断插入点与当前三角形的位置关系,不断搜索达到目标三角形,而随着点数的增加,点定位速度会受到很大影响。

通过对现有的插入点定位算法研究分析,发现有些算法没有对大量数据点进行预处理,整体定位效率不是很高;当插入点位于两边延长线交叉区域时,由于进行插入点定位要频繁地计算三角形的重心,造成了一定程度的时间消耗;有些算法搜索路径不唯一,有些算法虽然解决了路径不唯一的情况但不是最佳路径。

发明内容

针对现有技术中的缺陷,本发明的目的是提供一种Delaunay三角网的构建方法。

本发明提供一种Delaunay三角网的构建方法,包括:

步骤1:读取离散的二维数据;

步骤2:遍历所述离散的二维数据,将包含所有离散点的动态矩形包围盒作为凸壳,构建初始三角网;

步骤3:对所述离散点进行排序,删除重复的离散点;

步骤4:基于插入点混合定位算法,在排序后的离散点中轮流取点插入到所述初始三角网中,构建不断优化的三角网;

步骤5:在所有离散点插入完毕之后,删除与所述动态矩形包围盒顶点相关的三角形,得到目标Delaunay三角网。

可选地,所述步骤2包括:

遍历所述离散的二维数据,寻找到离散点中X轴坐标最大的点Xmax、X轴坐标最小的点Xmin、Y轴坐标最大的点Ymax、Y轴坐标最小的点Ymin;

根据Xmax、Xmin、Ymax和Ymin,来建立包含所有离散点的动态矩形包围盒;

基于所述动态矩形包围盒,构建初始三角网。

可选地,所述步骤3包括:

采用快速排序算法,将所述离散点按X坐标从小到大排序,其中,X坐标相同的离散点按Y坐标从小到大排序。

可选地,所述步骤4包括:

步骤4.1:基于插入点混合定位算法,在排序后的离散点中轮流取点插入到所述初始三角网中,并将插入的点与其所在目标三角形的顶点分别连接,得到新的三角网;

步骤4.2:以空外接圆准则为依据,判断共边三角形的外接圆内是否包含其他点;若包含其他点,则将对角线进行交换,以使得生成的新三角形为Delaunay三角形。

可选地,所述步骤4.2:

步骤4.2.1:通过插入点P的位置选取点P所在的三角网中的任一三角形,记为当前三角形Ts;

步骤4.2.2:通过三角形面积坐标法求得点P与当前三角形Ts的方位类别,若为γ类,则执行步骤4.2.3;若为β类,则执行步骤4.2.4;若为α类,则执行步骤4.2.5;

步骤4.2.3:若其中某一边的面积坐标为负,则以该边右侧的三角形Ti作为当前三角形Ts,识别点P与当前三角形Ts的位置,若P在当前三角形Ts内,则执行步骤4.2.5;若P不在当前三角形Ts内,则执行步骤4.2.2;

步骤4.2.4:先将当前三角形的顶点V

对有向线段V

将有向线段PiP进行第i+1次二分,得到中点P

对比三角形Ts和三角形Ts’是否为同一个三角形,若是同一个三角形,则执行步骤4.2.5;若不是同一个三角形,则继续朝着V

步骤4.2.5:找到插入点所在目标三角形,结束流程。

与现有技术相比,本发明具有如下的有益效果:

本发明提供的Delaunay三角网的构建方法,使用逐点插入法进行Delaunay三角剖分时的点定位优化,利用插入点定位算法来提升构网效率,针对混合定位算法中的直线行走法做出优化改进,提出了直线二分跳跃法,将其与三角形面积坐标算法结合形成改进后的插入点混合定位算法,可以明显提高插入点定位的效率,不易受到数据点的增加而影响效率,快速稳定将插入点定位到所在的目标三角形,大大提升构建Delaunay三角网的速度。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为本发明实施例提供的Delaunay三角网的构建方法的流程示意图;

图2为本发明实施例提供的初始凸壳的构造图;

图3(a)为本发明实施例提供的三角形面积坐标法关系示意图一;

图3(b)为本发明实施例提供的三角形面积坐标法关系示意图二;

图3(c)为本发明实施例提供的三角形面积坐标法关系示意图三;

图4为本发明实施例提供的插入点与三角形的位置关系示意图

图5为本发明实施例提供的直线二分跳跃法示意图;

图6为本发明实施例提供的空外接圆检测示意图。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

针对现有技术中存在的上述的问题,本发明提出一种改进的插入点混合定位算法在Delaunay三角网上的快速生成方法。对基于逐点插入算法进行Delaunay三角剖分过程中的几个关键环节进行了改进和优化,首先建立动态矩形包围盒作为凸壳,然后利用改进的插入点混合定位算法实现插入点的快速定位,同时利用简化后的空外接圆检测进行优化,最终输出一张完整的三角网。通过以上改进和优化,提高了逐点插入算法的执行效率,使得Delaunay三角网的剖分更加稳定高效。具体地实现方法包括如下步骤:

步骤S101、读取离散的二维数据。

具体地,离散点数据结构,采用链表形式,用于存储离散点的坐标,在基于逐点插入算法进行Delaunay三角剖分中以点和三角形的拓扑关系为基本的数据结构。三角网数据结构,采用链表形式,其中包含了三角形的编号及顶点编号。

步骤S102、初始凸壳的构造,遍历所有离散点数据,根据离散点数据中X和Y坐标的最大值和最小值,求得矩形包围盒的Xmax、Xmin、Ymax和Ymin,来建立矩形包围盒。

具体地,首先构造初始矩形凸壳。遍历所有离散点数据,根据离散点数据中X和Y坐标的最大值和最小值,求得矩形包围盒的Xmax、Xmin、Ymax和Ymin。对Xmin、Xmax、Ymin和Ymax做了如下处理:Xmin=Xmin-K,Ymin=Ymin-K,Xmax=Xmax+K,Ymax=Ymax+K,其中,K为任意正的位移值,一般值很小。分别用四个新求得的极值构建以P

步骤S103、离散点插入顺序。将离散点按均匀分布原则进行排序,采取格网轮流取点插入的方法。

本实施例中,先将所有的离散点数据利用快速排序法进行排序,轮流取点插入到三角网中,这样算法的运行效率可以得到有效地提高。

步骤S104、生成Delaunay三角网。利用改进的插入点混合定位算法,主要结合三角形面积坐标法和直线二分跳跃法。需要轮流取点插入到当前的三角网中,将插入点与其所在目标三角形的顶点分别相连,形成新三角形。

示例性的,步骤S104可以包括如下步骤:

步骤S1041:通过插入点P的位置选取点P所在的三角网中的任一三角形,记为当前三角形Ts;

步骤S1042:通过三角形面积坐标法求得点P与当前三角形Ts的方位类别,若为γ类,则并执行步骤S1043;若为β类,则执行步骤S1044;若为α类,则执行步骤S1045;

步骤S1043:若其中某一边的面积坐标为负,则以该边右侧的三角形Ti作为当前三角形Ts,识别点P与当前三角形Ts的位置,若P在当前三角形Ts内,则执行步骤S1045;若P不在当前三角形Ts内,则执行步骤S1042。

步骤S1044:先将当前三角形的顶点V

对有向线段V

将有向线段PiP进行第i+1次二分,得到中点P

对比三角形Ts和三角形Ts’是否为同一个三角形,若是同一个三角形,则执行步骤S1045;若不是同一个三角形,则继续朝着V

步骤S1045:找到插入点所在目标三角形,结束流程。

具体地,如图5所示,先随机选取一个初始三角形T

进一步地,在步骤S104中的三角形面积坐标法按如下方法进行:如图3(a)、图3(b)、图3(c)所示,设点A(x

S

S

S

依据由S

(1)若S

(2)若S

(3)若S

(4)若S

(5)若S

从定位角度考虑,本发明将以上几种情况分为三类,如图3(a)、图3(b)、图3(c)、图4所示:α类插入点位于三角形的内部、边上和顶点;β类插入点位于三角形对应某两条边延长线的交叉区域;γ类插入点位于三角形对应某条边外侧。

进一步地,在步骤S104中的直线二分跳跃法按如下方法进行:

首次提出直线二分跳跃法,该算法主要是针对直线行走法的改进,原理如下:参照直线先随机选取一个首三角形,然后随机选取首三角形的一个顶点V与插入点P进行连线,并将连线作为方向线行走,接着找出连线的中点为第一个中点,并将包含该中点且与方向线相交的三角形定为先前三角形Ts’,接着将该中点和P连线定为当前方向线,找出该中点和P的中点作为第二个中点,并将包含该中点且与当前方向线有交点的三角形定为当前三角形Ts,如果该Ts’和Ts为同一个三角形,则判断求出点P在Ts的内外侧,在Ts内部该三角形即为目标三角形,否则将该Ts定为先前三角形Ts’继续该步骤找下一个中点和对应三角形并判断,直到找到目标三角形。

步骤S105、LOP优化Delauany三角网。利用逐点插入算法进行Delaunay三角剖分的过程中,一旦有新的三角形生成,就必须检测新生成的三角形与其相邻三角形所组成的凸四边形是否满足Delaunay空外接圆检测。如果不满足,则需要交换相邻三角形所组成的凸四边形的对角线,对角线互相交换后,则继续向相邻三角形扩展该过程,直至满足空外接圆检测或到达三角形边界,完成LOP优化。

具体地,以空外接圆检测为依据:运用向量的点积,通过计算共边相邻三角形的对顶角,判断对顶角的余弦值之和是否等于0来简化空外接圆检测算法。公式如下:

式中,x

步骤S106、重复上述步骤S104、步骤S105,直到所有的离散点插入完毕。

步骤S107、当所有的离散点插入完毕后,删除与动态矩形包围盒顶点相关的三角形,生成最终的Delaunay三角网。

本实施例中的方法首先通过创建动态矩形包围盒作为初始凸壳;在进行Delaunay三角剖分时,引入改进的插入点混合定位算法,通过将三角形面积坐标算法与直线二分跳跃法相结合来实现目标三角形的快速定位;后运用简化后的空外接圆检测进行优化。实验证明,改进后的算法在剖分速度上有了较大提高,同时使得Delaunay三角网的剖分更加高效。实验结果表明该算法具有正确性、高效性和稳定性,同时提高了插入点的定位速度,并解决了搜索路径不唯一情况且缩短了插入点的搜索路径。

本发明还提供一种Delaunay三角网的构建系统。需要说明的是,本发明提供的所述Delaunay三角网的构建方法中的步骤,可以利用Delaunay三角网的构建系统中对应的模块、装置、单元等予以实现,本领域技术人员可以参照所述系统的技术方案实现所述方法的步骤流程,即,所述系统中的实施例可理解为实现所述方法的优选例,在此不予赘述。

本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

相关技术
  • Delaunay三角网的构建方法
  • 基于双重空间数据组织的海量点云Delaunay三角网构建方法
技术分类

06120112500315