Rumah >pembangunan bahagian belakang >C++ >Adakah Dua Segi Empat Bertindih?

Adakah Dua Segi Empat Bertindih?

Patricia Arquette
Patricia Arquetteasal
2024-12-19 20:29:20607semak imbas

Do Two Rectangles Overlap?

Menentukan Pertindihan Segiempat Segiempat

Dalam senario di mana segi empat tepat selari wujud, tugas penting ialah menentukan sama ada ia bertindih. Coretan kod yang disediakan cuba melaksanakan algoritma untuk tujuan ini, tetapi ia memerlukan penjelasan lanjut.

Untuk menilai pertindihan dengan berkesan, kami boleh menggunakan keadaan matematik berikut:

if (RectA.Left < RectB.Right && RectA.Right > RectB.Left
    && RectA.Top > RectB.Bottom && RectA.Bottom < RectB.Top)

Dalam koordinat Cartesian , ini diterjemahkan kepada:

if (RectA.X1 < RectB.X2 && RectA.X2 > RectB.X1
    && RectA.Y1 > RectB.Y2 && RectA.Y2 < RectB.Y1)

Mari kita analisa perkara ini dalam perincian:

  • Keadaan 1: Jika tepi kiri Segiempat A berada di sebelah kiri tepi kanan Segiempat B, maka A tidak sepenuhnya berada di sebelah kanan B.
  • Keadaan 2: Jika sisi kanan Segiempat A adalah di sebelah kanan Tepi kiri Segiempat tepat B, maka A tidak sepenuhnya berada di sebelah kiri B.
  • Keadaan 3: Jika tepi atas Segiempat A berada di atas tepi bawah Segiempat B, maka A tidak sepenuhnya di bawah B .
  • Keadaan 4: Jika Segiempat A tepi bawah berada di bawah tepi atas Segiempat B, maka A tidak sepenuhnya di atas B.

Dengan menggabungkan syarat ini menggunakan operator AND, kami memastikan keempat-empat syarat dipenuhi serentak. Ini menetapkan kriteria yang diperlukan dan mencukupi untuk dua segi empat tepat untuk bertindih.

Nota: Kaedah ini boleh dilanjutkan kepada dimensi sewenang-wenangnya, menjadikannya terpakai untuk pelbagai kes penggunaan yang melibatkan objek bukan segi empat tepat. Tambahan pula, dengan melaraskan operator perbandingan, kami boleh mengubah suai syarat untuk menentukan senario pertindihan separa atau lengkap mengikut keperluan.

Atas ialah kandungan terperinci Adakah Dua Segi Empat Bertindih?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn