Où irais-je chercher des algorithmes qui prennent une grille 2d de valeurs qui sont soit 0 ou 1 en entrée, puis identifient tous les rectangles possibles qui ne se chevauchent pas? Dans une explication plus pratique: je dessine une grille qui est représentée par un certain nombre de carrés, et je souhaite trouver un moyen de combiner autant de carrés adjacents en rectangles que possible, afin de réduire le temps dépensé pour faire du vélo à travers chaque carré et le dessiner.Comment diviser une zone composée de petits carrés en rectangles plus grands?
Une efficacité maximale n'est pas nécessaire, la vitesse est plus importante.
Addendum: Apparemment, ce que je cherche semble être une technique appelée Tesselation. Maintenant, j'ai juste besoin de trouver une bonne description pour ce cas particulier.
Addendum 2: La limite des carrés "1" sera irrégulière et dans certains cas même pas connectée, car la distribution de "1" carrés sera complètement aléatoire. J'ai besoin que ces formes irrégulières soient identifiées et divisées en rectangles réguliers. Pour obtenir le meilleur équilibre entre vitesse et efficacité, il est optimal d'utiliser les données de la grille pour remplir un quad-tree avec chaque noeud ayant une valeur de statut vide/partiellement rempli/rempli.
« L'efficacité maximale est pas nécessaire, la vitesse est plus important." - Hein? Je suppose que vous voulez dire "Je ne veux pas le nombre minimum absolu de rectangles, juste quelque chose qui fait une bonne approximation, rapidement" ...? –
Oh, et avez-vous prouvé que faire du vélo à travers chaque carré est votre goulot d'étranglement? –
Concernant l'approximation, oui, ça. Je cherche essentiellement la solution la plus équilibrée en ce qui concerne l'efficacité par rapport à la vitesse. En outre, oui, je suis sûr à 100% que le cycle est le goulot d'étranglement dû au fait que Perl est beaucoup plus lent qu'OpenGL lui-même. – Mithaldu