Heim > Backend-Entwicklung > Python-Tutorial > Welche Methode ist für die Punkt-in-Polygon-Erkennung effizienter: Raytracing oder path.contains_points von Matplotlib?

Welche Methode ist für die Punkt-in-Polygon-Erkennung effizienter: Raytracing oder path.contains_points von Matplotlib?

Linda Hamilton
Freigeben: 2024-11-03 19:33:03
Original
371 Leute haben es durchsucht

Which Method is More Efficient for Point-in-Polygon Detection: Ray Tracing or Matplotlib's path.contains_points?

Effiziente Punkt-in-Polygon-Erkennung in Python

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 mpltPath

Polygon 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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage