2011-03-31 5 views
5

Dado un estándar nested circular treemap, ¿cómo se calcula dónde colocar los círculos?¿Cuál es el algoritmo para trazar una circular TreeMap?

+2

¿Ha mirado [aquí] (http://en.wikipedia.org/wiki/Treemapping#The_tiling_algorithm)? y [aquí] (http://www.jsoftware.com/jwiki/Treemap/Algorithms)? Además, ¿está posiblemente relacionado con esta [pregunta] (http://stackoverflow.com/questions/5371869/venn-diagram-generation-software-from-rcc8-specification-or-similar)? – MarcoS

+1

+1 @MarcoS. Además, [aquí] (http://www.randelshofer.ch/treeviz/) es una implementación en Java (con código fuente) – CMR

Respuesta

1

Su problema principal se puede describir así: "Given a set of circles of varying radius, how does one place them within a larger circle, so that none of them overlap".

Es un problema difícil, pero aquí es una solución de fuerza bruta para empezar:

  1. Ordenar los círculos de tamaño
  2. Coloque el círculo más grande en el borde interior del círculo delimitador
  3. Para el resto de los círculos (r1), haga lo siguiente:
    1. iterar sobre todos los pares de ya colocados círculos (R2, R3) (incluyendo la exterior)
    2. Encuentra la (uno o dos) puntos que tienen la distancia r1 + r2 al primer círculo y r1 + r3 al segundo círculo.
    3. Intenta colocar el nuevo círculo aquí.

los usos anteriores, la observación de que en un embalaje perfecto, cada círculo debe bordear a por lo menos otros dos círculos. Puede usar el algoritmo para proporcionar una búsqueda completa, o simplemente puede iterar aleatoriamente y elegir con avidez el primer lugar disponible.

Cuestiones relacionadas