本文主要是介绍voronoi图的和Delaunay三角剖分,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
看了几个关于voronoi图的和Delaunay三角剖分的介绍,按照自己的理解综合大家的想法。总结一下这两个的知识。
Voronoi图定义:
Voronoi图:计算几何里的一种基于距离的平面划分方法。在平面上有n个不重合种子点(节点),把平面分为n个区域,使得每个区域内的点到它所在区域的种子点(节点)的距离比到其它区域种子点(节点)的距离近。每个区域称为该种子点(节点)的Voronoi区域。Voronoi图是Delaunay三角剖分的对偶图。Voronoi图的每条边是由相邻种子点(节点)的垂直平分线构成,在边上的点到两个种子点(节点)的距离相等。
Voronoi图的数学定义:令 是平面域上的n 个离散点的集合一个完整的Voronoi图应该由多个Voronoi多边形组成,第 个Voronoi多边形的数学表达形式如下 式中, 表示平面域上的点 和节点 之间的欧式距离。从上式中可知,Voronoi多边形 内的任意点到节点 的距离比到点集P中的任何其他节点的距离更近,因此 是由节点 和每个相邻节点的垂直平分线所形成的开式半平面的交集组成,故 必为凸多边形。
Voronoi图的特点:
1. 点集将平面划分成n个多边形域,每个多边形域中只包含点集中的一个点(种子点即节点)。
2. Voronoi图的边是点集中某对点的中垂线的一个线段或者射线。
3. Voronoi图至多有2*n-5个顶点和3*n-6条边。
4. 每个Voronoi点恰好是三条Voronoi边的交点(假如任何四点都不共圆的话)。也就是说Voronoi点就是形成三边的三点的外界圆圆心,而且所有的这些外界圆有个特点:各自内部不含任何平面点集的点(空心圆)。
Voronoi图在计算几何里的实现一般是用双向循环链表维护Voronoi图的有向边;
Voronoi图和Delaunay三角剖分的对偶关系:Voronoi图的一个顶点同时属于三个Voronoi多边形,每个Voronoi多边形内有且仅有一个节点(种子点)。连接三个共点的Voronoi多边形分别对应的三个节点(种子点)则形成一个Delaunay三角形,所有这样的三角形的集合就是著名的Delaunay三角剖分如下图所示。
Delaunay三角剖分的定义:
定义1:假设V是二维实数域上的有限点集,边e是由点集中的点作为端点构成的封闭线段, E为e的集合。那么该点集V的一个三角剖分T=(V,E)是一个平面图G,该平面图满足条件:
1.除了端点,平面图中的边不包含点集中的任何点。
2.没有相交边。
3.平面图中所有的面都是三角面,且所有三角面的合集就是点集V的凸包。
定义2:Delaunay边:假设E中的一条边e(两个端点为a,b),e若满足下列条件,则称之为Delaunay边。存在一个圆经过a,b两点,圆内不含点集V中任何的点,这一特性又称空圆特性。
定义3:如果点集V的一个三角剖分T只包含Delaunay边,那么该三角剖分称为Delaunay三角剖分。
Delaunay三角剖分所具备的优良特性:
(1)最接近性:点集中最接近的两点必会形成一条Delaunay边。
(2)唯一性:不论剖分过程如何,最终都将得到一样的结果(超过三点共圆的退化情况除外)。
(3)局部最优性:任意两个相邻的三角形如果形成凸四边形,且对角线可以互换,那么两个三角形六个内角中最小的角度不会变大。
(4)最小角最大:如果将同一点集的所有三角剖分中的每个每个三角形的最小角进行升序排列,则Delaunay三角剖分的排列按字典序最大。
(5)变动的局部性:新增、删除、移动某一个点时只会影响附近的三角形。
(6)具有凸包:Delaunay三角剖分的边界形成一个凸包。
这篇关于voronoi图的和Delaunay三角剖分的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!