在 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 次浏览

开启你的职业生涯

完成课程并获得认证

开始
广告