Berechnen und Anzeigen einer konvexen Hülle in Python

Rohan Timalsina 15 Februar 2024
Berechnen und Anzeigen einer konvexen Hülle in Python

Ein konvexes Objekt ist ein Objekt, das keinen Innenwinkel größer als 180 Grad hat. Hull ist der äußere Teil des Objekts.

Somit bedeutet die konvexe Hülle die Grenze um die Form des konvexen Objekts. In diesem Tutorial lernen Sie, eine konvexe Hülle einer zufälligen Menge von Punkten in Python zu berechnen und anzuzeigen.

Berechnen und zeigen Sie eine konvexe Hülle in Python

Eine konvexe Hülle einer Menge von Punkten ist die Grenze des kleinsten konvexen Polygons, das aus allen Punkten einer Menge besteht.

Sehen wir uns ein Beispiel einer konvexen Hülle einer Menge von Punkten an.

Angesichts dieser Punkte:

gegebene Menge zufälliger Punkte

Die konvexe Hülle ist:

konvexe Hülle zufälliger Punkte

Das Folgende ist eine einfache Implementierung zum Anzeigen einer konvexen Hülle aus zufälligen Punkten in Python.

Importieren der erforderlichen Module:

from scipy.spatial import ConvexHull
import matplotlib.pyplot as plt
import numpy as np

Verwenden von zufälligen Punkten in 2-D:

points = np.random.randint(0, 10, size=(15, 2))

Für eine konvexe Hülle gilt:

hull = ConvexHull(points)

Lassen Sie uns nun die Punkte und die konvexe Hülle darstellen.

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

Ausgang:

konvexe Hülle aus zufälligen Punkten anzeigen

Jetzt sollten Sie wissen, wie man in Python einen Satz zufälliger Punkte generiert und eine konvexe Hülle anzeigt. Wir hoffen, dass Sie dieses Tutorial hilfreich finden.

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