voronoi图的和Delaunay三角剖分

2023-12-19 19:40
文章标签 剖分 三角 voronoi delaunay

本文主要是介绍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三角剖分的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/513465

相关文章

树链剖分 + 后缀数组 - E. Misha and LCP on Tree

E. Misha and LCP on Tree  Problem's Link   Mean:  给出一棵树,每个结点上有一个字母。每个询问给出两个路径,问这两个路径的串的最长公共前缀。 analyse: 做法:树链剖分+后缀数组. 记录每条链的串,正反都需要标记,组成一个长串. 然后记录每条链对应的串在大串中的位置,对大串求后缀数组,最后询问就是在一些链

【HDU】5029 Relief grain 树链剖分+离线标记法

传送门:【HDU】5029 Relief grain 题目分析:这题的方法太美妙了! 首先看到这是一颗树,那么很容易想到树链剖分。然后想到可以将查询排个序,然后每一种查询执行完以后更新每个点的最优值。但是这样进行的复杂度太高!尤其是当z给的没有一样的时候尤其如此。 那么我们是否可以找到更加高效的算法? 答案是肯定的! 先简化一下问题,如果这些操作是在线段上进行的,我们怎么求解?

【HDU】5221 Occupation【树链剖分】

传送门:【HDU】5221 Occupation 题目分析: 最直接的想法,用一棵树链剖分维护路径,一棵dfs序线段树维护子树。因为每次最多修改一个点,所以修改的时候我们暴力修改每个点就可以了。 my  code: my~~code: #pragma comment(linker, "/STACK:102400000,102400000")#include <stdio.h>#in

【HDU】5436 Transmigration tree【树链剖分+dp+rmq】

题目链接:【HDU】5436 Transmigration tree #pragma comment(linker, "/STACK:16777216")#include <stdio.h>#include <string.h>#include <vector>#include <algorithm>using namespace std ;typedef long long LL ;

【HDU】5566 Clarke and room【树链剖分+AC自动机】

题目链接:Clarke and room #include <bits/stdc++.h>using namespace std ;typedef long long LL ;#define ls ( o << 1 )#define lson ls , l , m#define rs ( o << 1 | 1 )#define rson rs , m + 1 , r#define rt

Open3D mesh 模型精细化处理--中点剖分

目录 一、概述 1.1原理 1.2实现步骤 二、代码实现 2.1关键函数 输入参数 输出参数 三、实现效果 3.1原始mesh 3.2精细化mesh Open3D点云算法汇总及实战案例汇总的目录地址: Open3D点云算法与点云深度学习案例汇总(长期更新)-CSDN博客 一、概述         在三维模型处理过程中,精细化处理(subdivision)是一个

SCDO完美解决了区块链的“不可能三角”,被看作是ETH2.0+BTC+波卡+Link的集大成者

在区块链领域,有一个理论颇为有名,被称之为“不可能三角理论”。何为“不可能三角”?指的是去中心化,可拓展性,安全性这三项关键性要求无法在一个项目中被同时满足。   比特币堪称是币圈鼻祖,在去“中心化“和“安全性”方面近乎做到了极致,但它的可扩展性却极低。而近几年大火的明星项目EOS,性能极佳,据传甚至可达到百万级别TPS,可为了这个优势,它不得不放弃和牺牲掉自身去中心化的程度。这也是EOS一

【三维重建】三角网格中轴骨架线提取

三维网格中轴线提取 方法介绍实现提取 三维网格中轴线提取是计算机图形学和三维建模领域中的一个重要技术,它对于理解三维形状的拓扑结构和几何特性具有重要意义。 方法介绍 以下是几种常见的三维网格中轴线提取方法: 基于距离变换的方法 基本原理:首先计算三维网格中每个点到网格边界的距离,形成距离场。然后,根据距离场的分布,通过细化算法提取中轴线。这种方法的核心在于距离变换和细化操作

Dominant Indices【模板】长链剖分

~~~~~      Dominant Indices ~~~~~      总题单链接 对比重链剖分和长链剖分 ~~~~~      什么是重链剖分:根据子树的大小将树拆成多条互不相交的链。 ~~~~~      什么是长链剖分:根据字数的深度将树拆成多条互不相交的链。 ~~~~~      重链剖分中的重儿子:子树大小最大的儿子。 ~~~~~      长链剖分中的重儿子:

三角螺旋阵

题目描述 方阵的主对角线之上称为“上三角”。 请你设计一个用于填充n阶方阵的上三角区域的程序。填充的规则是:使用1,2,3….的自然数列,从左上角开始,按照顺时针方向螺旋填充。 输入 程序运行时,从标准输入获得整数n(3~20) 输出 程序输出:方阵的上三角部分。 要求格式:每个数据宽度为4,右对齐。 样例输入 3 样例输出 1 2 36 45 #in