Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหาว่าสี่เหลี่ยมสองรูปทับซ้อนกันโดยใช้ C++ หรือไม่


เรารู้ว่าสี่เหลี่ยมผืนผ้าสามารถแสดงได้โดยใช้พิกัดสองพิกัด คือ มุมซ้ายบน และมุมขวาล่าง สมมติว่ามีสี่เหลี่ยมสองอัน เราต้องตรวจสอบว่าสองอันคาบเกี่ยวกันหรือไม่ มีจุดพิกัดสี่จุด (l1, r1) และ (l2, r2)

  • l1 คือมุมบนซ้ายของสี่เหลี่ยมแรก
  • r1 คือมุมล่างขวาของสี่เหลี่ยมแรก
  • l2 คือมุมบนซ้ายของสี่เหลี่ยมที่สอง
  • r2 คือมุมล่างขวาของสี่เหลี่ยมที่สอง

เราถือว่าสี่เหลี่ยมนั้นขนานกับแกนพิกัด ในการแก้ปัญหานี้ เราต้องตรวจสอบเงื่อนไขบางประการ

  • สี่เหลี่ยมผืนผ้าหนึ่งอยู่เหนือขอบด้านบนของอีกรูปสี่เหลี่ยมผืนผ้า
  • สี่เหลี่ยมผืนผ้าหนึ่งอยู่ที่ด้านซ้ายของขอบด้านซ้ายของอีกรูปสี่เหลี่ยมผืนผ้า

ตัวอย่าง

#include<iostream>
using namespace std;
class Point {
   public:
   int x, y;
};
bool isOverlapping(Point l1, Point r1, Point l2, Point r2) {
   if (l1.x > r2.x || l2.x > r1.x)
      return false;
   if (l1.y < r2.y || l2.y < r1.y)
      return false;
   return true;
}
int main() {
   Point l1 = {0, 10}, r1 = {10, 0};
   Point l2 = {5, 5}, r2 = {15, 0};
   if (isOverlapping(l1, r1, l2, r2))
      cout << "Rectangles are Overlapping";
   else
      cout << "Rectangles are not Overlapping";
}

ผลลัพธ์

Rectangles are Overlapping