festlegen, ob ein Punkt innerhalb eines Polygons eine häufige Aufgabe in der Computergeometrie ist. Eine effiziente Methode für diese Aufgabe zu finden ist bei der Bewertung einer großen Anzahl von Punkten vorteilhaft. Hier untersuchen und vergleichen wir zwei häufig verwendete Methoden: Strahlenverfolgung und Matplotlibs Path.Contains_Points Funktion.
Ray Tracing -Methode
Die Ray -Tracing -Methode überschneidet einen Horizontalstrahl von einem Horizontalen Strahl aus dem Horizontalen Strahl von Strahl Der Punkt untersucht mit den Seiten des Polygons. Es zählt die Anzahl der Kreuzungen und bestimmt, ob sich der Punkt im Polygon basierend auf seiner Parität befindet. Pfadobjekt zur Darstellung des Polygons. Es prüft, ob der angegebene Punkt innerhalb des definierten Pfades liegt. Diese Funktion ist oft schneller als der Ansatz der Strahlenverfolgung, wie im Code -Snippet angezeigt wird:
von Zeit importieren Matplotlib.Path als 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)]
Ray Tracing verstrichene Zeit
punkte = np.random.rand (10000, 2)
start_time = time ()
inside1 = [ray_tracing_method (point [0], Punkt [1) ], polygon) für Punkte in Punkten]
print ("Ray Tracing verstrichene Zeit:" str (time () - start_time)Matplotlib enthält die verstrichene Zeit
start_time = time (Zeit (Zeit )
print ("matplotlib enthält >
path = mpltpath.path (polygon)
inside2 = path.contains_points (Punkte)Der obige Code meldet wesentlich schnellere Ausführungszeiten für Matplotlibs Ansatz im Vergleich zu Ray Tracing.
zusätzlich zu diesen Methoden, die Shapey-Paket speziell für geometrische Operationen ausgelegte Paket bietet effiziente Funktionen für Point-in-Polygon-Überprüfungen.
andere Optionen
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3