Was ist der beste Algorithmus zum Lösen von Punkten im Polygon in Programmierwettbewerben?Punkt im Polygonalgorithmus in Programmierwettbewerben
-3
A
Antwort
0
, wenn Sie eine konvexe Polygon haben, können Sie diese verwenden:
1
schießen einen Strahl (in beliebiger Richtung) von dem Punkt, und überprüfen Sie die Anzahl, wie oft es überquert hat die Kanten des Polygons, wenn es ist auch dann der Punkt außerhalb des Polygons, sonst ist der Punkt innerhalb des Polygons.
Wenn Sie dies für viele Abfragepunkte tun müssen, können Sie das Polygon triangulieren (eigentlich triangulieren Sie sowohl innerhalb als auch die Region zwischen dem Polygon und dem konvexen), so dass Sie in O schießen können (log n)
Es gibt optimierte Algorithmen für die meisten gängigen Formen (nämlich Dreiecke und Vierecke), aber ein einfacher Ansatz wird von Wikipedia skizziert, der für jedes beliebige Polygon funktionieren sollte, solange Sie den Strahl richtig wählen: http: // en. wikipedia.org/wiki/Point_in_polygon – Blender
-1 Sie möchten einen Computational Geometry Contest eingeben - aber bitten Sie die Community, es für Sie zu lösen !? – cmannett85
Wie bist du zu diesem Schluss gekommen cmannett85 ?? !! – user1284064