Voronoi图生成与空间分割可视化系统
项目介绍
本系统是一个基于MATLAB开发的计算几何工具,专门用于生成受边界约束的Voronoi图(泰森多边形)。系统通过随机采样、拓扑分析、多边形裁剪以及几何统计,实现了在复杂多边形区域(ROI)内的空间分割可视化与定量分析。该工具不仅能够处理标准的Voronoi生成,还能自动修复无穷远胞元,并提供Delaunay对偶图的拓扑连接展示。
功能特性
- 自定义边界约束:支持任意形状的多边形作为感兴趣区域(ROI),所有空间分割均限制在该边界内。
- 智能种子点分布:系统自动在定义的复杂边界内生成指定数量的随机种子点,并确保点位完全落在区域内部。
- 无限胞元自动截断:针对Voronoi算法产生的无穷远顶点,通过构建超大包围盒与凸包算法进行闭合处理。
- 多维几何分析:自动计算每个胞元的面积、周长以及质心坐标。
- 拓扑对偶展示:在展示Voronoi分割的同时,同步渲染其对偶图(Delaunay三角剖分)的邻接关系。
- 综合报表输出:控制台实时输出每个单元的详细几何参数,并进行全区域覆盖率统计。
系统要求- 软件环境:MATLAB R2017b 或更高版本(需支持 polyshape 数据类型)。
- 核心函数库:MATLAB内置的计算几何工具箱(含 voronoin, delaunayTriangulation 等)。
实现逻辑说明系统的核心流程严格按照以下六个阶段执行:
- 环境初始化与参数定义:
设定种子点总数(默认为25个)及ROI边界顶点坐标。边界支持不规则形状,通过坐标序列定义闭合回路。
- 种子点采样与过滤:
在ROI的外接矩形范围内生成随机点,利用点在多边形内判定算法(inpolygon)剔除边界外的无效点,直至满足预设的种子点数量要求。
- 原始拓扑计算:
调用内置算法生成原始Voronoi顶点坐标与胞元映射关系。同时构建Delaunay三角化模型,并提取相邻种子点之间的拓扑连接关系,生成邻接矩阵。
- 边界约束裁剪(核心逻辑):
遍历每个Voronoi胞元,针对包含“无穷远”顶点的胞元,程序会通过子函数构建一个远大于ROI范围的临时包围盒,并结合凸包(convhull)算法将其约束为封闭多边形。随后,利用多边形布尔运算(intersect)准确计算原始胞元与ROI边界的交集。
- 多维度可视化渲染:
* 使用半透明的FaceAlpha参数绘制带有色彩映射(HSV)的分割区域。
* 以虚线绘制Delaunay邻接边,展示空间拓扑结构。
* 绘制种子点(散点)及加粗的ROI原始边界。
- 统计报表统计:
系统遍历裁剪后的所有多边形,提取其几何特征,最终计算并对比ROI总面积与各胞元面积之和,输出覆盖率以验证计算准确性。
算法与关键函数细节
- polyshape数据类型:这是实现空间裁剪的关键。通过将顶点坐标转换为polyshape对象,程序能够高效处理复杂的非凸多边形交集运算。
- createLargeBoundingBoxCell 子函数:解决Voronoi图边缘发散问题的核心算法。它提取胞元的已知有效顶点,并融入一个极大的外部框架,通过重新计算凸包来闭合那些原本指向无穷远的区域。
- adjacencyMatrix 子函数:从Delaunay三角剖分对象中提取边索引,并转化为稀疏对称矩阵,为后续绘制邻接图提供数据支持。
- 几何特征提取:利用内置函数 area、perimeter 和 centroid 直接从裁剪后的多边形对象中提取属性,确保了计算结果的严谨性。
使用方法- 打开MATLAB并将工作目录切换至本项目路径。
- 运行主程序脚本。
- 程序将自动弹出图形窗口展示空间分割效果。
- 在MATLAB命令行窗口(Command Window)查看详细的几何统计报表及覆盖率分析。