【发布时间】: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