我有一组点,可以使用scipy.spatial.Delaunay函数从中计算出Delaunay三角剖分。例如,以下内容:
import numpy as np
from scipy.spatial import Delaunay
tri = Delaunay(np.random.rand(10,2))
计算完之后,我想做的是删除一个单纯形。是否有捷径可寻?我注意到Delaunay对象为
add_point
提供了一种方法,但对于remove_point
或remove_simplex
没有任何方法。从我的角度来看,我有两个选择。我自己知道点列表,因此我只需删除必要的点并重新计算Delaunay三角剖分。我希望避免这种情况,因为如果我不得不对很多点进行大量重新计算,它可能会变得效率低下。我可以看到的另一个选项是自己直接编辑对象参数,但这似乎是一种潜在的危险方法。有人对更好的方法有什么建议吗?
最佳答案
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()
关于python - 从Scipy Delaunay三角剖分中删除单纯形,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35298360/