Dari Wikipedia :
Centroid dari poligon tertutup yang tidak memotong sendiri didefinisikan oleh n simpul ( x 0 , y 0 ), ( x 1 , y 1 ), ..., ( x n - 1 , y n − 1 ) adalah titik ( C x , C y ), di mana
dan di mana A adalah area yang ditandatangani poligon,
Dalam rumus-rumus ini, simpul diasumsikan diberi nomor sesuai urutan terjadinya sepanjang garis poligon. Lebih jauh, simpul ( x n , y n ) diasumsikan sama dengan ( x 0 , y 0 ), artinya i + 1 pada kasus terakhir harus di-loop ke i = 0 . Perhatikan bahwa jika titik-titiknya diberi nomor searah jarum jam, area A , dihitung seperti di atas, akan memiliki tanda negatif; tetapi koordinat centroid akan benar bahkan dalam kasus ini.
- Diberikan daftar simpul secara berurutan (baik searah jarum jam, atau berlawanan arah jarum jam), cari pusat massa dari poligon tertutup yang tidak memotong sendiri yang diwakili oleh simpul tersebut.
- Jika ini membantu, Anda dapat menganggap input hanya CW, atau hanya CCW. Katakan demikian dalam jawaban Anda jika Anda memerlukan ini.
- Koordinat tidak harus berupa bilangan bulat, dan dapat berisi angka negatif.
- Input akan selalu valid dan mengandung setidaknya tiga simpul.
- Input hanya perlu ditangani yang sesuai dengan tipe data floating point asli bahasa Anda.
- Anda dapat berasumsi bahwa angka input akan selalu mengandung titik desimal.
- Anda dapat mengasumsikan bahwa bilangan bulat input diakhiri dengan
.atau.0. - Anda dapat menggunakan angka kompleks untuk input.
- Output harus akurat hingga seperseribu terdekat.
Contohnya
[(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
Lihat juga setiap poligon pada bidang koordinat, tempelkan koordinat tanpa tanda kurung siku di menu "Edit" halaman ini .
Saya mengkonfirmasi hasil saya menggunakan Polygon Centroid Point Calculator ini , yang mengerikan. Saya tidak dapat menemukan satu yang dapat Anda masukkan semua simpul sekaligus, atau yang tidak mencoba menghapus -tanda Anda saat Anda mengetiknya terlebih dahulu. Saya akan memposting solusi Python saya untuk Anda gunakan setelah orang memiliki kesempatan untuk menjawab.
xs dan ys menempatkan semua bobot dalam simpul alih-alih didistribusikan ke seluruh tubuh. Yang pertama berhasil karena itu teratur, sehingga kedua metode berakhir di pusat simetri. Yang kedua berfungsi karena untuk segitiga kedua metode mengarah ke titik yang sama.

