ウィキペディアから:
n個の頂点(x 0、y 0)、(x 1、y 1)、...、(x n --1、y n-1)で定義される非自己交差閉多角形の重心は、ポイント(C x、C y)、ここで
また、Aはポリゴンの署名された領域です。
これらの式では、頂点には、ポリゴンの周囲に沿った出現順に番号が付けられていると想定されています。さらに、頂点(x n、y n)は(x 0、y 0)と同じであると想定されます。これは、最後のケースでi + 1がi = 0にループする必要があることを意味します。ポイントに時計回りに番号が付けられている場合、上記のように計算された領域Aは負の符号を持つことに注意してください。ただし、この場合でも重心座標は正確です。
- 頂点のリストを順番に(時計回りまたは反時計回りに)指定して、頂点によって表される自己交差しない閉じたポリゴンの重心を見つけます。
- 役立つ場合は、入力をCWのみ、またはCCWのみと想定することができます。これが必要な場合は、答えでそう言ってください。
- 座標は整数である必要はなく、負の数値を含む場合があります。
- 入力は常に有効で、少なくとも3つの頂点が含まれます。
- ご使用の言語のネイティブ浮動小数点データ型に適合する入力のみを処理する必要があります。
- 入力番号には常に小数点が含まれると想定できます。
- 入力整数は
.またはで終わると仮定できます.0。 - 入力には複素数を使用できます。
- 出力は、1000分の1単位で正確でなければなりません。
例
[(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
座標平面上の各ポリゴンが見えすぎる場合は、このページの[編集]メニューに角括弧なしで座標を貼り付けます。
このPolygon Centroid Point Calculatorを使用して結果を確認しましたたが、これはひどいです。すべての頂点を一度に入力できるもの、または-最初に入力したときに記号を消去しようとしないものは見つかりませんでした。人々が答える機会を得た後、あなたの使用のために私のPythonソリューションを投稿します。
xのsとysを平均化すると、体全体に分散するのではなく、頂点にすべてのウェイトが配置されます。最初の方法は規則的であるため機能するため、どちらの方法も対称中心になります。三角形の場合、両方の方法が同じポイントにつながるため、2番目の方法が機能します。

