2三角剖分算法介绍
上下扫描线的delaunay三角剖分算法

上下扫描线的delaunay三角剖分算法Delaunay三角剖分是一种广泛应用于计算几何和数值分析的算法,它主要用于生成二维平面上的三角形网格。
Delaunay三角剖分具有很多优良的性质,例如空外接圆性质和最小角最大性质等。
上下扫描线的Delaunay三角剖分算法是一种高效的Delaunay三角剖分算法,其基本思想是利用扫描线从上到下或从下到上扫描整个区域,并在扫描过程中对点进行插入和删除操作,从而生成Delaunay三角剖分。
具体步骤如下:
1. 将所有点按照y坐标从大到小排序。
2. 从上到下扫描整个区域,对于每个扫描到的点,将其插入到Delaunay三角剖分中。
具体做法是:找到该点的最近点,然后删除该点,并将该点和最近点之间的线段加入到Delaunay三角剖分中。
3. 重复步骤2,直到扫描完所有点。
该算法的时间复杂度为O(nlogn),其中n为点的数量。
这是因为需要将所有点排序,并且每次插入一个点都需要在已排序的点中进行二分查找。
需要注意的是,该算法只能处理凸多边形的边界,如果存在凹多边形或自相交的情况,需要使用其他算法进行处理。
三维空间 delaunay三角剖分的分治算法

三维空间 delaunay三角剖分的分治算法
三维空间的Delaunay三角剖分可以使用分治算法来实现。
分
治算法是一种将问题分解成更小的子问题来解决的算法思想。
以下是三维空间Delaunay三角剖分的分治算法的基本步骤:
1. 将输入的点集P按照x坐标进行排序,得到有序点集P_x。
2. 对P_x进行分割,将点集分成两部分,左边部分为P_l,右
边部分为P_r。
3. 递归调用Delaunay三角剖分算法,分别对P_l和P_r进行处理。
这两个子问题可以分别在不同的处理器或线程上进行处理,从而加快算法的执行速度。
4. 将子问题的结果合并,得到整体的Delaunay三角剖分结果。
在递归调用Delaunay三角剖分算法时,同样的分治策略可以
应用到三维空间中。
对于每一个子问题,可以按照y坐标对点集进行排序,然后再递归地将子问题分割成更小的子问题。
当子问题中的点个数达到一个阈值时,可以使用其他的三维空间Delaunay三角剖分算法进行解决,如增量法或基于四面体的
方法。
通过使用分治算法,可以将大问题划分成许多小问题,并行地解决这些小问题,从而提高算法的执行效率。
同时,在三维空间中使用分治算法可以减少问题的复杂性,使得算法更易于实现和理解。
有限元分析中的二维Delaunay三角网格剖分

有限元分析中的二维Delaunay三角网格剖分摘要本文从有限元分析出发,引出三角网格剖分的概念。
随后着重介绍了二维平面点集的Delaunay三角剖分。
给出了一些重要的Delaunay三角形的定理和性质,也体现出了Delaunay三角剖分的优点。
接着重点分析了构造二维Delaunay三角形的空洞算法,并用程序完成了它。
最后又分析了算法中的不足,并给出论文改进的方法。
关键词:Delaunay三角形,V oronoi图,网格剖分III1 第一章绪论1.1网格剖分的背景有限元分析是数学的一个分支。
其思想是将复杂的问题简单化,然后进行处理。
处理办法是将整个研究对象分成一些有限的单元,然后对每个小单元做相应的处理,最后整合起来去逼近原来的整个对象。
所以我们可以看到,有限元分析中将单元剖分的越小,得到的近似值就会越逼近真实值。
但是往往我们需要处理的对象很复杂,需要的计算量也很大,人工很难完成。
在早起年代,这个问题也阻止了有限元分析的发展。
近年来,随着计算机的发展,带动了一些需要大量计算的科学领域的发展。
有限元分析就是其中一种,因为当计算机取代人力之后,其快速的计算能力作用愈发凸显,人们只需要控制相应的算法即可。
作为最常用的处理手段,被大大的发展了之后,有限元分析也被应用于诸多方面。
早期的有限元分析主要应用与航空航天和地质、地球物理方面,现在越来越多的在工程分析计算和计算流体力学中看见。
图 1.1图 1.2常见的有限元分析可以分为六大步骤:问题及求解域的定义、求解域的网格剖分、确定状态变量及控制方法、单元推导、总装求解和结果解释。
上述步骤又可被分为三大阶段:前置处理、计算求解和后置处理。
而在前置处理中网格剖分作为最重要又最复杂的一个步骤,其处理结果制约着有限元的最后逼近结果。
网格剖分有很多形式:二维的主要剖分形状有三角形、四边形,三维的有四面体、六面体。
在有限元分析中网格剖分有如下要求:1、节点合法性。
指每个单元的节点最多只能是其他单元的节点或边界点,而不能是内点。
自相交多边形的三角剖分-概述说明以及解释

