在 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

更新於: 30-Oct-2019

847 次瀏覽

開啟你的職業生涯

完成課程並獲得認證

開始
廣告