【问题标题】:Interpret 3D Voronoi results in MATLAB or Python在 MATLAB 或 Python 中解释 3D Voronoi 结果
【发布时间】:2015-11-15 10:40:05
【问题描述】:

我有一个关于在 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]]

我该怎么做

  • 计算边界顶点(只有6个内部顶点 但总共有 32 个顶点)
  • 形成五个多面体
  • 提取边缘

【问题讨论】:

  • 请在minimal reproducible example中添加您的代码。
  • 我添加了上面的例子。谢谢! :)
  • 您现在使用的输入数据与上面的可视化不匹配,必须用不同的数字生成。
  • 你是对的。现在我看到内部顶点已正确计算。我更新了上面的问题。谢谢!
  • dicResult 只包含第一个多面体,而listResult 包含所有。

标签: python matlab geometry voronoi


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-11-02
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    相关资源
    最近更新 更多