基于MATLAB的Voronoi图生成与计算几何分析系统
项目介绍
本系统是一个集成了空间剖分、几何建模与量化分析的综合性工具。系统利用欧几里得距离原则,将二维或三维空间划分为一系列互不重叠的Voronoi单元(泰森多边形/多面体)。该工具旨在解决计算几何中的边界效应、拓扑邻居判定及单元几何特征提取等核心问题,为无线通信、城市规划及材料科学等领域的研究提供高精度的仿真平台。
---
功能特性
- 维度兼容性:系统完整支持二维(2D)和三维(3D)空间的Voronoi图构建与可视化。
- 多样化种子生成:内置均匀分布(Uniform)与高斯分布(Gaussian)两种模式,模拟不同密度的点集分布特征。
- 高级边界裁剪:针对2D空间,通过内置的多边形布尔运算逻辑,精确裁剪无限延伸的单元,确保分析区域严格限定在预设边界内。
- 深度几何量化:自动提取每个Voronoi单元的面积、周长、体积(3D)、质心坐标及拓扑邻居数量。
- 多维可视化分析:提供空间划分图、属性相关性散点图以及3D晶粒生长模拟图,支持颜色映射以反映几何偏移度。
---
使用方法
- 参数初始化:在代码起始位置设置种子点数量(numPoints)、维度(spaceDim)、分布模式(distType)及空间范围(boundary)。
- 执行分析:运行程序,系统将自动生成种子点并执行Voronoi剖分。
- 交互查看:程序执行完毕后将弹出图形窗口。2D模式下可查看空间划分图与属性统计图;3D模式下可观察空间细分的透视图。
- 结果获取:命令行窗口将实时输出几何统计摘要,包括平均面积、平均体积及平均邻居数等关键指标。
---
系统逻辑实现说明
系统的核心逻辑遵循“生成-剖分-处理-分析-展示”的闭环流程:
- 环境配置与参数驱动
系统首先清除工作区变量并初始化参数。通过设定的空间维度变量,系统能够自动切换不同的计算逻辑分支(runVoronoi2D 或 runVoronoi3D)。
- 种子点分布逻辑
种子点生成函数根据用户选择的模式产生坐标。
- 均匀分布模式:通过随机数生成器在指定边界范围内产生线性分布的点。
- 高斯分布模式:以边界中点为中心通过正态分布生成点,并辅以边界截断机制(min/max 约束),防止种子点溢出分析区域。
- 二维计算几何流
- 空间剖分:调用对偶算法生成Voronoi顶点坐标及单元索引。
- 边界重构:为解决Voronoi算法默认产生的射线和无穷远点问题,系统定义了一个矩形掩模区域。利用多边形求交算法,将每个单元限制在指定边界内,重新计算顶点序列。
- 几何特征提取:通过向量叉积法(Shoelace Formula)计算裁剪后多边形的面积与质心。通过计算多边形各边向量的范数之和获取周长。
- 拓扑分析:利用Delaunay三角网的对偶特性,统计每个点参与构成的三角形数量,从而确定其拓扑邻居数。
- 可视化渲染:左侧视口绘制具有随机填充色的Patch对象,并标记种子点;右侧视口通过散点图展示面积与周长的相关性,并以颜色深浅代表种子点偏离细胞形心的程度。
- 三维计算几何流
- 空间细分:在三维欧式空间执行剖分,获取各胞腔的顶点云。
- 晶粒模拟:利用凸包算法(Convex Hull)计算落在显示范围内的胞腔表面网格,并计算其包络体积。
- 3D渲染:采用trisurf函数配合光照效果(camlight)进行渲染,模拟材料科学中的晶粒组织结构。
---
关键算法与实现细节分析
- 对偶转换算法(Voronoin/Delaunay)
系统核心依托MATLAB内置的计算几何函数库。2D分析中同时计算Delaunay三角网,是因为Voronoi单元的邻接关系在拓扑上等同于Delaunay三角网中共享边的连接关系,以此实现邻居数量的高效统计。
- 边界裁剪机制
由于原生Voronoi算法生成的边缘单元往往具有指向无穷远的顶点,系统引入了多边形相交算法(Intersection of polyshapes)。这一步是整个系统进行准确数值统计的前提,它将开集转化为闭集,从而使得面积和周长的计算具备实际物理意义。
- 几何中心与偏离度分析
系统不仅计算种子点(Seeds)位置,还计算了剖分后多边形的几何形心(Centroid)。通过计算两者的欧氏距离(Centroid Offset),可以评估空间划分的均匀性。该指标在评估服务区布局是否合理(如基站覆盖是否位于其服务区的几何中心)时具有重要参考意义。
- 3D凸包计算
在三维模式下,系统通过 convhull 函数对顶点集进行重构。由于3D Voronoi单元本质上是凸多面体,利用凸包算法可以快速计算胞腔体积并生成面片索引,满足了性能与准确性的平衡。
---
系统要求
- 运行软件:MATLAB R2017b 或更高版本(需支持 polyshape 对象及相关几何函数库)。
- 硬件环境:由于3D渲染与大量多边形求交涉及浮点运算,建议配置 8GB 以上内存。