Từ Wikipedia :
Trọng tâm của một đa giác khép kín không tự giao nhau được xác định bởi n đỉnh ( x 0 , y 0 ), ( x 1 , y 1 ), ..., ( x n - 1 , y n 1 ) là điểm ( C x , C y ), trong đó
và ở đâu A là khu vực đã ký của đa giác,
Trong các công thức này, các đỉnh được giả sử được đánh số theo thứ tự xuất hiện dọc theo chu vi của đa giác. Hơn nữa, đỉnh ( x n , y n ) được giả sử giống với ( x 0 , y 0 ), nghĩa là i + 1 trong trường hợp cuối cùng phải lặp lại với i = 0 . Lưu ý rằng nếu các điểm được đánh số theo thứ tự theo chiều kim đồng hồ, khu vực A , được tính như trên, sẽ có dấu âm; nhưng tọa độ centroid sẽ đúng ngay cả trong trường hợp này.
- Đưa ra một danh sách các đỉnh theo thứ tự (theo chiều kim đồng hồ hoặc ngược chiều kim đồng hồ), tìm tâm của đa giác khép kín không tự giao nhau được biểu thị bởi các đỉnh.
- Nếu nó hữu ích, bạn có thể giả sử đầu vào chỉ là CW hoặc chỉ CCW. Nói như vậy trong câu trả lời của bạn nếu bạn yêu cầu điều này.
- Các tọa độ không bắt buộc phải là số nguyên và có thể chứa các số âm.
- Đầu vào sẽ luôn hợp lệ và chứa ít nhất ba đỉnh.
- Các đầu vào chỉ cần được xử lý phù hợp với kiểu dữ liệu dấu phẩy động gốc của ngôn ngữ của bạn.
- Bạn có thể cho rằng các số đầu vào sẽ luôn chứa một dấu thập phân.
- Bạn có thể giả sử rằng số nguyên đầu vào kết thúc bằng
.
hoặc.0
. - Bạn có thể sử dụng số phức cho đầu vào.
- Đầu ra phải chính xác đến một phần nghìn gần nhất.
Ví dụ
[(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
Quá nhìn thấy từng đa giác trên mặt phẳng tọa độ, dán tọa độ mà không có dấu ngoặc vuông trong menu "Chỉnh sửa" của trang này .
Tôi đã xác nhận kết quả của mình bằng Máy tính điểm đa giác Centroid này , điều này thật tồi tệ. Tôi không thể tìm thấy một cái mà bạn có thể nhập tất cả các đỉnh cùng một lúc, hoặc nó không cố xóa -
dấu hiệu của bạn khi bạn nhập nó trước. Tôi sẽ đăng giải pháp Python của tôi để bạn sử dụng sau khi mọi người có cơ hội trả lời.
x
s và y
s đặt tất cả trọng lượng vào các đỉnh thay vì phân bố trên cơ thể. Cách thứ nhất xảy ra vì nó là thường xuyên, vì vậy cả hai phương pháp đều kết thúc tại trung tâm đối xứng. Cách thứ hai hoạt động vì đối với tam giác cả hai phương pháp đều dẫn đến cùng một điểm.