2013-11-22 18 views
7

Ich habe eine Reihe von ungeordneten Scheitelpunkten, die ein konkaves Polygon bilden können. Jetzt möchte ich sie entweder im oder gegen den Uhrzeigersinn bestellen.CONCAVE-Polygonscheitelpunkte im (Zähler) im Uhrzeigersinn bestellen?

An answer here schlägt vor, die folgenden Schritte:

  • Finden Sie das Polygon-Zentrum
  • Compute Winkel
  • Bestell Punkte Winkel

Dies ist natürlich nur für konvexen Polygon und wird fehlschlagen, wenn die Punkte bilden eine konkave.

Wie kann ich dies zu einem konkaven machen?

Ich benutze Python, aber alle generischen Antworten willkommen.

+0

Was haben Sie bei Ihrer Suche nach einem Algorithmus gefunden, um die * konkave Hülle * einer Menge von Punkten zu finden? Sobald Sie diese Punkte haben, sollte ein Spaziergang um sie herum einfach zu programmieren sein. –

+0

@HighPerformanceMark Ich denke, Sie beziehen sich auf die * Alpha-Form *. Ja, ich habe es mir angeschaut, bin aber [einem ungelösten Problem hier] begegnet (http://stackoverflow.com/questions/19948398/c-python-bindings-cause-access-violation-reading-location-0x00000002) und kann daher nicht Vorgehen. –

+0

Ich glaube nicht, dass die Reihenfolge im Uhrzeigersinn und gegen den Uhrzeigersinn einen Sinn ergibt, wenn man über die Eckpunkte eines allgemeinen konkaven Polygons spricht. – martineau

Antwort

9

Im Allgemeinen scheint Ihr Problem unklar definiert. Um zum Beispiel den folgenden Satz von Eckpunkten gegeben:

  Four points on the plane in a non-convex arrangement

, welche dieser nicht-konvexe Polygone würden Sie als die „richtige“ Weg, um sie zu verbinden?

  Polygon ABCD   Polygon ACDB   Polygon ACBD

Nun, natürlich gibt es verschiedene Kriterien, die Sie wählen zwischen verschiedenen möglichen Aufträge nutzen könnten. Sie können beispielsweise die Reihenfolge auswählen, die die Gesamtlänge der Kanten minimiert, was zu ziemlich "vernünftigen" Ergebnissen führen sollte, wenn die Punkte tatsächlich nahe beieinander an der Grenze eines einfachen Polygons liegen :

  Simple non-convex polygon with many vertices

Leider für einen allgemeinen Satz von Punkten, die Ordnung zu finden, die die Gesamtkantenlänge erweist sich als a well known NP-complete problem minimiert. Das heißt, es gibt viele heuristic algorithms, die in der Regel finden eine fast optimale Lösung schnell, auch wenn sie nicht immer garantieren können, dass die Lösung, die sie finden, das wahre Minimum ist.

Verwandte Themen