创建仅限于边界框的 Voronoi 多边形图

时间:2021-06-25 16:40:59

标签: python voronoi

我想获得 50 X 50 域内一组点的 Voronoi 多边形图。也就是说,所有的 voronoi 脊都应该在边界框的边缘处被裁剪,并且 voronoi 顶点应该位于边界上或边界框内。However this i the image I am getting by using scipy.spatial.Voronoi

1 个答案:

答案 0 :(得分:1)

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

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

  2. 将您的原始数据集和这四个新数据集视为所有一组点,并运行您的 Voronoi 算法以使用这个新的扩大集创建 Voronoi 分区。原始集合中那些单元格现在会超出边界的点将被它们的镜像相遇,并且它们的单元格将在您希望的情况下精确地在边界处被截断。

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

反射步骤并不难;如果需要,我可以详细说明。

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