Je dois faire un truc à priori assez simple, mais impossible d'y arriver. Le but est tout simplement de supprimer un rectangle d'un autre.
Donc si j'ai deux rectangles qui se superposent, je récupère l'intersection puis j'enlève l'intersection à un des deux Rectangles. Le résutat n'est pas forcément un Rectangle, dans ce cas, il faut décomposer la forme obtenue pour arriver au final à un ensemble de Rectangle.
Mon problème est principalement du au fait qu'une ligne est également un Rectangle, et qu'un point peut aussi être un Rectangle... Il faut donc être capable de supprimer cet ensemble d'élément d'un Rectangle. Le cas où on supprimne un Rectangle d'un Rectangle :
Au final, il nous reste donc deux rectangles distincts qui ne se superposent pas (le carré du dessous fini à x et le rectangle en dessus commence à x+1). C'est à dire que les bords ne se superposent pas non plus!
Il se situe dans le fait que l'intersection entre deux rectangles peut donner UN rectangle, DES rectangles, UNE ligne, voire même un point.
J'ai réussi à bricoler quelque chose qui marche, mais ça ne me plaît pas du tout. Je ne donne pas la solution car elle fait intervenir tout un tas d'autre class qui ne font pas partie du framework et comme je l'ai dit, la solution n'est certainement pas la meilleure !
Personnellement je traiterais chaque cas possible ( j'en vois 12 différents )
puis je ferais un test sur les nouveaux rectangles crées pour voir leur taille : si celle ci est de 1 pixel de haut ou de large c'est une ligne ou les 2 alors c'est un point.
Non y'en a bien plus que 12 et selon moi y'a une manière plus simple que de traiter chaque cas séparemment...
Si jamais je trouve une solution qui soit propre, je viendrai la donner.
Bon, j'ai trouvé une bonne solution, je donne quelques explications sur mon blog ainsi qu'une class qui permets de faire la décomposition en fichier attaché.