Tengo un número de rectángulos posiblemente superpuestos, de tamaño y posición aleatorios dentro de un plano fijo. Dado que estos rectángulos son aleatorios, algunos no pueden superponerse:minimizando la superposición en rectángulos aleatorios
|----- | | |----| |----| | | |----|
Algunos pueden solaparse con sólo una esquina:
|-----| | |--|--| |--|--| | |-----|
Algunos pueden estar contenidos dentro de otro rectángulo:
|----------------| | | | |-----| | | | | | | |-----| | |----------------|
Algunos pueden pasar a través de otro rectángulo:
|----------------| | | |--|-------------------| | | | | |--|-------------------| |----------------|
etc.
Estoy tratando de encontrar un algoritmo que me proporcione un conjunto de rectángulos que representen la misma área que el conjunto de entrada, pero sin superposición. Algunos casos son obvios: los rectángulos que se encuentran dentro de un rectángulo más grande se pueden descartar, y los rectángulos que se superponen en una esquina se pueden dividir en tres rectángulos, al igual que los rectángulos que pasan a través de otro rectángulo. Lo que estoy buscando, es un algoritmo genérico que se ocupa de todos estos casos. No me importa mucho si no es brillantemente eficiente - el conjunto de entrada es bastante pequeño (25 rectángulos como máximo)
Encontrar rectángulos que se superponen es fácil, pero se vuelve más difícil a partir de ahí, especialmente cuando se considera un rectángulo puede superponerse con muchos otros rectángulos.
Esto me está metiendo la cabeza. ¿Alguna sugerencia?
Actualización:
me he dado cuenta de una cosa más:
que puede ejecutar este algoritmo en el momento en que los rectángulos se añaden tot puso, uno a uno, o después de todos los rectángulos Ha sido agregado. Puede ser más fácil hacerlo a medida que se agregan los rectángulos, ya que solo tiene que considerar un rectángulo, pero aún necesita tener en cuenta la situación en la que un solo rectángulo se superpone a otros muchos rectángulos.
Buena solución - Creo que la "rectificación" puede ser el camino hacia adelante. – Thomi
Gracias - el gran avance para mí fue pensar en el problema como una grilla de celdas: una vez que lo tienes, es fácil enviar rectángulos que están solo en la grilla. – Thomi