erhalten Mittelpunkt Polygon C # [duplizieren]

9

Welchen Algorithmus kann ich verwenden, um das Zentrum des Polygons (roter Punkt) zu erhalten? Fall 1: Ich versuche mit maxX, maxY, minX, minY und ich habe den falschen Punkt (schwarzer Punkt) bekommen Fall 2: Ich versuche, die zweite Max- und Min-Koordinate X und Y zu bekommen, aber ich habe Probleme mit dem Polygon, die weniger als 5 Punkte haben Fall 3: Ich füge if point count < 5 then use case 1 else use case 2 hinzu, aber ich habe einen Fehler für ein Polygon bekommen

Kannst du mir den richtigen Algorithmus für mich sagen?

Hinweis:

Erklärung für das vierte Bild

%Vor%

wie weit ich es mache

    
Zenithxm 21.12.2013, 07:05
quelle

1 Antwort

1

Was Sie suchen, ist nicht das geometrische Zentrum (oder Zentroid ) des Polygons, sondern das Zentrum des Teil der Symmetrieachse des Polygons, die innerhalb des Polygons liegt. Lassen Sie mich eines Ihrer Beispiele bearbeiten, um Folgendes zu demonstrieren:

Bearbeitetes Beispiel

Siehst du was ich meine?

Ich habe dieses Beispiel gewählt, weil es einen weiteren Fehler in Ihrem Denken zeigt; Dies sind zwei Polygone, und jedes von ihnen erzeugt einen Punkt, der zu den Qualifikationen passt, die Sie suchen. In Ihrem Beispiel wählen Sie einfach einen von ihnen als den Punkt, den Sie wollen. (Ich habe Ihr bearbeitetes viertes Beispiel gesehen; es hat immer noch zwei Innenräume und ändert meinen Punkt nicht.)

In jedem Fall ist das, was Sie suchen, tatsächlich die Lösung für zwei Probleme: erstens, wie man eine Symmetrieachse für ein Polygon findet; zweitens findet man auf dieser Symmetrieachse ein Liniensegment, das auch im Inneren des Polygons liegt. Danach ist das Finden des Mittelpunkts dieses Segments trivial.

Ich kann keine weiteren Links mehr posten, aber es gibt eine Arbeit von P. Highnam von der Carnegie Mellon University mit dem Titel Optimal Algorithms for Symmetries of the Planar Point Set, die bei dem ersten Problem helfen könnte Ich werde es hier nicht erklären. Das zweite Problem besteht nur darin, jedes Liniensegment zu testen, um zu sehen, ob es einen Schnittpunkt mit einer Linie entlang der Symmetrieachse enthält, die durch den Schwerpunkt der Figur verläuft. Angenommen, Ihr Polygon hat nur einen Innenraum (lesen Sie: ist nicht wie in Ihrem vierten Beispiel), sollten Sie zwei Punkte erhalten. Durchschnitt sie und du hast dein Zentrum.

    
tonewheel 21.12.2013 08:04
quelle

Tags und Links