¿Determinar el segmento de línea más largo dentro del polígono que pasa a través de su centroide?

8

Un estudiante de doctorado se me acercó recientemente y me preguntó cómo se determinaría la línea recta más larga que pasa por el centroide de un polígono, siendo la salida una polilínea en lugar de una simple tabla de números. La polilínea estaría dentro del polígono comenzando en el borde en un extremo, pasando por el centroide, y luego terminaría en el borde opuesto.

¿Alguien sabe cómo calcular esto?

Me sorprende (pero supongo que estoy mostrando mi ignorancia) que esta no es una interfaz en ArcObjects.

El polígono representa el borde del cráter de un volcán sin islas, por lo que el polígono puede tener una forma irregular.

Hornbydd
fuente

Respuestas:

11

Un algoritmo de barrido radial funcionará bien, Duncan. Tenga en cuenta que el centroide puede estar fuera del polígono, por lo que no existirá ninguna solución en tales casos. Observe también que esta construcción es extraña: mientras que el centroide es una propiedad global del polígono, la línea que está construyendo es una propiedad local del polígono en la vecindad de este centroide. La combinación no tiene sentido para la mayoría de los análisis geométricos o físicos en los que el polígono posiblemente no sea convexo o no tenga forma de estrella con respecto a su centroide. (Esto explica por qué no lo encontrará en ArcObjects ni, probablemente, en ningún otro lugar). Puede preguntar más profundamente al alumno para averiguar qué está intentando hacer con esta construcción para asegurarse de que cumple con el propósito previsto. .

whuber
fuente
1
¡Guau, gracias por la mega respuesta rápida! Ambos me han dado algunas palabras clave para buscar. "Barrido radial" suena complejo ...
Hornbydd
Tenga en cuenta también que hay polígonos donde no hay "la línea recta más larga"; en cambio, puede haber muchas líneas posibles. [[Además, apuesto $ 1 a que el estudiante en cuestión está diseñando una (s) encuesta (s) transect.]]
Dan S.
@ Hornbydd: Hay complejo, y hay complejo. Implementar un barrido radial no es demasiado difícil en lo que respecta a la geometría computacional, pero sumergirse en escribir código de geometría computacional por primera vez puede ser intimidante. Me encantaría escribir un pseudocódigo para usted si desea un punto de partida.
Dan S.
Dan, aprecio tu oferta, pero no soy el supervisor de los estudiantes, solo un tipo al azar con el que se había puesto en contacto. Aunque como desarrollador de SIG sería interesante ver un pseudocódigo para obtener la idea básica de un barrido radial, pero por favor no dediquen tiempo ya que ya me han dado algunos consejos, lo cual es muy apreciado.
Hornbydd
2
En una nota más clara, publiqué mi pregunta en este sitio, vi que la respuesta de Whuber se disparó e hizo un café, regresó, escribió en google "centroide de polígono de barrido radial" e inmediatamente regresé a esta página. ¿Cómo demonios Google encontró esta página tan rápido e integró en su búsqueda, la mente se aturde?
Hornbydd, el