自相交多边形的三角剖分-概述说明以及解释1.引言1.1 概述【概述】自相交多边形是指一个多边形内部的边与其他边相交或重叠的特殊情况。
与传统的凸多边形或凹多边形相比,自相交多边形具有更复杂的拓扑结构和几何特征。
在计算机图形学、计算几何和计算机辅助设计等领域,对于自相交多边形的处理一直是一个重要而具有挑战性的问题。
本文旨在探讨自相交多边形的三角剖分方法,即将自相交多边形分解为一系列三角形,以便于后续的计算和应用。
三角剖分是将一个多边形或多维几何体划分为若干个互不相交的三角形或四面体的过程,广泛应用于计算机图形学、有限元分析、三维建模等领域。
本文将首先介绍自相交多边形的定义及其与传统多边形的区别。
然后,我们将详细探讨三角剖分的概念及其在几何计算中的重要性。
接下来,我们会讨论自相交多边形的三角剖分方法,并对不同的算法进行比较和分析。
最后,我们将总结自相交多边形的三角剖分在实际应用中的意义,并展望未来的研究方向。
通过本文的阅读,读者将对自相交多边形的三角剖分有一个全面的了解,并能够应用相关算法解决类似问题。
本文的研究对于计算机图形学、计算几何和计算机辅助设计等领域的研究人员和从业者具有一定的参考价值。
1.2 文章结构文章结构部分的内容可以包括以下内容:本文主要分为三个部分:引言、正文和结论。
在引言部分,首先对文章的主题进行了概述,介绍了自相交多边形的三角剖分的主要内容。
然后,对整篇文章的结构进行了说明,明确了各个章节的主题和内容。
最后,介绍了本文的目的,即为了讨论自相交多边形的三角剖分的重要性和相关方法。
正文部分将详细介绍自相交多边形的定义以及三角剖分的概念。
首先,会给出自相交多边形的准确定义,并解释该定义的意义和应用。
然后,会介绍三角剖分的基本概念,包括如何将自相交多边形划分为一组不相交的三角形,以及如何选择合适的三角形进行剖分。
在结论部分,将强调自相交多边形的三角剖分的重要性,指出该方法对于解决自相交多边形相关问题的有效性和实用性。
多边形分解成三角形算法

