Удалите симплекс из соскобы Триангуляции Делоне

У меня есть набор точек, из которых я вычисляю триангуляцию Делоне, используя функцию 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()

введите описание изображения здесь введите описание изображения здесь

Другие вопросы по тегам