De Wikipedia :
El centroide de un polígono cerrado sin intersección propia definido por n vértices ( x 0 , y 0 ), ( x 1 , y 1 ), ..., ( x n - 1 , y n − 1 ) es el punto ( C x , C y ), donde
y donde A es el área firmada del polígono,
En estas fórmulas, se supone que los vértices están numerados en orden de ocurrencia a lo largo del perímetro del polígono. Además, se supone que el vértice ( x n , y n ) es el mismo que ( x 0 , y 0 ), lo que significa que i + 1 en el último caso debe girar alrededor de i = 0 . Tenga en cuenta que si los puntos están numerados en el sentido de las agujas del reloj, el área A , calculada como se indica arriba, tendrá un signo negativo; pero las coordenadas del centroide serán correctas incluso en este caso.
- Dada una lista de vértices en orden (ya sea en sentido horario o en sentido antihorario), encuentre el centroide del polígono cerrado que no se cruza automáticamente representado por los vértices.
- Si ayuda, puede suponer que la entrada es solo CW o solo CCW. Dígalo en su respuesta si necesita esto.
- No se requiere que las coordenadas sean números enteros, y pueden contener números negativos.
- La entrada siempre será válida y contendrá al menos tres vértices.
- Solo es necesario manejar las entradas que se ajusten al tipo de datos de punto flotante nativo de su idioma.
- Puede suponer que los números de entrada siempre contendrán un punto decimal.
- Puede suponer que los enteros de entrada terminan en
.
o.0
. - Puede usar números complejos para la entrada.
- La salida debe ser precisa a la milésima más cercana.
Ejemplos
[(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
Para ver cada polígono en un plano de coordenadas, pegue las coordenadas sin los corchetes en el menú "Editar" de esta página .
Confirmé mis resultados usando esta calculadora de puntos de centroide poligonal , que es horrible. No pude encontrar uno en el que pueda ingresar todos los vértices a la vez, o que no intentara borrar su -
signo cuando lo escribe primero. Publicaré mi solución Python para su uso después de que las personas hayan tenido la oportunidad de responder.
x
s y y
s pone todo el peso en los vértices en lugar de distribuida sobre el cuerpo. El primero funciona porque es regular, por lo que ambos métodos terminan en el centro de simetría. El segundo funciona porque para los triángulos ambos métodos conducen al mismo punto.