2012-04-07 18 views
-3

Was ist der beste Algorithmus zum Lösen von Punkten im Polygon in Programmierwettbewerben?Punkt im Polygonalgorithmus in Programmierwettbewerben

+3

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

+0

-1 Sie möchten einen Computational Geometry Contest eingeben - aber bitten Sie die Community, es für Sie zu lösen !? – cmannett85

+0

Wie bist du zu diesem Schluss gekommen cmannett85 ?? !! – user1284064

Antwort

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)