Graph 如何基于Voronoi图构建图形?

Graph 如何基于Voronoi图构建图形?,graph,voronoi,Graph,Voronoi,我有一组x和y坐标的点。我想从这些点构建一个Voronoi图,然后基于该图构建一个图,并遵循以下规则: 图中的每个区域将成为图中的一个节点 如果两个节点的区域在图中相互接触,则两个节点是连接的 我如何建立这个图表?我只需要一个起点,这样我就知道从哪里开始了。您要查找的图形是,它是Voronoi图的对偶。在此图中,节点对应于输入中的点,如果相关的Voronoi单元彼此接触,则节点在图/三角剖分中连接 可以使用在scipy中构建Delaunay三角剖分。您要查找的数据(哪些顶点相互连接)可通过结

我有一组x和y坐标的点。我想从这些点构建一个Voronoi图,然后基于该图构建一个图,并遵循以下规则:

  • 图中的每个区域将成为图中的一个节点
  • 如果两个节点的区域在图中相互接触,则两个节点是连接的

我如何建立这个图表?我只需要一个起点,这样我就知道从哪里开始了。

您要查找的图形是,它是Voronoi图的对偶。在此图中,节点对应于输入中的点,如果相关的Voronoi单元彼此接触,则节点在图/三角剖分中连接

可以使用在scipy中构建Delaunay三角剖分。您要查找的数据(哪些顶点相互连接)可通过结果的链接获得

>>> import numpy as np
>>> points = np.array([[0, 0], [0, 1.1], [1, 0], [1, 1]])
>>> from scipy.spatial import Delaunay
>>> tri = Delaunay(points)
>>> tri.vertex_neighbor_vertices
(array([ 0,  3,  5,  7, 10], dtype=int32), array([2, 3, 1, 3, 0, 3, 0, 2, 0, 1], dtype=int32))
在上面的示例中,使用两个数组存储图形连接性:第二个数组包含所有相邻顶点,第一个数组包含与每个特定顶点对应的每个顶点中的位置范围。垂直方向编号为:0=[0,0],1=[0,1.1],2=[1,0],3=[1,1])。然后在生成的图中,顶点0连接到顶点2、3和1(在第二个数组中的位置0、1和3),顶点1连接到顶点3和0(在第二个数组中的n个位置3和4),顶点2连接到顶点3和0,顶点3连接到顶点2、0和1

从scipy文档中,三角剖分如下所示:顶点0和3有三个邻居,其他两个顶点只有两个邻居


谢谢。这就是我要找的。你知道一个C语言的图书馆吗?我问这个问题是因为我需要在Unity引擎中实现它。我建议从Triangle.NET(Triangle的C#port)开始,看看关于这个答案的讨论: