在 MATLAB 或 Python 中解释 3D Voronoi 结果

Interpret 3D Voronoi results in MATLAB or Python

我有一个关于在 MATLAB 或 Python 中的边界内构造 3d Voronoi 多边形的问题。

有顶点

[5,5,5],
[2,2,2],
[8,2,2],
[2,8,2],
[8,8,2],
[2,2,8],
[8,2,8],
[2,8,8],
[8,8,8]

以及边界 [0,0,0][10,10,10]

我希望得到

这是一个工作示例,请注意我添加了 8 个节点来定义立方体的角。

import pyvoro
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

listResult=pyvoro.compute_voronoi(
  [[5,5,5],
   [2,2,2],
   [8,2,2],
   [2,8,2],
   [8,8,2],
   [2,2,8],
   [8,2,8],
   [2,8,8],
   [8,8,8]], # point positions
  [[0.0, 10.0], [0.0, 10.0], [0.0, 10.0]], # limits
  1.0, # block size
)

dicResult = listResult[0]

现在pyvoro的顶点如下

[[5.0, 5.0, 9.5], 
[5.0, 5.0, 0.50], 
[5.0, 9.5, 5.0], 
[9.5, 5.0, 5.0], 
[0.50, 5.0, 5.0], 
[5.0, 0.50, 5.0]]

面孔

[{'adjacent_cell': 4, 'vertices': [1, 3, 2]}, 
{'adjacent_cell': 2, 'vertices': [1, 5, 3]}, 
{'adjacent_cell': 1, 'vertices': [1, 4, 5]}, 
{'adjacent_cell': 3, 'vertices': [1, 2, 4]}, 
{'adjacent_cell': 8, 'vertices': [2, 3, 0]}, 
{'adjacent_cell': 7, 'vertices': [2, 0, 4]},
{'adjacent_cell': 6, 'vertices': [3, 5, 0]}, 
{'adjacent_cell': 5, 'vertices': [4, 0, 5]}]

相邻

[[2, 4, 5, 3], 
[3, 5, 4, 2], 
[3, 1, 4, 0], 
[0, 5, 1, 2], 
[2, 1, 5, 0], 
[0, 4, 1, 3]]

我怎么

你对边界的理解是错误的。在您的示例中,您在所有八个角和中心以及边界都有站点。

仅传递一个站点会产生微不足道的 voronoi。所有点都最接近这个大小,因此一个区域(一个立方体)填满了所有东西。这就是 pyvoro 产生的结果。