Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Kiểm tra hai hình chữ nhật có giao nhau không bằ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 bên trái và góc dưới 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ó giao nhau hay không. Có bốn điểm tọa độ (l1, r1) và (l2, r2).

  • l1 là góc trên-trái của hình chữ nhật thứ nhất
  • r1 là góc dưới-phải của hình chữ nhật thứ nhất
  • l2 là góc trên-trái của hình chữ nhật thứ hai
  • r2 là góc dưới-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 bài toán này, chúng ta phải kiểm tra một vài điều kiện.

  • Một hình chữ nhật nằm phía trên cạnh trên của hình chữ nhật khác
  • Một hình chữ nhật nằm phía bên trái cạnh trái của 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"; }

Kết quả

Rectangles are Overlapping