1 votos

Centro de gravedad de un polígono irregular que se interseca a sí mismo

Intento calcular el centro de gravedad de un polígono.

Mi problema es que necesito poder calcular el centro de gravedad tanto de los polígonos regulares como de los irregulares e incluso de los polígonos que se auto intersecan.

¿Es eso posible?

También he leído que: http://paulbourke.net/geometry/polyarea/ Pero esto se limita a los polígonos que no se intersectan entre sí.

¿Cómo puedo hacerlo? ¿Puede indicarme la dirección correcta?

Subpregunta: ¿Importará si los nodos no están en orden? si por ejemplo tienes una forma cuadrada y nombras el punto superior derecho (X1Y1) y luego el punto inferior derecho (X3Y3)?

En otras palabras, si tu forma es como 4-1-2-3 (nombrando los nodos de izquierda a derecha de arriba a abajo)

Nota: Puede que sea una pregunta estúpida, pero no soy estudiante de matemáticas ni nada por el estilo.

Gracias

1voto

JiminyCricket Puntos 143

Creo que tu mejor opción será convertir el polígono autointerseccionado en un conjunto de polígonos no autointerseccionados y aplicar el algoritmo que enlazaste a cada uno de ellos. No creo que sea posible resolver tu problema sin encontrar las intersecciones, y si tienes que encontrar las intersecciones de todos modos, el esfuerzo adicional de usarlas como nuevos vértices en una lista de vértices reordenada es pequeño comparado con el esfuerzo de encontrarlas.

Para responder a su subpregunta: Sí, el orden de los nodos sí importa, especialmente si se permite que el polígono se auto-intersecte ya que en ese caso el orden es una parte esencial de la especificación del polígono y diferentes órdenes especifican diferentes polígonos -- por ejemplo, el "cuadrado" con el orden que describes sería el polígono del lado derecho de los dos ejemplos de polígonos auto-interseccionados que da la página que enlazaste (girado por $\pi/2$ ).

P.D.: Acabo de darme cuenta de que diferentes órdenes también pueden especificar diferentes polígonos no autointerseccionados (pero no convexos), así que el único caso en el que podrías especificar un polígono sólo por sus vértices es si sabes que es convexo. Pero incluso en ese caso tienes que usar los vértices en el orden correcto en el algoritmo que enlazaste.

0voto

Esto no funciona para polígonos irregulares como los siguientes: X Y 3 0 3 50 0 50 0 56 3 80 28 80 28 0 3 0

-2voto

CodingBytes Puntos 102

Si se le da sólo una lista de puntos $z_i=(x_i, y_i)$ $\>(1\leq i\leq n)$ entonces no es inmediato cómo estos puntos deben determinar un determinado polígono. Tal vez usted quiere que el casco convexo $C$ de estos puntos. Hay algoritmos que aceptan su lista como entrada y producen una segunda lista $(w_i)_{1\leq i\leq m}$ (un subconjunto del $z_i$ ) que contiene las esquinas de $C$ en orden contrario a las agujas del reloj. Usando esta segunda lista se puede calcular el área y el centroide de $C$ mediante las fórmulas indicadas en la fuente citada.

Estas fórmulas provienen de una aplicación del teorema de Green a $C$ y su límite $\partial C$ . Dice lo siguiente: $${\rm area}(C)={1\over2}\int_{\partial C}(x\,dy- y\,dx).$$ Si se aplica esta fórmula a una curva cerrada arbitraria, como, por ejemplo, la curva lineal a trozos $\gamma$ determinado por el original $z_i$ se obtienen resultados muy extraños: Cada parte encerrada por $\gamma$ se cuenta tantas veces como se rodea en sentido contrario a las agujas del reloj por $\gamma$ .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X