cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 2013
-
28 sept. 2006 à 17:12
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 2013
-
10 oct. 2006 à 10:45
Bonjour à tous,
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!
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201360 30 sept. 2006 à 22:18
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 !
MoDDiB
Messages postés546Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention 4 mai 20071 1 oct. 2006 à 14:08
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.
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201360 1 oct. 2006 à 19:49
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.
<hr size="2" />VC# forever
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201360 10 oct. 2006 à 10:45
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é.