Calcular y mostrar un casco convexo en Python

Rohan Timalsina 15 febrero 2024
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:

conjunto dado de puntos aleatorios

El casco convexo es:

casco convexo de puntos aleatorios

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:

mostrar casco convexo de puntos aleatorios

Ahora debería saber generar un conjunto de puntos aleatorios y mostrar un casco convexo en Python. Esperamos que este tutorial le resulte útil.

Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website