多边形分解成三角形算法多边形分解成三角形是计算机图形学中的一个重要问题,它在计算机图形的渲染、物体建模和碰撞检测等领域中有着广泛的应用。
多边形是由边和顶点构成的一个几何图形,而三角形是最简单的多边形,因此将多边形分解成三角形可以简化问题的处理。
本文将介绍多边形分解成三角形的算法原理和实现方法。
一、算法原理将多边形分解成三角形的算法原理是基于三角剖分的思想。
三角剖分是将一个多边形分解成若干个不重叠的三角形的过程,使得这些三角形的顶点正好是多边形的顶点。
三角剖分有很多种算法,其中比较常用的有三角剖分法、Ear Clipping算法和Delaunay三角剖分算法等。
二、算法实现1. 三角剖分法三角剖分法是一种比较简单的多边形分解算法,它的基本思想是从多边形的一个顶点出发,依次连接相邻的顶点,将多边形分解成若干个三角形。
具体步骤如下:(1)选择一个顶点作为起始点,设为P0;(2)从起始点P0开始,依次连接相邻的顶点P1、P2、P3...,直到连接回起始点P0,形成一个三角形;(3)将连接的边删除,并将剩余的多边形再次进行上述步骤,直到所有的边都被删除。
2. Ear Clipping算法Ear Clipping算法是一种基于耳朵切割的多边形分解算法,它的基本思想是找到多边形中一个“耳朵”,将这个“耳朵”切割下来,形成一个三角形,并将切割后的多边形再次进行上述步骤,直到所有的边都被删除。
具体步骤如下:(1)找到多边形中一个不相邻的顶点V,使得以V为顶点的两条边构成的夹角小于180度;(2)判断顶点V是否是多边形的“耳朵”,即判断顶点V是否在多边形内部没有其他顶点;(3)如果顶点V是多边形的“耳朵”,则将顶点V与相邻的两个顶点连接起来,形成一个三角形,并将顶点V从多边形中删除;(4)将切割后的多边形再次进行上述步骤,直到所有的边都被删除。
3. Delaunay三角剖分算法Delaunay三角剖分算法是一种基于最大化最小角度的多边形分解算法,它的基本思想是将多边形中的顶点按照一定的规则进行排序,然后依次连接相邻的顶点,形成一个三角形,并确保生成的三角形的最小角度最大化。
平面点集的三角剖分-清华大学

平面点集的三角剖分1问题背景三角剖分是计算几何中的一类经典问题,我们研究的是这一问题的简化版本――平面点集的三角剖分。
所谓平面点集的三角剖分,是一种特殊的子区域划分――在这种划分中,如果在其中任意两个(没有直接相联的)顶点之间引入一条新的边,都将破坏其平面性。
换言之,对于平面上的一个点集P={p1, …, p n}, 令S为P的一个三角剖分,则任何不属于S的边,都必然与S中已经存在的某条边相交[1]。
按照这一定义,三角剖分的存在性是显而易见的。
我们的问题就是求出这样的一个三角剖分,并将其在图形界面上加以显示。
2算法及原理2.1三角剖分三角剖分的算法流程图如下:其中第四部分为算法的核心部分,采用分而治之的思想,将一个点集按照其X轴坐标,不断地分成左右两部分,如果X轴坐标相等,则按Y轴坐标分为上下两部分,如下图所示:注意:P1,P2点X轴坐标相等,是按照Y轴坐标进行划分。
直至只有两个点或三个点的基本类型的情况(任何大于一个点的点集都可以表示为两个点和三个点的组合),基本类型的表示图如下:基本类型一基本类型二其中,每一条单边都可以用一条DCEL记录表示,故在基本类型一中,有两条DCEL 记录,有类型二中,有六条DCEL记录。
在构造好了基本类型后,要对它们进行合并,即Merge算法,每次找到左半部分的最右方(当存在多个最右方点时,取最上)的点,右半部分的最左方(当存在多个最左方点时,取最下)的点,首先连接这两个点,如下图所示:并处理其中的DCEL记录,即:e1->twin=e2, e2->twin=e1, e3->next=e1, e5->pre=e2, e4->pre=e1, e6->next=e2.接着按照构造凸包时的合并算法一样,进行三角剖分,并处理DCEL结构,我们介绍其中的某个状态:红线为当前所需处理的直线,同样,加入这条线后,处理DCEL记录:e1->twin=e2, e2->twin=e1, e3->next=e1, e5->pre=e2, e4->pre=e1, e6->next=e2.逐条边地加入,直至所有的直线都加入,此时即完成了合并的程序,即Merge 算法。
算法设计与分析——凸多边形最优三角剖分(动态规划)

算法设计与分析——凸多边形最优三⾓剖分(动态规划)⼀、问题描述多边形是平⾯上⼀条分段线性的闭曲线。
也就是说,多边形是由⼀系列⾸尾相接的直线段组成的。
组成多边形的各直线段称为该多边形的边。
多边形相接两条边的连接点称为多边形的顶点。
若多边形的边之间除了连接顶点外没有别的公共点,则称该多边形为简单多边形。
⼀个简单多边形将平⾯分为3个部分:被包围在多边形内的所有点构成了多边形的内部;多边形本⾝构成多边形的边界;⽽平⾯上其余的点构成了多边形的外部。
这⾥给出凸多边形的定义:当⼀个简单多边形及其内部构成⼀个闭凸集时,称该简单多边形为凸多边形。
也就是说凸多边形边界上或内部的任意两点所连成的直线段上所有的点均在该凸多边形的内部或边界上。
与凸多边形对应的就是凹多边形。
通常,⽤多边形顶点的逆时针序列来表⽰⼀个凸多边形,即P={v0 ,v1 ,… ,v n-1}表⽰具有n条边v0v1,v1v2,… ,v n-1v n的⼀个凸多边形,其中,约定v0=v n。
若v i与v j是多边形上不相邻的两个顶点,则线段v i v j称为多边形的⼀条弦。
弦将多边形分割成凸的两个⼦多边形{v i ,v i+1 ,… ,v j}和{v j ,v j+1 ,… ,v i}。
多边形的三⾓剖分是⼀个将多边形分割成互不相交的三⾓形的弦的集合T。
图1是⼀个凸多边形的两个不同的三⾓剖分。
图1 ⼀个凸多边形的2个不同的三⾓剖分在凸多边形P的⼀个三⾓剖分T中,各弦互不相交,且弦数已达到最⼤,即P的任⼀不在T中的弦必与T中某⼀弦相交。
在⼀个有n个顶点的凸多边形的三⾓剖分中,恰好有n-3条弦和n-2个三⾓形。
凸多边形最优三⾓剖分的问题是:给定⼀个凸多边形P={v0 ,v1 ,… ,v n-1}以及定义在由多边形的边和弦组成的三⾓形上的权函数ω。
要求确定该凸多边形的⼀个三⾓剖分,使得该三⾓剖分对应的权即剖分中诸三⾓形上的权之和为最⼩。
可以定义三⾓形上各种各样的权函数ω。
二维三角剖分 求任意曲线所围成的面积、

