Dudo que es mejor solución que el cálculo de la distancia entre el rojo y cada uno azul y clasificación de éstos por la longitud.
En cuanto a la clasificación, generalmente QuickSort es difícil de superar en rendimiento (uno optimizado, que interrumpe la recursividad si el tamaño es inferior a 7 elementos y cambia a algo como InsertionSort, tal vez ShellSort).
Por lo tanto, supongo que la pregunta es cómo calcular rápidamente la distancia entre dos polígonos, después de todo, es necesario hacer este cálculo 50 veces.
El siguiente enfoque funcionará para 3D, así, pero probablemente no es el más rápido:
Minimum Polygon Distance in 2D Space
La pregunta es, ¿está dispuesto a negociar la precisión de la velocidad? P.ej. puede empaquetar todos los polígonos en cajas delimitadoras, donde los lados de los recuadros son paralelos a los ejes del sistema de coordenadas. Los juegos 3D usan este enfoque con bastante frecuencia. Por lo tanto, necesita encontrar los valores máximos y mínimos para cada coordenada (x, y, z) para construir el cuadro delimitador virtual. Calcular las distancias de estos cuadros delimitadores es una tarea bastante trivial.
Aquí está una imagen ejemplo de cuadros delimitadores más avanzados, que no son paralelos a los ejes del sistema de coordenadas:
Oriented Bounding Boxes - OBB
Sin embargo, esto hace que el cálculo de la distancia menos trivial. Se utiliza para la detección de colisiones, ya que no necesita conocer la distancia para eso, solo necesita saber si un borde de un cuadro delimitador se encuentra dentro de otro cuadro delimitador.
La siguiente imagen muestra un cuadro delimitador alineado ejes:
Axes Aligned Bounding Box - AABB
oobs son más precisos, AABBs son más rápidos. Tal vez le gustaría leer este artículo:
Advanced Collision Detection Techniques
Esto siempre es suponiendo, que está dispuesto a negociar la precisión para la velocidad. Si la precisión es más importante que la velocidad, es posible que necesite una técnica más avanzada.
Por favor, refine: ¿quiere decir camino más corto a través del espacio vacío, o simplemente la distancia cartesiana? –
¿Qué es "espacio geográfico"? 3D? 2D? – moswald
¿Quiere decir algún punto en el polígono o un vértice específico en cada polígono? –