8 votos

El espacio de llenado con los círculos de radios desiguales

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:

Circles

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:

  1. 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).
  2. Calcular la suma de todos los círculos " X.
  3. Cambiar aleatoriamente las distancias entre los círculos, con la restricción de que no pueden tocar el uno al otro.
  4. 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?

1voto

Shar1z Puntos 148

Más rápido que la fuerza bruta idea, pero sólo una aproximación:

Coloque el círculo más grande en algún lugar, quizás $\frac{1}3$ de la forma de la esquina inferior izquierda. Delimitan un cuadrado a su alrededor. Encontrar el rectángulo de mayor área que se va a caber en el espacio restante y colocar el siguiente más grande de círculo con su centro en el centro de este rectángulo. Delimitan un cuadrado a su alrededor, a continuación, hacer lo mismo para el$3^{rd}$, el círculo más grande y continúe hasta que todos los círculos se han colocado.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X