我有一组点,可以使用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三角剖分。我希望避免这种情况,因为如果我不得不对很多点进行大量重新计算,它可能会变得效率低下。我可以看到的另一个选项是自己直接编辑对象参数,但这似乎是一种潜在的危险方法。有人对更好的方法有什么建议吗?

最佳答案

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三角剖分中删除单纯形-LMLPHP
python - 从Scipy Delaunay三角剖分中删除单纯形-LMLPHP

关于python - 从Scipy Delaunay三角剖分中删除单纯形,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35298360/

10-09 20:28