Her er en idé. I stedet for å skape hvert rektangel med (x, y, width, height), instantiate dem med (x1, y1, x2, y2), eller i det minste har det tolke gitt bredde og høyde disse verdiene.
På den måten kan du sjekke hvilke rektangler har en lignende xeller yverdi og sørge for at den tilsvarende rektangelet har samme annenhåndsverdi.
Eksempel:
Rektanglene du har gitt har følgende verdier:
- Firkantet 1: [0, 0, 8, 3]
- Rute 3: [0, 4, 8, 6]
- Firkantet 4: [9, 0, 10, 4]
Først sammenligner vi Square 1til Square 3(ingen kollisjon):
- Sammenlign x-verdiene
- [0, 8] til [0, 8] Dette er nøyaktig det samme, så det er ingen overgang.
- Sammenlign y-verdier
- [0, 4] til [3, 6] Ingen av disse tallene er like, slik at de ikke er en faktor
Deretter sammenligner vi Square 3til Square 4(kollisjon):
- Sammenlign x-verdiene
- [0, 8] til [9, 10] Ingen av disse tallene er like, slik at de ikke er en faktor
- Sammenlign y-verdier
- [4, 6] til [0, 4] Rektanglene har nummer 4 i felles, men 0! = 6, er det derfor en kollisjon
Ved vet vi vet at en kollisjon vil skje, slik at metoden vil ende, men lar evaluere Square 1og Square 4for litt ekstra klarhet.
- Sammenlign x-verdiene
- [0, 8] til [9, 10] Ingen av disse tallene er like, slik at de ikke er en faktor
- Sammenlign y-verdier
- [0, 3] til [0, 4] Rektanglene har nummer 0 til felles, men 3! = 4, og derfor er det en kollisjon
Gi meg beskjed hvis du trenger noen ekstra detaljer :)