Die Bestimmung, ob ein Punkt innerhalb eines Polygons liegt, ist eine häufige Aufgabe in der Computergeometrie. Bei der Auswertung einer großen Anzahl von Punkten ist es von Vorteil, eine effiziente Methode für diese Aufgabe zu finden. Hier untersuchen und vergleichen wir zwei häufig verwendete Methoden: Raytracing und die path.contains_points-Funktion von Matplotlib.
Raytracing-Methode
Die Raytracing-Methode schneidet einen horizontalen Strahl von der zu untersuchende Punkt mit den Seiten des Polygons. Es zählt die Anzahl der Schnittpunkte und bestimmt anhand seiner Parität, ob der Punkt innerhalb des Polygons liegt.
Die path.contains_points-Funktion von Matplotlib
Die path.contains_points-Funktion von Matplotlib verwendet a Pfadobjekt zur Darstellung des Polygons. Es prüft, ob der angegebene Punkt innerhalb des definierten Pfades liegt. Diese Funktion ist oft schneller als der Raytracing-Ansatz, wie im bereitgestellten Codeausschnitt zu sehen ist:
from time import time
import matplotlib.path as mpltPathPolygon und zufällige Punkte
polygon = [[np.sin(x) 0.5, np.cos(x) 0.5] für x in np.linspace(0, 2*np.pi, 100)]
points = np.random.rand(10000, 2)Raytracing verstrichene Zeit
start_time = time()
inside1 = [ray_tracing_method(point[0], point[ 1], Polygon) für Punkt in Punkten]
print("Ray Tracing Elapsed time: " str(time() - start_time))Matplotlib enthält_punkte verstrichene Zeit
start_time = time ()
path = pltPath.Path(polygon)
inside2 = path.contains_points(points)
print("Matplotlib enthält_punkte Verstrichene Zeit: " str(time() - start_time))
< /pre>Der obige Code meldet deutlich schnellere Ausführungszeiten für Matplotlibs Ansatz im Vergleich zu Raytracing.
Andere Optionen
Zusätzlich zu diesen Methoden Das Shapely-Paket, das speziell für geometrische Operationen entwickelt wurde, bietet effiziente Funktionen für Punkt-in-Polygon-Prüfungen.
Das obige ist der detaillierte Inhalt vonWelche Methode ist für die Punkt-in-Polygon-Erkennung effizienter: Raytracing oder path.contains_points von Matplotlib?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!