Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm xem hai hình chữ nhật có trùng nhau hay không bằng cách sử dụng C ++.

Chúng ta biết rằng một hình chữ nhật có thể được biểu diễn bằng hai tọa độ, góc trên cùng bên trái và góc dưới cùng bên phải. Giả sử có hai hình chữ nhật, chúng ta phải kiểm tra xem hai hình này có trùng nhau hay không. Có bốn điểm tọa độ (l1, r1) và (l2, r2).

  • l1 là góc trên cùng bên trái của hình chữ nhật đầu tiên
  • r1 là góc dưới cùng bên phải của hình chữ nhật đầu tiên
  • l2 là góc trên cùng bên trái của hình chữ nhật thứ hai
  • r2 là góc dưới cùng bên phải của hình chữ nhật thứ hai

Chúng ta đã giả định rằng các hình chữ nhật song song với các trục tọa độ. Để giải quyết vấn đề này, chúng tôi phải kiểm tra một số điều kiện.

  • Một hình chữ nhật nằm trên cạnh trên của một hình chữ nhật khác
  • Một hình chữ nhật nằm ở phía bên trái của cạnh trái của một hình chữ nhật khác.

Ví dụ

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

Đầu ra

Rectangles are Overlapping