La ubicación más cercana al punto estará en el punto o tocando un círculo.
por lo tanto, primero verifique el punto, luego gire el nuevo círculo alrededor del borde de cada círculo existente, calcule la distancia desde el punto y si se superpone a medida que avanza y realice un seguimiento del punto de distancia mínima. Detente cuando hayas atravesado todos los círculos.
es decir. verifique todos los puntos en las líneas verdes, más el círculo blanco. donde la línea verde es un círculo con radio del rojo más el azul
debe verificar toda la línea verde, no solo las intersecciones, de modo que cubra estos casos extremos.
Obviamente, el tamaño del paso de su recorrido será importante en términos de rendimiento. Pero como dice que el rendimiento no es un problema, elija el valor correspondiente a la resolución de su valor de salida. es decir, flotar, largo?
aclaración:
mi sugerencia es forzar la fuerza bruta en todos los puntos alrededor de cada círculo, probando la superposición con todos los otros círculos en cada punto. Sin inteligencia.
Si la foto de ejemplo es indicativa de la cantidad de círculos y la resolución, no debería ser un problema para una PC estándar
tenemos 20 círculos de radio promedio 200, por lo que es aproximadamente 20 * 2 π * 200 puntos * 20 pruebas de intersección = 4800000 iteraciones
Nota:
Los enfoques iterativos como este son defectuosos porque el tamaño de su paso, en este caso la resolución de su salida, puede afectar en gran medida el resultado.
Digamos que tengo dos círculos rojos separados por 2 píxeles y un círculo azul de 1 píxel de radio para apretar entre ellos. Claramente, con cualquiera de los dos píxeles como centro del círculo azul, se superpondrá a uno de los rojos. pero obviamente hay espacio para el círculo si el centro se encuentra entre los dos píxeles.
De ahí mi comentario preguntando sobre la resolución de la salida. lo que dijiste podría ser cualquier cosa.
También puede resolver la ecuación simultánea para cada par de círculos con un aumento del radio en el radio del círculo azul.
esto le dará los puntos donde el círculo azul tocará ambos círculos rojos con mayor precisión que la iteración.
Sin embargo. hay varias condiciones en las que si solo haces esto, obtienes la respuesta incorrecta o no respondes. es decir.
1 o sin círculos
2 o más círculos pero con el punto objetivo lejos y fuera de ellos.
muchos círculos pero con un punto objetivo cerca de la superficie