从scipy Delaunay三角剖分中删除单纯形

时间:2016-02-09 17:28:27

标签: python scipy delaunay

我有一组点,我使用scipy.spatial.Delaunay函数从中计算Delaunay三角剖分。以下是一些例子:

import numpy as np
from scipy.spatial import Delaunay

tri = Delaunay(np.random.rand(10,2))

计算完成后我想要做的是删除一个单纯形。是否有捷径可寻?我注意到Delaunay对象有add_point的方法,但remove_pointremove_simplex没有。

我看到它的方式,我有两个选择。我自己知道点数列表所以我只需删除必要的点并重新计算Delaunay三角剖分。我希望避免这种情况,因为如果我必须为很多积分重新计算很多,它会变得效率低下。我能看到的另一个选项是自己直接编辑对象参数,但这似乎是一种潜在危险的方法。有没有人对更好的方法有任何建议?

1 个答案:

答案 0 :(得分:2)

Delaunay结果是一个numpy对象。你可以选择你需要的单纯形。

import numpy as np
from scipy.spatial import Delaunay
import matplotlib.pyplot as plt

points = np.random.rand(30,2)
tri = Delaunay(points).simplices.copy()

plt.triplot(points[:,0], points[:,1], tri, linewidth=0.5)
plt.show()

tri_another = tri[0:10,:]
print(len(tri))
print(len(tri_another))
plt.triplot(points[:,0], points[:,1], tri_another, linewidth=0.5)
plt.show()

enter image description here enter image description here