Voronoi 图与 Delaunay 三角剖分
Voronoi 图和Delaunay 三角剖分是计算几何中的两个互补的概念,它们被广泛应用于三维建模、地理信息系统、计算机图形学等领域。两者有着紧密的联系,Delaunay 三角剖分是 Voronoi 图的对偶(dual)结构。
1. Voronoi 图
Voronoi 图是一种空间划分方法,用于将平面或空间根据一组点分成若干个区域,每个区域都由一个特定的点控制。这些点称为生成点或控制点。
定义:
给定一组生成点 P={p1,p2,…,pn}P = {p_1, p_2, \dots, p_n}P={p1,p2,…,pn} 在平面或空间中,Voronoi 图的每个区域 ViV_iVi 都由以下规则确定:
- 对于生成点 pip_ipi,该区域内的所有点到 pip_ipi 的距离比到其他任何生成点的距离都近。
因此,每个区域包含了所有与其生成点最近的点。这些区域称为Voronoi 区域或Voronoi 单元。
特点:
- Voronoi 图的边界由那些到两个或多个生成点等距的点组成。
- Voronoi 图将空间分割成互不重叠的区域,且每个点都属于其中一个生成点的区域。
2D 示例:
假设你在一张纸上随机放了几个点,Voronoi 图会将这张纸划分成若干个区域,每个区域内的点更接近某个特定点。
应用:
- 地理信息系统:确定最近的医院、学校等服务设施的位置。
- 无线通信:确定信号塔的覆盖范围。
2. Delaunay 三角剖分
Delaunay 三角剖分是将一组点通过连线构成不重叠三角形的过程。与 Voronoi 图不同,Delaunay 三角剖分专注于将点集划分为一组三角形,使得某些几何性质得到优化。
定义:
Delaunay 三角剖分具有以下特点:
- 对于点集中的任意三个点组成的三角形,它的外接圆内没有其他点存在。
- Delaunay 三角形剖分最大化了最小角度,从而避免了“扁长”的三角形。
2D 示例:
给定一组点,Delaunay 三角剖分连接这些点,形成三角形网格。在二维情况下,三角剖分将平面划分为不重叠的三角形,在三维情况下则是四面体。
应用:
- 地形建模:通过对地表点集进行三角剖分来生成地形模型。
- 物理模拟:在物理引擎中,三角剖分可以用来模拟弹性变形物体。
3. Voronoi 图与 Delaunay 三角剖分的关系
Voronoi 图和 Delaunay 三角剖分是互为对偶的关系,这意味着:
- Voronoi 图的顶点是Delaunay 三角形的外接圆的中心。
- Voronoi 图的边与Delaunay 三角形的边是垂直且对齐的。
- Delaunay 三角剖分的每条边连通的是 Voronoi 图相邻区域的生成点。
换句话说,如果你从点集的 Delaunay 三角剖分中绘制每个三角形的外接圆并标记圆心,那么这些圆心会构成 Voronoi 图。
4. 总结
- Voronoi 图划分的是空间区域,使得每个区域中的点离某个生成点最近。
- Delaunay 三角剖分划分的是空间中的点集,使得它们形成一组最优的三角形或四面体。
- Voronoi 图与 Delaunay 三角剖分互为对偶,它们在许多几何算法中常常结合使用。
5. 示例
Voronoi 图:
给定点集:P = {(1,1), (3,2), (5,4)}
Voronoi 图会将平面划分为三个区域,分别对应每个生成点,这些区域内的每个点与该区域的生成点最近。
Delaunay 三角剖分:
给定相同的点集 P,Delaunay 三角剖分会通过连接 (1,1) 和 (3,2)、(3,2) 和 (5,4) 等点,形成三角形。