Удалите симплекс из соскобы Триангуляции Делоне
У меня есть набор точек, из которых я вычисляю триангуляцию Делоне, используя функцию scipy.spatial.Delaunay. Например, что-то вроде следующего:
import numpy as np
from scipy.spatial import Delaunay
tri = Delaunay(np.random.rand(10,2))
Что я хочу сделать после того, как это вычислено, так это удалить симплекс. Есть простой способ сделать это? Я заметил, что у объекта Делоне есть метод для add_point
но ничего для remove_point
или же remove_simplex
,
На мой взгляд, у меня есть два варианта. Я сам знаю список точек, поэтому я просто удаляю необходимые точки и пересчитываю триангуляцию Делоне. Я надеюсь избежать этого, так как это может стать неэффективным, если мне придется пересчитывать много очков. Другой вариант, который я вижу, - непосредственно редактировать параметры объекта, но это кажется потенциально опасным методом. У кого-нибудь есть предложения по лучшему методу?
1 ответ
Результат Делоне - просто объект. Вы можете выбрать нужный вам симплекс.
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()