Aquí está mi problema:
- Tengo un montón de círculos que tengo que mostrar dentro de un lienzo.
- Hay un número arbitrario de círculos, cada uno con una plantilla predefinida de radio.
- La suma del área de los círculos es siempre menor que el área del lienzo.
Quiero posición de los círculos para que tengan el máximo de espacio disponible en el interior del lienzo, sin tocarse.
Aquí está un ejemplo de lo que estoy tratando de lograr:
Estoy seguro acerca de cómo modelar el algoritmo para resolver este problema. Específicamente, no entiendo que función(s) que necesita para maximizar encontrar el máximo de la "global" inter-círculo función de distancia. Ni siquiera estoy seguro de si ese es el criterio de maximizar la consecución de un "equilibrado".
Mi primera "fuerza bruta" la idea fue la siguiente:
- Para cada uno de los círculos:
- Calcular las distancias más cortas entre su borde y cada uno de los otros del círculo de la frontera.
- La suma de todas estas distancias (llamada que X).
- Calcular la suma de todos los círculos " X.
- Cambiar aleatoriamente las distancias entre los círculos, con la restricción de que no pueden tocar el uno al otro.
- Rehacer 1-3 para un número predeterminado de iteraciones y el máximo valor obtenido en el paso (2).
Sin embargo, esto no parece "elegante" desde una perspectiva matemática; estoy seguro de que hay una mejor manera de hacerlo. También, idealmente, los resultados podrían ser determinista (es decir, los mismos de entrada siempre produce la misma salida), que no puede ser llevado a cabo con este método. Podría alguien me apunte en la dirección correcta?