Учебники

SciPy — Пространственный

Пакет scipy.spatial может вычислять триангуляции, диаграммы Вороного и выпуклые оболочки из набора точек, используя библиотеку Qhull . Кроме того, он содержит реализации KDTree для запросов точек ближайших соседей и утилиты для вычислений расстояния в различных метриках.

Триангуляции Делоне

Давайте разберемся, что такое триангуляции Делоне и как они используются в SciPy.

Что такое триангуляции Делоне?

В математике и вычислительной геометрии триангуляция Делоне для заданного набора P дискретных точек на плоскости является триангуляцией DT (P), такой, что ни одна точка в P не находится внутри окружности любого треугольника в DT (P).

Мы можем вычислить то же самое через SciPy. Давайте рассмотрим следующий пример.

from scipy.spatial import Delaunay
points = np.array([[0, 4], [2, 1.1], [1, 3], [1, 2]])
tri = Delaunay(points)
import matplotlib.pyplot as plt
plt.triplot(points[:,0], points[:,1], tri.simplices.copy())
plt.plot(points[:,0], points[:,1], 'o')
plt.show()

Вышеуказанная программа сгенерирует следующий вывод.

Триангуляции Делоне

Копланарные точки

Давайте разберемся, что такое Копланарные Точки и как они используются в SciPy.

Что такое Копланарные Точки?

Копланарные точки — это три или более точек, которые лежат в одной плоскости. Напомним, что плоскость представляет собой плоскую поверхность, которая проходит без конца во всех направлениях. Обычно в учебниках по математике это изображено в виде четырехстороннего рисунка.

Давайте посмотрим, как мы можем найти это с помощью SciPy. Давайте рассмотрим следующий пример.

from scipy.spatial import Delaunay
points = np.array([[0, 0], [0, 1], [1, 0], [1, 1], [1, 1]])
tri = Delaunay(points)
print tri.coplanar

Вышеуказанная программа сгенерирует следующий вывод.

array([[4, 0, 3]], dtype = int32)

Это означает, что точка 4 находится вблизи треугольника 0 и вершины 3, но не включена в триангуляцию.

Выпуклые корпуса

Давайте разберемся, что такое выпуклые оболочки и как они используются в SciPy.

Что такое выпуклые оболочки?

В математике выпуклая оболочка или выпуклая оболочка множества точек X в евклидовой плоскости или в евклидовом пространстве (или, в более общем случае, в аффинном пространстве над реалами) является наименьшим выпуклым множеством , содержащим X.

Давайте рассмотрим следующий пример, чтобы понять его подробнее.

from scipy.spatial import ConvexHull
points = np.random.rand(10, 2) # 30 random points in 2-D
hull = ConvexHull(points)
import matplotlib.pyplot as plt
plt.plot(points[:,0], points[:,1], 'o')
for simplex in hull.simplices:
plt.plot(points[simplex,0], points[simplex,1], 'k-')
plt.show()

Вышеуказанная программа сгенерирует следующий вывод.