SciPy - Espacial

o scipy.spatial package pode calcular triangulações, diagramas de Voronoi e cascos convexos de um conjunto de pontos, aproveitando o Qhull library. Além disso, contémKDTree implementations para consultas de ponto do vizinho mais próximo e utilitários para cálculos de distância em várias métricas.

Triangulações de Delaunay

Vamos entender o que são triangulações de Delaunay e como elas são usadas no SciPy.

O que são triangulações de Delaunay?

Em matemática e geometria computacional, uma triangulação de Delaunay para um determinado conjunto P de pontos discretos em um plano é uma triangulação DT(P) de modo que nenhum ponto em P está dentro da circunferência de qualquer triângulo em DT (P).

Podemos calcular da mesma forma através do SciPy. Vamos considerar o seguinte exemplo.

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()

O programa acima irá gerar a seguinte saída.

Pontos Coplanares

Vamos entender o que são pontos coplanares e como eles são usados ​​no SciPy.

O que são pontos coplanares?

Os pontos coplanares são três ou mais pontos que se encontram no mesmo plano. Lembre-se de que um plano é uma superfície plana, que se estende sem fim em todas as direções. Geralmente é mostrado nos livros de matemática como uma figura de quatro lados.

Vamos ver como podemos encontrar isso usando SciPy. Vamos considerar o seguinte exemplo.

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

O programa acima irá gerar a seguinte saída.

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

Isso significa que o ponto 4 reside perto do triângulo 0 e do vértice 3, mas não está incluído na triangulação.

Cascos convexos

Vamos entender o que são cascos convexos e como são usados ​​no SciPy.

O que são cascos convexos?

Em matemática, o convex hull ou convex envelope de um conjunto de pontos X no plano euclidiano ou em um espaço euclidiano (ou, mais geralmente, em um espaço afim sobre os reais) é o menor convex set que contém X.

Vamos considerar o seguinte exemplo para entendê-lo em detalhes.

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()

O programa acima irá gerar a seguinte saída.