Periksa Jika Dua Persegi Panjang Tumpang Tindih Di Jawa

1. Ikhtisar

Dalam tutorial singkat ini, kita akan belajar memecahkan masalah algoritmik untuk memeriksa apakah dua persegi panjang yang diberikan tumpang tindih.

Kami akan mulai dengan melihat definisi masalah dan kemudian secara bertahap membangun solusi.

Terakhir, kami akan menerapkannya di Java.

2. Definisi Masalah

Misalkan kita memiliki dua persegi panjang yang diberikan - r1 dan r2 . Kita perlu memeriksa apakah ada setidaknya satu titik yang sama antara r1 dan r2 . Jika ya, itu berarti kedua persegi panjang ini tumpang tindih.

Mari kita lihat beberapa contoh:

Jika kita perhatikan kasus terakhir, persegi panjang r1 dan r2 tidak memiliki batas berpotongan. Namun, mereka adalah persegi panjang yang tumpang tindih karena setiap titik di r1 juga merupakan titik di r2 .

3. Pengaturan Awal

Untuk mengatasi masalah ini, pertama-tama kita harus mulai dengan mendefinisikan persegi panjang secara terprogram. Persegi panjang dapat dengan mudah diwakili oleh koordinat kiri bawah dan kanan atas:

public class Rectangle { private Point bottomLeft; private Point topRight; //constructor, getters and setters boolean isOverlapping(Rectangle other) { ... } }

di mana Titik adalah kelas yang mewakili titik (x, y) dalam ruang:

public class Point { private int x; private int y; //constructor, getters and setters }

Kami kemudian akan mendefinisikan metode isOverlapping (Rectangle other) di kelas Rectangle kami untuk memeriksa apakah tumpang tindih dengan persegi panjang lain yang diberikan - lainnya .

4. Solusi

Kedua persegi panjang yang diberikan tidak akan tumpang tindih jika salah satu dari kondisi di bawah ini benar:

  1. Salah satu dari dua persegi panjang berada di atas tepi atas persegi panjang lainnya
  2. Salah satu dari dua persegi panjang berada di sisi kiri tepi kiri persegi panjang lainnya

Untuk semua kasus lainnya, kedua persegi panjang akan saling tumpang tindih. Untuk meyakinkan diri sendiri, kami selalu dapat menarik beberapa contoh.

5. Implementasi Java

Sekarang setelah kita memahami solusinya, mari terapkan metode isOverlapping () kita :

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; }

Kami isOverlapping () metode dalam Rectangle pengembalian kelas palsu jika salah satu dari empat persegi panjang adalah di atas atau ke sisi kiri lainnya, yang benar sebaliknya.

Untuk mengetahui apakah satu persegi panjang berada di atas yang lain, kita bandingkan koordinat y-nya . Demikian pula, kami membandingkan koordinat x untuk memeriksa apakah satu persegi panjang berada di kiri yang lain.

6. Kesimpulan

Dalam artikel singkat ini, kita belajar bagaimana menyelesaikan masalah algoritmik untuk menemukan apakah dua persegi panjang yang diberikan tumpang tindih satu sama lain. Ini berfungsi sebagai strategi deteksi tabrakan untuk dua objek persegi panjang.

Seperti biasa, seluruh kode sumber tersedia di Github.