Resumen: En teoría, esto se puede hacer en tiempo O (n). En la práctica, puedes hacerlo en el tiempo O (n log n).
Diagramas de Voronoi generalizados.
Si considera los vértices y los bordes del polígono como un conjunto de sitios y tesela el interior en las "celdas vecinas más cercanas", obtendrá el diagrama de Voronoi (generalizado). El diagrama de Voronoi consiste en nodos y bordes que los conectan. La autorización de un nodo es la distancia a sus caras de polígono definitorias.
(Aquí el polígono incluso tiene agujeros;. El principio todavía funciona)
La observación clave ahora es que el centro del círculo máximo inscrito toca tres caras (vértices o bordes) del polígono, y ninguna otra cara puede estar más cerca. Por lo tanto, el centro debe ubicarse en un nodo Voronoi, es decir, el nodo con la mayor separación.
En el ejemplo anterior, el nodo que marca el centro del círculo máximo inscrito toca dos bordes y un vértice del polígono.
El eje medial, por cierto, es el diagrama de Voronoi con los bordes de Voronoi eliminados que emanan de los vértices reflejos. Por lo tanto, el centro del círculo inscrito máximo también se encuentra en el eje medial.
Fuente: A blog article mía que se ocupa de las generalizaciones de círculos inscritos máximos en algún momento.Allí puedes encontrar más sobre los diagramas de Voronoi y su relación con los círculos inscritos máximos.
Algoritmos & implementaciones.
En realidad, se puede calcular el diagrama de Voronoi. El algoritmo O (n log n) del caso más desfavorable para puntos y segmentos está dado por Fortune, . Algoritmo de línea de barrido para los diagramas de Voronoi, SoCG'86. Held publicó el paquete de software Vroni con una complejidad de tiempo O (n log n) esperada, que en realidad calcula también el círculo máximo inscrito. Y parece haber una implementación en boost, también.
para polígonos simples (es decir, sin agujeros) un algoritmo de tiempo óptimo que se ejecuta en O (n) de tiempo se debe a Chin et al., Finding the Medial Axis of a Simple Polygon in Linear Time, 1999.
fuerza bruta.
Sin embargo, como dijiste que estás bien con un algoritmo de fuerza bruta: ¿qué tal si simplemente probamos todos los trillizos de sitios (vértices y bordes). Para cada tripleta, se encuentran nodos ganadores de Voronoi, es decir, loci equidistantes para los tres sitios y se comprueba si cualquier otro sitio se cruza con el círculo inscrito máximo candidato. Si hay una intersección, descarta al candidato. Tome lo mejor que pueda encontrar sobre todos los trillizos.
Consulte el capítulo 3 en mi Master thesis para obtener más información sobre la computación de loci equidistantes para tres sitios.
Solo para tener en cuenta, "en tiempo real" no representa la velocidad. En tiempo real significa que el tiempo para obtener el resultado se puede predecir con precisión (hasta un punto predefinido) – Neowizard
¿Presumiblemente estos no son polígonos regulares? –
@JonB Correcto, esto debería funcionar para polígonos cóncavos. – Plow