首页 > 解决方案 > 创建仅限于边界框的 Voronoi 多边形图

问题描述

我想为 50 X 50 域内的一组点获取 Voronoi 多边形图。os 所有的 voronoi 脊都应该被裁剪在边界框的边缘,并且 voronoi 顶点应该位于边缘上或边界框内。然而,这是我使用 scipy.spatial.Voronoi 得到的图像

标签: pythonvoronoi

解决方案


在框边界处切断所有超出它的单元格的最简单方法是执行以下操作:

  1. 在盒子的每个边缘上反映您的原始数据集(您的“Voronoi 种子”),在这种情况下,创建 4 个新数据集,每个数据集都是您在其中一个边缘上的原始点集的镜像。

  2. 将您的原始数据集和这四个新数据集视为所有一组点,并运行您的 Voronoi 算法以使用这个新的扩大集创建 Voronoi 分区。原始集合中那些单元格将超出边界的点现在将通过它们的镜像相遇,并且它们的单元格将按照您的意愿在边界处被完全切断。

  3. 现在只需忽略步骤 1 中生成的额外点,您就可以使用原始点集对原始边界框进行 Voronoi 分区,边缘附近的单元格被框的边界整齐地切断。

反思步骤并不难;如有必要,我可以详细说明。

此方法确实将您的点数乘以 5,这显然会增加完成 Voronoi 计算的时间。根据您的点数,这可能会成为一个问题。可以通过仅反映单元格实际上超出框的那些点来加快速度;这需要更多的逻辑,但可行。


推荐阅读