Ellenőrizze, hogy két téglalap átfedik-e a Java-t
1. Áttekintés
Ebben a gyors bemutatóban megtanulunk megoldani egy algoritmikus problémát annak ellenőrzésére, hogy a két adott téglalap átfedik-e egymást.
Kezdjük azzal, hogy megvizsgáljuk a probléma meghatározását, majd fokozatosan felépítjük a megoldást.
Végül megvalósítjuk Java-ban.
2. A probléma meghatározása
Tegyük fel, hogy két megadott téglalapunk van - r1 és r2. Ellenőriznünk kell, hogy van-e legalább egy közös pont r1 és r2. Ha igen, ez egyszerűen azt jelenti, hogy ez a két téglalap átfedésben van.
Nézzünk meg néhány példát:
Ha észrevesszük a legutolsó esetet, a téglalapokat r1 és r2 nincsenek keresztező határaik. Ennek ellenére átfedik egymást a téglalapok, mint minden pont r1 pont is r2.
3. Kezdeti beállítás
A probléma megoldásához először egy téglalap programozott meghatározásával kell kezdenünk. A téglalap könnyen ábrázolható a bal alsó és a jobb felső koordinátákkal:
public class Téglalap {private Point bottomLeft; privát Pont topRight; // konstruktor, getterek és beállítók logikai isOlllapoló (egyéb téglalap) {...}}
hol Pont egy osztály, amely egy pontot képvisel (x, y) űrben:
public class Pont {private int x; magán int y; // kivitelező, mérőeszközök és beállítók}
Később meghatározzuk isOllaping (egyéb téglalap) módszer a mi Téglalap osztály, hogy ellenőrizze, átfedik-e egy másik adott téglalapot - Egyéb.
4. Megoldás
A két adott téglalapok nem fedik egymást, ha Az alábbi feltételek bármelyike igaz:
- A két téglalap egyike a másik téglalap felső széle felett helyezkedik el
- A két téglalap egyike a másik téglalap bal szélének bal oldalán található
Minden más esetben a két téglalap átfedésben lesz egymással. Hogy meggyőzzük magunkat, mindig több példát vonhatunk le.
5. Java implementáció
Most, hogy megértettük a megoldást, valósítsuk meg a mi isOverlapping () módszer:
public boolean isOverlapping (Rectangle other) {if (this.topRight.getY () other.topRight.getY ()) {return false; } if (this.topRight.getX () other.topRight.getX ()) {return false; } return true; }
A mi isOverlapping () módszer ben Téglalap osztály visszatér hamis ha az egyik téglalap a másik felett vagy felett helyezkedik el, igaz másképp.
Annak megállapításához, hogy az egyik téglalap meghaladja-e a másikat, összehasonlítjuk őket y-koordináták. Hasonlóképpen összehasonlítjuk a x-koordináták ellenőrizni, hogy az egyik téglalap balra van-e a másikkal.
6. Következtetés
Ebben a rövid cikkben megtudtuk, hogyan lehet megoldani egy algoritmikus problémát annak megállapítására, hogy a két adott téglalap átfedik-e egymást. Két téglalap alakú objektum ütközés-észlelési stratégiája.
Szokás szerint a teljes forráskód elérhető a Githubon.