Calcular y mostrar un casco convexo en Python
Un objeto convexo es un objeto que no tiene ángulos interiores mayores de 180 grados. El casco es la parte exterior del objeto.
Por lo tanto, el casco convexo significa el límite alrededor de la forma del objeto convexo. Este tutorial le enseñará a calcular y mostrar un casco convexo de un conjunto aleatorio de puntos en Python.
Calcular y mostrar un casco convexo en Python
Un casco convexo de un conjunto de puntos es el límite del polígono convexo más pequeño que consta de todos los puntos en un conjunto.
Veamos un ejemplo de un casco convexo de un conjunto de puntos.
Dados estos puntos:
El casco convexo es:
La siguiente es una implementación simple de mostrar un casco convexo de puntos aleatorios en Python.
Importando los módulos requeridos:
from scipy.spatial import ConvexHull
import matplotlib.pyplot as plt
import numpy as np
Usando puntos aleatorios en 2-D:
points = np.random.randint(0, 10, size=(15, 2))
Para un casco convexo, tenemos:
hull = ConvexHull(points)
Ahora, tracemos los puntos y el casco convexo.
fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(10, 3))
for ax in (ax1, ax2):
ax.plot(points[:, 0], points[:, 1], ".", color="k")
if ax == ax1:
ax.set_title("Given points")
else:
ax.set_title("Convex hull")
for simplex in hull.simplices:
ax.plot(points[simplex, 0], points[simplex, 1], "c")
ax.plot(
points[hull.vertices, 0],
points[hull.vertices, 1],
"o",
mec="r",
color="none",
lw=1,
markersize=10,
)
ax.set_xticks(range(10))
ax.set_yticks(range(10))
plt.show()
Producción:
Ahora debería saber generar un conjunto de puntos aleatorios y mostrar un casco convexo en Python. Esperamos que este tutorial le resulte útil.