从 3D Delaunay Tessellation 构建 3D Voronoi 图
Constructing the 3D Voronoi Diagram from a 3D Delaunay Tessallation
我正在尝试将 3D Delaunay Tessallation(使用 TetGen 生成)转换为 Voronoi 图。我知道 TetGen 可以创建 Voronoi 图,但由于边界条件异常,我需要自己执行转换。
我完全被这里的双重性难住了。我有四个中的两个:
- 每个Delaunay顶点对应一个Voronoi单元(单元的中心在顶点)。
- 每个Delaunay四面体对应一个Voronoi顶点(四面体的中心在顶点)
我知道每个 Delaunay 面都对应一个 Voronoi 边,并且我有面顶点,但如何从中提取 Voronoi 边?
此外,每个 Delaunay 边都对应一个 Voronoi 面,但同样 - 如何找到与边对应的面?
让我们考虑 Delaunay 三角剖分中的一条边。现在假设它不在输入点的凸包上。
考虑一个四面体入射到该边缘。你得到双面的第一个点。然后选择入射到边缘的四面体中的两个三角形之一。穿过它,您将进入另一个四面体,它为您提供面部的第二个点。如果你一直像这样围绕边缘转动(沿相同方向),你将回到第一个四面体,你将得到脸部的描述。
如果边缘在凸包上,则在描述面时需要添加射线而不是线段。
请注意,如果您有超过 3 个共球面点,一些四面体将对应相同的双 Voronoi 顶点。
我正在尝试将 3D Delaunay Tessallation(使用 TetGen 生成)转换为 Voronoi 图。我知道 TetGen 可以创建 Voronoi 图,但由于边界条件异常,我需要自己执行转换。
我完全被这里的双重性难住了。我有四个中的两个:
- 每个Delaunay顶点对应一个Voronoi单元(单元的中心在顶点)。
- 每个Delaunay四面体对应一个Voronoi顶点(四面体的中心在顶点)
我知道每个 Delaunay 面都对应一个 Voronoi 边,并且我有面顶点,但如何从中提取 Voronoi 边?
此外,每个 Delaunay 边都对应一个 Voronoi 面,但同样 - 如何找到与边对应的面?
让我们考虑 Delaunay 三角剖分中的一条边。现在假设它不在输入点的凸包上。 考虑一个四面体入射到该边缘。你得到双面的第一个点。然后选择入射到边缘的四面体中的两个三角形之一。穿过它,您将进入另一个四面体,它为您提供面部的第二个点。如果你一直像这样围绕边缘转动(沿相同方向),你将回到第一个四面体,你将得到脸部的描述。 如果边缘在凸包上,则在描述面时需要添加射线而不是线段。
请注意,如果您有超过 3 个共球面点,一些四面体将对应相同的双 Voronoi 顶点。