判断两个长方形是否重叠

判断两个长方形是否有重叠,主要涉及到对两个长方形的边界进行比较。假设我们有两个长方形,分别定义为 rect1 和 rect2。每个长方形可以用其左下角和右上角的坐标来表示。

1. 基本思想
两个长方形不重叠的条件是:

rect1 的右边界在 rect2 的左边界的左侧。
rect1 的左边界在 rect2 的右边界的右侧。
rect1 的上边界在 rect2 的下边界的下方。
rect1 的下边界在 rect2 的上边界的上方。
如果上述条件之一成立,则两个长方形不重叠。否则,它们重叠。

2. C++实现代码

#include <iostream>

struct Rectangle {
    int x1, y1; // 左下角坐标
    int x2, y2; // 右上角坐标
};

bool isOverlap(const Rectangle& rect1, const Rectangle& rect2) {
    // 如果一个矩形在另一个矩形的左侧
    if (rect1.x2 <= rect2.x1 || rect2.x2 <= rect1.x1)
        return false;

    // 如果一个矩形在另一个矩形的下方
    if (rect1.y2 <= rect2.y1 || rect2.y2 <= rect1.y1)
        return false;

    // 否则,两个矩形重叠
    return true;
}

int main() {
    Rectangle rect1 = {0, 0, 2, 2}; // 第一个矩形的左下角(0, 0), 右上角(2, 2)
    Rectangle rect2 = {1, 1, 3, 3}; // 第二个矩形的左下角(1, 1), 右上角(3, 3)

    if (isOverlap(rect1, rect2)) {
        std::cout << "两个长方形重叠。" << std::endl;
    } else {
        std::cout << "两个长方形不重叠。" << std::endl;
    }

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值