Voici une idée. Au lieu de créer chaque rectangle (x, y, width, height), les instancier avec (x1, y1, x2, y2), ou au moins l' ont interpréter ces valeurs étant donné la largeur et la hauteur.
De cette façon, vous pouvez vérifier quels rectangles ont une même xou la yvaleur et assurez - vous que le rectangle correspondant a la même valeur secondaire.
Exemple:
Les rectangles que vous avez donnés ont les valeurs suivantes:
- Square 1: [0, 0, 8, 3]
- Square 3: [0, 4, 8, 6]
- Square 4: [9, 0, 10, 4]
Tout d' abord, nous comparons Square 1à Square 3(pas de collision):
- Comparer les valeurs x
- [0, 8] à [0, 8] Ce sont exactement les mêmes, donc il n'y a pas de croisement.
- Comparer les valeurs y
- [0, 4] à [3, 6] Aucun de ces chiffres sont semblables, donc ils ne sont pas un facteur
, On compare à côté Square 3de Square 4(collision):
- Comparer les valeurs x
- [0, 8] [9, 10] Aucun de ces chiffres sont semblables, donc ils ne sont pas un facteur
- Comparer les valeurs y
- [4, 6] à [0, 4] Les rectangles ont le numéro 4 en commun, mais 0! = 6, donc il y a une collision
En savoir nous savons qu'une collision se produira, la méthode se terminera, mais permet d' évaluer Square 1et Square 4d' une certaine clarté supplémentaire.
- Comparer les valeurs x
- [0, 8] [9, 10] Aucun de ces chiffres sont semblables, donc ils ne sont pas un facteur
- Comparer les valeurs y
- [0, 3] à [0, 4] Les rectangles ont le nombre 0 en commun, mais 3! = 4, donc il y a une collision
Faites-moi savoir si vous avez besoin de détails supplémentaires :)