¿Dónde debería buscar algoritmos que toman una cuadrícula 2d de valores que son 0 o 1 como entrada y luego identifica todos los posibles rectángulos que no se superponen?¿Cómo dividir un área compuesta de cuadrados pequeños en rectángulos más grandes?
En una explicación más práctica: estoy dibujando una cuadrícula que está representada por un número de cuadrados, y deseo encontrar una manera de combinar tantos cuadrados adyacentes en rectángulos como sea posible, con el fin de reducir el tiempo dedicado a recorrer cada cuadrado y dibujarlo.
No se necesita la máxima eficiencia, la velocidad es más importante.
Adición: Aparentemente, lo que estoy buscando parece ser una técnica llamada Tesselation. Ahora solo necesito encontrar una buena descripción para este caso específico.
Addendum 2: El límite de los cuadrados "1" será irregular y en algunos casos ni siquiera se conectará, ya que la distribución de los cuadrados "1" será completamente aleatoria. Necesito que estas formas irregulares sean identificadas y divididas en rectángulos regulares.
Respuesta correcta: Para obtener el mejor equilibrio entre velocidad y eficiencia, es óptimo utilizar los datos de la cuadrícula para llenar un árbol cuádruple con cada nodo con un estado de vacío/parcialmente lleno/lleno.
"Máxima eficiencia no es necesario, la velocidad es más importante." - ¿Huh? Supongo que quiere decir "No quiero el número mínimo absoluto de rectángulos, solo algo que hace una buena aproximación, rápidamente" ...? –
Ah, ¿y ha demostrado que andar en bicicleta por cada cuadrado es su cuello de botella de rendimiento? –
En cuanto a la aproximación, sí, eso. Básicamente, estoy buscando la solución más equilibrada en lo que respecta a la efectividad frente a la velocidad. Además, sí, estoy 100% seguro de que el ciclismo es el cuello de botella debido a que Perl es mucho más lento que OpenGL. – Mithaldu