Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++를 사용하여 두 개의 직사각형이 겹치는지 확인합니다.

<시간/>

직사각형은 두 좌표, 즉 왼쪽 위 모서리와 오른쪽 아래 모서리를 사용하여 나타낼 수 있다는 것을 알고 있습니다. 두 개의 직사각형이 있다고 가정하고 이 두 개의 중첩 여부를 확인해야 합니다. 4개의 좌표점(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