Problème avec des Rectangles

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 - 28 sept. 2006 à 17:12
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 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!

<hr size="2" />VC# forever

5 réponses

MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 1
28 sept. 2006 à 19:59
Et concretement le problème se situe où ?
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
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 !

<hr size="2" />VC# forever
0
MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 1
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.
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
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é.

<hr size="2" />VC# forever
0
Rejoignez-nous