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:

  1. A két téglalap egyike a másik téglalap felső széle felett helyezkedik el
  2. 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.