Cada polígono tiene, como mínimo, cuatro "centros" distintos:
-
El baricentro de sus vértices.
-
El baricentro de sus bordes.
-
Su baricentro como polígono.
-
Un "centro" específico del SIG útil para el etiquetado (normalmente calculado con métodos propietarios no documentados).
(Pueden coincidir accidentalmente en casos especiales, pero para los polígonos "genéricos" son puntos distintos).
Un "baricentro" en general es un "centro de masa". Los tres tipos difieren en cuanto al lugar en el que se supone que se encuentra la masa: o bien está enteramente en los vértices, repartida uniformemente en los bordes, o repartida uniformemente en el propio polígono.
Existen métodos sencillos para calcular los tres baricentros. Un método se basa en el hecho básico de que el baricentro de la unión disjunta de dos masas es la media total ponderada de los baricentros. De aquí se obtiene fácilmente lo siguiente:
-
El baricentro de dos vértices (igualmente ponderados) es su media. Se obtiene promediando sus coordenadas por separado. Geométricamente, es el punto medio del segmento de línea que une los dos vértices.
-
Inductivamente, el baricentro de n vértices (igualmente ponderados) se obtiene promediando sus coordenadas por separado.
-
El baricentro de un segmento de línea es su punto medio. (Esto está claro por simetría).
-
El baricentro de una polilínea se obtiene encontrando los puntos medios de cada segmento de línea y luego formando su media ponderada utilizando las longitudes de los segmentos como pesos.
Por ejemplo, considere la forma de "L" delineada por los puntos (0,0), (6,0), (6,12). Hay dos segmentos: uno de longitud 6 con punto medio en ( (0+0)/2, (0+6)/2 ) = (3,0) y otro de longitud 12 con punto medio en ( (6+6)/2, (0+12)/2 ) = (6,6). Sus coordenadas medias ponderadas por la longitud son, por tanto, (x,y) con
x = (6*3 + 12*6) / (6+12) = 5, y = (6*0 + 12*6) / (6+12) = 4.
Esto difiere del baricentro de los tres vértices, que es ( (0+6+6)/3, (0+0+12)/3 ) = (4,4).
( Editar Como otro ejemplo, considere la figura de la pregunta, que aunque tiene forma cuadrada, se representa como un pentágono determinado por la secuencia de puntos (0,0), (1/2,0), (1,0), (1,1), (0,1). Los cinco lados tienen longitudes 1/2, 1/2, 1, 1, 1 y puntos medios (1/4,0), (3/4,0), (1,1/2), (1/2,1) y (0,1/2), respectivamente. Por tanto, su media ponderada es igual a
[(1/2)*(1/4, 0) + (1/2)*(3/4, 0) + (1)*(1, 1/2) + (1)*(1/2, 1) + (1)*(0, 1/2)] / (1/2+1/2+1+1+1)
= (2/4, 2/4) = (0.5, 0.5)
como cabría esperar, aunque el baricentro de los vértices por sí solo (calculado como en el punto 2 anterior) es (0,5, 0,4).
-
El baricentro de un polígono se puede obtener por triangulación para descomponerlo en triángulos. El baricentro de un triángulo-cuatropolígono coincide con el baricentro de sus vértices. La media ponderada de estos baricentros es el baricentro del polígono. Las áreas de los triángulos se calculan fácilmente en función de las coordenadas de sus vértices (por ejemplo, en función del producto de cuña de dos de los lados). Para ver una ilustración de este tipo de cálculos de área, incluida la forma de aprovechar las áreas con signo (positivo o negativo), véase la sección sobre "Área" en mi (antiguo) página de notas del curso .
( Editar Consideremos, por ejemplo, el polígono representado en la pregunta. Podríamos triangularlo con los triángulos ((0,0), (1/2,0), (0,1)) a la izquierda, ((0,1), (1/2,0), (1,1)) en el centro, y ((1,1), (1,0), (1/2,0)) a la derecha. Sus áreas son 1/4, 1/2, 1/4 respectivamente y sus baricentros -obtenidos promediando sus vértices- son (1/6,1/3), (1/2,2/3) y (5/6,1/3), respectivamente. La media ponderada de estos baricentros es igual a
[(1/4)*(1/6,1/3) + (1/2)*(1/2,2/3) + (1/4)*(5/6,1/3)] / (1/4 + 1/2 + 1/4)
= (12/24, 6/12)
= (0.5, 0.5)
como debería, a pesar de la presencia de ese quinto vértice en el borde inferior).
Es evidente que cada uno de estos métodos es eficiente : requiere una sola pasada sobre la representación "espagueti" del polígono, utilizando un tiempo constante (bastante pequeño) en cada paso. Nótese que en todos los casos, excepto el primero (de vértices puros), más Se necesita más información que una simple lista de coordenadas de vértices: también es necesario conocer la topología de la figura. En el ejemplo de la "L", necesitábamos saber que (0,0) estaba conectado a (6,0) y no a (6,12), por ejemplo.
Todos estos son conceptos euclidianos. Pueden extenderse a la esfera (o elipsoide) de varias maneras. Una de ellas es considerar los rasgos como un complejo simplicial en tres dimensiones (euclidianas), calcular el baricentro correspondiente y proyectarlo desde el centro del elipsoide hasta la superficie. Esto no requiere nuevos conceptos ni fórmulas; sólo hay que trabajar con una tercera coordenada (z) además de las dos primeras. (Las áreas son todavía encontrados utilizando longitudes de productos en cuña).
Otra generalización reconoce que la métrica euclidiana -la raíz cuadrada de una suma de cuadrados, según Pitágoras- puede cambiarse por otras Métricas Lp para p >= 1: se toma la raíz p de la suma de las potencias p. Encontrar los "baricentros" adecuados ya no es tan sencillo, porque las bellas propiedades aditivas explotadas anteriormente (los baricentros son medias ponderadas de baricentros de partes más simples de una figura) ya no se mantienen en general. A menudo hay que obtener soluciones numéricas aproximadas e iterativas. Puede que ni siquiera sean únicas.
Se pueden definir centros adicionales para diversos fines. Los triángulos tienen muchos centros diferentes que pueden generalizarse (en cierto modo) a los polígonos: el centro de la circunferencia, el centro de (alguna) incircunferencia máxima, el centro de una elipse de área mínima, y otros. Cualquier conjunto puede encerrarse en varios "cascos", como el casco convexo, y obtener los centros de esos cascos.
Tenga en cuenta que muchos de estos "centros" no están necesariamente situados en el interior de un polígono. (Cualquier centro razonable de un convexo Sin embargo, el polígono estará en su interior).
Esta variedad de enfoques y soluciones indica que hay que desconfiar de un término genérico como "centro de geometría" o simplemente "centro": podría ser casi cualquier cosa.
0 votos
¿Funcionará esto? ¿Cómo encontrar el centro de un polígono? (StackOverflow)
3 votos
No estoy seguro de cuál es su pregunta. El centro de geometría o (normalmente el centroide) puede ser diferente del baricentro (centro de masa). Esto es un hecho bien conocido. También hay varias maneras de calcular el centro de una geometría. Ver: es.wikipedia.org/wiki/Triangle_center , es.wikipedia.org/wiki/Enciclopedia_de_los_Centros_Triangulares & faculty.evansville.edu/ck6/encyclopedia/ETC.html .
0 votos
He añadido una actualización para aclararlo.
0 votos
@blah238 Eso es lo que acabo de codificar similar (en Python) utilizando la fórmula dada en la página de Wikipedia para el polígono. No estoy seguro de que es correcto también para mi problema explicado anteriormente. También recordar que es sólo para polígonos 2D.
1 votos
Sobre la actualización: cuando no hay topología, una nube de puntos es sólo una nube de puntos. Tu figura de un cuadrado poligonal no es aplicable (y tu "centroide" de (0,5,0,4) no parece surgir de ninguna fórmula estándar, por cierto: la simetría aboga fuertemente por cualquier punto central del cuadrado para que coincida con (0,5,0,5), independientemente de cómo se defina). Para algunas ideas sobre la búsqueda de ubicaciones representativas o centrales para las nubes de puntos en dos y más dimensiones, consulte stats.stackexchange.com/questions/1927 .
0 votos
Tampoco entiendo cómo se ha obtenido el "centro de masa" (0,5, 0,4), a no ser que los vértices estén ponderados de forma desigual y no se haya anotado ese hecho.
0 votos
@blah238 Es un simple promedio de coordenadas para los cinco puntos.
0 votos
@whuber El método que uso ahora es encontrar un casco convexo de los puntos como en el ejemplo dado. Luego aplicar el centroide para el polígono producido como en la Wikipedia. Estoy pensando en algo similar en 3D. Como se mencionó mi interés es un centro (geométrico) = centroide.
0 votos
Desarrollador, (1) El enfoque de casco convexo que propones es la base de muchos de los que se discuten en el enlace que publiqué antes. Eso demuestra que es legítimo y que puede ser explotado de varias maneras si lo deseas. Tenga en cuenta, sin embargo, que no es un baricentro de los puntos. (2) Creo que la coordenada 0,4 para su centro de masa puede ser un error numérico: la media de las coordenadas y es (1+1+0+0)/4 = 1/2 = 0,5. En cualquier rectángulo los tres baricentros descritos en mi respuesta siempre coinciden y se encuentran en la intersección de los ejes de simetría del rectángulo (su centro visual evidente).
1 votos
@Desarrollador, ahora veo tu punto, tu 5º punto en la parte inferior del "rectángulo" (en realidad un polígono) hace que un simple promedio de coordenadas de vértices arroje un baricentro diferente al de un polígono como explica la respuesta de whuber.
1 votos
Aha! Se me pasó por completo ese quinto vértice, aunque había estado buscando algo así. Para ayudar a los futuros lectores, he hecho una pequeña modificación en la pregunta para señalarlo. Esto realmente llega al corazón de la cuestión, también: la inserción o eliminación de vértices a lo largo de los bordes va a cambiar cómo un poly{line,gon} es representado pero no debería cambiar el cálculo de sus propiedades geométricas innatas. Por ello, el baricentro de los vértices puede tener una relación casi arbitraria con los baricentros de un polígono o su frontera.