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

Adakah Dua Segi Empat Bertindih? Pendekatan Deterministik

Patricia Arquette
Patricia Arquetteasal
2024-12-25 04:12:16683semak imbas

Do Two Rectangles Overlap? A Deterministic Approach

Pengesanan Deterministik Pertindihan Segiempat Segiempat

Objektifnya adalah untuk memastikan sama ada dua segi empat tepat bertindih dalam satah 2D, memandangkan pelbagai parameter yang menentukan lokasi dan dimensi. Pelaksanaan anda nampaknya berdasarkan teori badan cembung, tetapi ia memerlukan pemeriksaan lanjut untuk mengesahkan ketepatannya.

Algoritma Pertindihan Asas

Kaedah intuitif untuk pengesanan pertindihan melibatkan perbandingan kedudukan relatif setiap tepi segi empat tepat:

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

Keadaan ini memastikan bahawa tiada bahagian Segiempat A terletak sepenuhnya di luar sempadan Segiempat B, menunjukkan bahawa ia bertindih.

Menjelaskan Syarat

Untuk penjelasan, syarat menyemak perkara berikut :

  • Tepi kiri A: Jika tepi kiri A diletakkan di sebelah kiri tepi kanan B, A tidak boleh sepenuhnya di sebelah kanan B.
  • Tepi kanan A: Jika tepi kanan A diletakkan di sebelah kanan tepi kiri B, A tidak boleh sepenuhnya di sebelah kiri B.
  • Atas tepi A: Jika tepi atas A terletak di atas pinggir bawah B, A tidak boleh sepenuhnya di bawah B.
  • Tepi bawah A: Jika pinggir bawah A terletak di bawah B tepi atas, A tidak boleh sepenuhnya di atas B.

Ringkasnya, jika keempat-empat syarat dipenuhi, segi empat tepat bertindih, dan sebagai alternatif, jika mana-mana syarat gagal, mereka tidak bertindih.

Atas ialah kandungan terperinci Adakah Dua Segi Empat Bertindih? Pendekatan Deterministik. 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