一、概述二、二维三角剖分的概念1. 二维三角剖分的定义2. 二维三角剖分的作用三、求任意曲线所围成的面积的问题1. 求面积问题的背景与意义2. 传统方法的局限性四、二维三角剖分在求面积中的应用1. 二维三角剖分的基本原理2. 二维三角剖分在求面积中的具体步骤五、案例分析1. 案例一:利用二维三角剖分求多边形面积2. 案例二:利用二维三角剖分求曲线围成的面积六、结论七、参考文献---概述在数学和计算机科学领域中,二维三角剖分是一个重要的概念,它在各种应用中发挥着重要作用。
其中,求任意曲线所围成的面积是一个常见的问题,而二维三角剖分正是解决这一问题的重要方法之一。
本文将介绍二维三角剖分的概念及其在求面积问题中的应用。
二维三角剖分的概念1. 二维三角剖分的定义二维三角剖分是指将给定的二维空间中的点集按照一定规则连接成若干个三角形的过程。
这些三角形满足一定的条件,例如不存在自相交的情况,且能够覆盖全部的点集。
2. 二维三角剖分的作用二维三角剖分在计算机图形学、地理信息系统、有限元分析等领域有着广泛的应用。
它不仅可以帮助我们对空间进行离散化,还可以方便地进行各种计算。
求任意曲线所围成的面积的问题1. 求面积问题的背景与意义在实际应用中,我们经常会遇到需要计算任意曲线所围成的面积的情况,例如计算地图上不规则区域的面积、计算湖泊或岛屿的面积等。
而传统的计算方法往往比较复杂,需要利用数学公式或者数值积分的方法,计算过程繁琐且容易出错。
2. 传统方法的局限性传统的计算方法对于复杂曲线的面积计算往往难以准确进行。
特别是当曲线具有较大的曲率或者存在自相交等情况时,传统的方法就会显得力不从心。
二维三角剖分在求面积中的应用1. 二维三角剖分的基本原理二维三角剖分可以将任意曲线所围成的区域离散化为多个三角形,进而利用三角形的面积来逼近原曲线所围成的面积。
通过合理的剖分和面积计算方法,可以得到较为准确的结果。
2. 二维三角剖分在求面积中的具体步骤我们需要对给定的曲线进行二维三角剖分,得到若干个三角形。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2三角剖分算法介绍2.1Delaunay 三角剖分理论基础2.1.1VORONOI 图1908年,俄国数学家M.G . V oronoi 提出了V oronoi 图[1],它是计算几何学上非常重要的工具之一,被广泛应用于各个领域中。
V oronoi 图是由平面区域中连接两邻点的线段的中垂线所形成的区域。
它又叫Dirichlet 图或Thiessen 多边形[2]。
V oronoi 图是自然界中的宏观物体和微观物体以空间距离相互作用所形成的一种网格结构,应用的范围相当广泛,特别是在计算几何学领域的应用[3]。
V oronoi 图是一种关于平面或空间区域划分的基础数据结构。
100多年来,它被广泛应用在与几何信息相关的各个领域。
随着计算机科学技术的不断普及和发展,V oronoi 图的应用领域也在不断地扩大。
对于V oronoi 图的应用,以90年代以来的应用更为突出。
V oronoi 图的本质属性是由空间实体几何唯一确定的,不是通过其他方法强加上去的。
从V oronoi 图的数字几何角度来看,它是针对平面n 个离散点而言的,把平面分为若干区域,每一个区域包含一个点,该点所在的区域就是到该点距离最近的点的集合。
设p 1,p 2是平面上两点,L 是线段p 1p 2的中垂线,L 将平面分成两部分L L 和L R ,位于L L 内的点p l 具有特性:d(p l ,p 1)<d(p l ,p 2),其中d(p l ,p i )表示p l 与p i 之间的欧几里得距离,i=1,2。
这意味着,位于L L 内的点比平面上其他点更接近点p 1,换句话说,L L 内的点是比平面上其他店更接近于p 1的点的轨迹,记为V(p 1),如图2.1所示。
如果用H(p 1,p 2)表示半平面L L ,而L R =H(p 2,p 1),则有V(p 1)=H(p 1,p 2),V(p 2)=H(p 2,p 1)。
给定平面上n 个点的点集S ,S={p 1,p 2, …,p n }。
定义:V(p i )=(,)i j i j H p p即V(p i )表示比其他点更接近pi 的点的轨迹是n-1个半平面的交,它是一个不多于n-1条边的凸多边形区域,称为关于p i 的V oronoi 多边形或关于p i 的V oronoi 域 。
对于S 中的每个点都可以作一个V oronoi 多边形,这样的n 个V oronoi 多边形组成的图称为V oronoi 图。
V oronoi 多边形的每条边是S 中某两点的连线的垂直平分线,所有这样的两点连线构成一个图,称为V oronoi 图的直线对偶图。
如图2.2所示,虚线表示voronoi 图,实线表示其对偶图。
图2.1 平面中两离散点图2.2 V oronoi图V oronoi图有以下一些性质:性质1.n个点的点集S的V oronoi图至多有2n-5个顶点和3n-6条边。
性质2.每个V oronoi点点好是三条V oronoi边的交点。
性质3.V oronoi图的对偶图实际上时点集的一种那个三角剖分,该三角剖分就是Delaunay三角剖分[4]。
性质3实际上告诉我们可以用构造V oronoi图的方法来求平面点集的三角剖分,但实际上这种方法较少使用,因为算法的效率不好。
2.1.2Delaunay三角剖分的基本概念1、基本概念(1)域分割给定平面上的n个不相重的散乱数据点,对每个散乱数据点构造一个域,使该域内的任一点离此散乱点比离其他散乱点更近,这种域分割就是上节介绍的V oronoi图,也称Dirichlet域分割,由上节可知,域边界其实就是连接两个相邻散乱点的直线的垂直平分线。
(2)Delaunay三角化对平面上的散乱数据点进行域分割后,将具有公共域边界的散乱点对相连形成的三角剖分称为Delaunay三角剖分。
(3)优化对三角网格进行优化,就是要使三角网格整体上尽量均匀,避免出现狭长三角形,也就是获得Delaunay三角化。
2、三角剖分优化准则在三角剖分过程中,人们往往先用一种简单的方法构造散乱点的初始三角剖分,然后对其进行优化以获得Delaunay剖分。
优化的方法取决于所采用的优化准则,平面三角剖分最常用的优化准则有Thiessen区域准则、最小内角最大准则、圆准则。
Sibson证明了这三个准则的等价性,并指出符合这三个准则的三角剖分只有一个,即Delaunay三角剖分。
(1)最小内角最大准则对一个严格凸的四边形进行三角化时,有两种选择,最小内角最大准则就是要保证对角线两侧两个三角形中的最小内角为最大,如图2.3所示。
图2.3 对角线优化(2)圆准则严格凸四边形中的三个顶点确定一个圆,如果第四个顶点落在圆内,则将第四个顶底与其相对的顶点相连,否则将另外两个顶点相连,这个准则称为圆准则。
也就是说,符合圆准则的三角剖分中,任一三角形的外接圆内不应该包含其他点,如图2.4所示。
图2.4 空外接圆准则(3)局部优化局部优化是指对任意一个凸四边形的对角线,依据某种优化准则做交还测试后所得到的三角剖分。
(4)全局优化当三角形剖分T中每一条内边上的两个三角形所形成的凸四边形都满足局部优化标准时,称该三角剖分T满足全局优化。
(5)退化前面已经讲过Delaunay三角剖分满足圆准则,即任一三角形的外接圆内不能包含其他的点,如果规定三角剖分中任一三角形的外接圆内和外接圆上都不能有其余顶点,则称为标准的Delaunay三角剖分,在实际应用中,往往存在四点共圆的情况。
我们把四点或四点以上的散乱数据点共圆的情况称为退化,相应的三角剖分称为准Delaunay三角剖分。
3、二维任意区域内点集的Delaunay三角划分概念及基本定理将所有共边的V oronoi多边形的中心连接起来所形成的三角网称为Delaunay 三角剖分[5]。
在区域D内的点集V的三角划分(记为T(D,V))是指将V中的点用互不相交的直线段连接起来,使得域D内的每一个区域都是三角形,同时这些连线和三角形都在区域D内,包含在区域D内的边称为内边。
二维任意区域点集的Delaunay三角划分[5](简记为DATA)是指所有的内边都满足局部优化的T(D,V)。
4、基本定理下面的定理是闵卫东在文献[6]中提出来的,其证明参见文献[6]。
定理2.1:设B,P点在AC边的同侧,如果角APC小于角ABC,则三角形ABC 的外接圆内不包含点P,参见图2.5。
图2.5 三角形外接圆图2.6 局部优化边AB定理2.2:设AB边为三角形ABC和三角形ABE所共有,如果四边形ACBE的内角CBE≥180°或CAE≧180°,则AB边是局部优化的,见图2.6。
定理2.3:设三角形ABC是DATA(D,V)的一个三角形,P是V中的一点且不是ABC的三个顶点,如果线段PC在域D内且它与AB边有交点,则ABC的外接圆内部不包含点P。
定理2.4:(DATA的Circle准则)三角剖分T(D,V)是DATA(D,V)的充要条件是,对于T(D,V)的任何一个三角形ABC,V中的任何点P,如果它与A,B,C相连的线段PA,PB,PC都在域D内,则P不包含在三角形ABC 的外接圆内部。
定理 2.5:任何一个T(D,V)都可以通过有限次的局部优化操作将其转化为DATA(D,V)。
定理2.6:DATA(D,V)在所有的T(D,V)中平均形态比最大。
以上几个定理实际上作为Delaunay三角划分呢算法的理论依据在许多以Delaunay原理为基础的网格剖分算法中经常用到。
5、三角剖分时需要满足的几个约束条件在进行网格剖分过程中,生成三角形时,必须满足一下三个约束条件:1.三角形相互之间是不相交的,即两个三角形除端点外不应该有别的交点,此条件称为三角形相交约束。
2.三角形相互之间是互不包含的,即任意一个三角形不能完全包含其他的三角形,此条件称为三角形包含约束。
3.三角形全部落在区域之内,此条件称为三角形合法约束。
2.2Delaunay三角剖分算法介绍Delaunay三角剖分算法是最常用的一种平面点集的剖分算法,实际上,Delaunay三角剖分算法是基于Delaunay原理的一类三角剖分算法的总称。
总体来说,Delaunay三角剖分算法可分为以下几种。
2.2.1翻边算法1977年,Lawson基于最小内角最大优化准则提出了一种二维点集Delaunay三角剖分翻边算法[7]。
该算法的思想是:给定一个二维离散点集,首先对其进行一次初始三角剖分,然后根据最小内角最大化准则判断初始三角剖分中形成凸四边形的共边三角形是否满足优化准则;如果不满足,就交换四边形的两条对角线。
一次循环直到所偶的三角形都满足最小角最大优化准则为止。
通过计算可以得到,翻边算法的时间复杂度为O(n2)。
根据前面的理论分析知道,运用翻边算法扑粉出来的所有三角形边都是Delaunay三角剖分的边,那么最终得到的三角网格一定是Delaunay三角网格。
目前,二维的翻边算法发展比较完善,利用翻边法对二维离散点集进行Delaunay三角剖分原理比较简单、得到的网格质量也较好。
1989年,Barry Joe 基于空外接球准则提出了一种三维Delaunay三角剖分的翻面法[8]。
翻面法的原理跟翻边法的原理是一样的,只不过在三维空间利用翻面法会比较复杂,有待进一步研究。
2.2.2逐点插入算法随着Delaunay三角剖分的不断发展,大量剖分算法不断被提出来。
1981年,一种逐点插入算法被Bowyer和Watson提出来[9][10]。
该算法的基本思想是:首先构造点集的一个初始三角剖分,然后逐一地在当前三角剖分中插入一个新点;在插入过程中,要根据Delaunay三角剖分空外接圆住着呢进行三角网格优化,直到整个点集为空集为止。
该算法首先构造一个极大三角形,使得要剖分的点集中所有点都落在该三角形里面;其次,逐一地插入各个新点,每插入一个点,必须搜索位于外接圆内部的点的三角形;然后,将这些三角形从三角形队列中删除,可以形成多边形空腔;最后,将插入点和多边形空腔连接起来,构成若干个以插入点为共同顶点的新三角形。
定位新插入点的位置是逐点插入算法的一个关键步骤,直接关系到剖分网格的好坏和剖分速度的快慢。
由于包含插入点的三角形的外接圆位于插入点的附近区域,只要能够准确定位新插入点在当前三角剖分中的位置,便可快速检索到外接圆包围它的三角形。
基于定位插入点位置的重要性,现在大量改进的逐点插入算法主要都体现在定位新插入点的位置上。
由于逐点插入算法比较简单、易懂,可以将其推广到三维或者更高维空间的三角剖分。
唯一不足的就是该算法时间复杂度较高,很多专家学者在研究算法的时候也会将该因素重点考虑进去,从而设计出简单、高效的三角剖分算法。