三角剖分
三角剖分定义
定义:三角剖分:假设V是二维实数域上的有限点集,边e是由点集中的点作为端点构成的封闭线段,E为e的集合。那么该点集V的一个三角剖分T=(V,E)是一个平面图G,该平面图满足条件:
1.除了端点,平面图中的边不包含点集中的任何点。
2.没有相交边。
3.平面图中所有的面都是三角面,且所有三角面的合集是散点集V的凸包。
Delaunay边:
存在一条边e属于E,且经过该边的两个端点a,b有一个圆,园内(注意是圆内,圆上最多三点共圆)不含点集V中任何其它的点,这样的边称为Delaunay边。
Delaunay三角剖分:
如果点集V的一个三角剖分T只包含Delaunay边,那么该三角剖分称为Delaunay三角剖分。
Delaunay三角剖分的准则:
1、空圆特性:Delaunay三角网是唯一的(任意四点不能共圆),在Delaunay三角形网中任一三角形的外接圆范围内不会有其它点存在。
2、最大化最小角特性:在散点集可能形成的三角剖分中,Delaunay三角剖分所形成的三角形的最小角最大。具体的说是指在两个相邻的三角形构成凸四边形的对角线,在相互交换后,六个内角的最小角不再增大。
Delaunay三角剖分的特性
1.最接近:以最近临的三点形成三角形,且各线段(三角形的边)皆不相交。
2.唯一性:不论从区域何处开始构建,最终都将得到一致的结果。
3.最优性:任意两个相邻三角形形成的凸四边形的对角线如果可以互换的话,那么两个三角形六个内角中最小的角度不会变大。
4.最规则:如果将三角网中的每个三角形的最小角进行升序排列,则Delaunay三角网的排列得到的数值最大。
5.区域性:新增、删除、移动某一个顶点时只会影响临近的三角形。
6.具有凸多边形的外壳:三角网最外层的边界形成一个凸多边形的外壳。
局部最优化处理:
理论上为了构造Delaunay三角网一般三角网经过LOP(LocalOptimizationProcedure)处理,即可确保成为Delaunay三角网。
其基本做法如下:
1.将两个具有共同边的三角形合成一个多边形。
2.以最大空圆准则作检查,看其第四个顶点是否在三角形的外接圆之内。
3.如果在,修正对角线即将对角线对调,即完成局部优化过程的处理。
Delaunay剖分的算法
——Lawson算法
Lawson算法
原理:首先建立一个大的三角形或多边形,把所有数据点包围起来,向其中插入一点,该点与包含它的三角形三个顶点相连,形成三个新的三角形,然后逐个对它们进行空外接圆检测,同时用LOP进行优化,来保证所形成的三角网为Delaunay三角网。
优点:理论严密、唯一性好,网格满足空圆特性,较为理想。由其逐点插入的构网过程可知,遇到非Delaunay边时,通过删除调整,可以构造形成新的Delaunay边。
缺点:在实际应用当中,这种构网算法当点集较大时构网速度也较慢,如果点集范围是非凸区域或者存在内环,则会产生非法三角形。
Lawson算法的基本步骤是:
1、构造一个超级三角形,包含所有散点,放入三角形链表。
2、将点集中的散点依次插入,在三角形链表中找出其外接圆包含插入点的三角形(称为该点的影响三角形),删除影响三角形的公共边,将插入点同影响三角形的全部顶点连接起来,从而完成一个点在Delaunay三角形链表中的插入。
3、根据优化准则对局部新形成的三角形进行优化。将形成的三角形放入Delaunay三角形链表。
4、循环执行上述第2步,直到所有散点插入完毕。
分享到:
相关推荐
点集的三角剖分(Triangulation),对数值分析(比如有限元分析)以及图形学来说,都是极为重要的一项预处理技术。尤其是Delaunay三角剖分,由于其独特性,关于点集的很多种几何图都和Delaunay三角剖分相关,如...
Delaunay三角剖分算法 1. 三角剖分与Delaunay剖分的定义 如何把一个散点集合剖分成不均匀的三角形网格,这就是散点集的三角剖分问题,散点集的三角剖分,对数值分析以及图形学来说,都是极为重要的一项预处理技术。 ...
多边形三角剖分是计算几何( Computational Geometry)中的经典问题,起源于一个有趣的艺术画廊问题。目前有很多不同的算法实现了对多边形的三角剖分,三角化算法所追求的目标主要有两个:形状匀称和计算速度快。 此...
java 实现三角剖分 有界面 ,并绘制出剖分图形
问题描述:描述了凸多边形最优三角剖分的问题背景 使用C++,实现了凸多边形最优三角剖分,有足够的注释 内含可执行程序
找了半天国内网站上都没找到好用的,好不容易从国外的网站上下载到的..带示例数据和源码 delaunay三角剖分
为提高带特征线约束的Delaunay三角剖分的速度和效率从两个方面进行改进一是生成无约束的Delaunay三角网时采用并行剖 分算法二是在约束线上插入点时应用取三角形外接圆与特征线交点的方法并行剖分算法具有较好的加速...
离散点生成三角网络的一个经典算法 算法原理:分为三步: 一、凸包生成:二、环切边界法凸包三角剖分三、离散的内插:
计算机算法设计与分析 凸多边形最优三角剖分
根据Delaunay 三角剖分唯一、最优的特点, 详细阐述了Delaunay 三角剖分应用于特定的任意多边形轮 廓的实现算法, 介绍了相关的轮廓预处理技术, 并对本算法提出了两点改进, 给出了该三角剖分的应用实例
MFC编写的三角剖分算法演示,随机输入多个平面点集,输出三角剖分平面图
用python3.6实现delaunay三角剖分算法,读入存有坐标的csv文件,计算出结果用Tkinter库显示。
# ------Delaunay三角剖分,绘制Voronoi维诺图------------------------------------- # 输入:rgb人脸image、landmark坐标 (68, 2) # 输出:delaunay_image、Voronoi_image # 第1部分: 读取人脸landmark # ...
三角剖分 需要有一个txt格式的点作为输入,然后就可以打开保存点的文件
基于Matlab三维数据点三角剖分方法研究.pdf
基于python语言的Delaunay三角剖分算法实现
Delaunay三角剖分逐点插入算法实现
UVA1131 最优三角形剖分 最优三角剖分的一类题目都是差不多的。给你一个多边形,让你把它分割成若干个三角形,求三角形某最优解,比如UVA1331要求面积最大的三角形的面积最小。
如何将一个多边形三角化是三维模型中一个比较常见的问题。最初的想法很简单,认为就是以一个点起点连接和它不相邻的点所有三角形就区分完了。这样写完后放到ue4里面测试,开始比较顺利,当但遇到凹多边形时,就发现...
利用开源的opencv库实现三角剖分