Aus Wikipedia :
Der Schwerpunkt eines geschlossenen Polygons, das sich nicht selbst schneidet und durch n Eckpunkte ( x 0 , y 0 ), ( x 1 , y 1 ), ..., ( x n - 1 , y n - 1 ) definiert ist, ist der Punkt ( C x , C y ), an dem
und wo A die Fläche des Polygons ist,
In diesen Formeln wird angenommen, dass die Eckpunkte in der Reihenfolge ihres Auftretens entlang des Umfangs des Polygons nummeriert sind. Außerdem wird angenommen, dass der Scheitelpunkt ( x n , y n ) derselbe ist wie ( x 0 , y 0 ), was bedeutet, dass i + 1 im letzten Fall auf i = 0 umlaufen muss . Beachten Sie, dass der Bereich A , der wie oben berechnet wurde, ein negatives Vorzeichen hat , wenn die Punkte im Uhrzeigersinn nummeriert werden. Die Schwerpunktkoordinaten sind jedoch auch in diesem Fall korrekt.
- Suchen Sie anhand einer Liste von Eckpunkten in der angegebenen Reihenfolge (entweder im oder gegen den Uhrzeigersinn) den Schwerpunkt des geschlossenen Polygons, das sich nicht selbst schneidet und durch die Eckpunkte dargestellt wird.
- Wenn dies hilft, können Sie davon ausgehen, dass die Eingabe nur im Uhrzeigersinn oder nur im Gegenuhrzeigersinn erfolgt. Sagen Sie dies in Ihrer Antwort, wenn Sie dies benötigen.
- Die Koordinaten müssen keine ganzen Zahlen sein und können negative Zahlen enthalten.
- Die Eingabe ist immer gültig und enthält mindestens drei Eckpunkte.
- Es müssen nur Eingaben verarbeitet werden, die zum nativen Gleitkomma-Datentyp Ihrer Sprache passen.
- Sie können davon ausgehen, dass Eingabenummern immer einen Dezimalpunkt enthalten.
- Sie können davon ausgehen, dass ganze Zahlen mit
.oder enden.0. - Sie können komplexe Zahlen für die Eingabe verwenden.
- Die Ausgabe sollte auf das nächste Tausendstel genau sein.
Beispiele
[(0.,0.), (1.,0.), (1.,1.), (0.,1.)] -> (0.5, 0.5)
[(-15.21,0.8), (10.1,-0.3), (-0.07,23.55)] -> -1.727 8.017
[(-39.00,-55.94), (-56.08,-4.73), (-72.64,12.12), (-31.04,53.58), (-30.36,28.29), (17.96,59.17), (0.00,0.00), (10.00,0.00), (20.00,0.00), (148.63,114.32), (8.06,-41.04), (-41.25,34.43)] -> 5.80104769975, 15.0673812762
Um jedes Polygon in einer Koordinatenebene anzuzeigen, fügen Sie die Koordinaten ohne eckige Klammern in das Menü "Bearbeiten" dieser Seite ein .
Ich habe meine Ergebnisse mit diesem schrecklichen Polygon Centroid Point Calculator bestätigt . Ich habe keine gefunden, bei der Sie alle Scheitelpunkte gleichzeitig eingeben können oder bei der nicht versucht wurde, Ihr -Vorzeichen bei der ersten Eingabe zu löschen . Ich werde meine Python-Lösung für Sie bereitstellen, nachdem die Benutzer die Möglichkeit hatten, eine Antwort zu geben.
xs und ys wird das gesamte Gewicht auf die Scheitelpunkte verteilt und nicht über den Körper verteilt. Die erste Methode funktioniert zufällig, weil sie regelmäßig ist, sodass beide Methoden im Symmetriezentrum landen. Die zweite Methode funktioniert, weil bei Dreiecken beide Methoden zum gleichen Punkt führen.

