c++ - 从2个矩形中获取交点

标签 c++ algorithm geometry rectangles

假设我们有两个矩形,分别定义了它们的左下角和右上角。例如:rect1 (x1, y1)(x2, y2)rect2 (x3, y3)(x4, y4)。 我正在尝试找到相交矩形的坐标(左下角和右上角)。

任何想法、算法、伪代码,将不胜感激。

附言我发现了类似的问题,但他们只检查 2 个矩形是否相交。

最佳答案

如果输入矩形是标准化的,即您已经知道 x1 < x2 , y1 < y2 (第二个矩形也一样),那么你需要做的就是计算

int x5 = max(x1, x3);
int y5 = max(y1, y3);
int x6 = min(x2, x4);
int y6 = min(y2, y4);

它会给你你的交集为矩形(x5, y5)-(x6, y6) .如果原始矩形不相交,则结果将是“退化”矩形(带有 x5 >= x6 和/或 y5 >= y6),您可以轻松检查。

附:像往常一样,小细节将取决于您是否必须将 touching 矩形视为相交。

关于c++ - 从2个矩形中获取交点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19753134/

相关文章:

language-agnostic - Code Golf:为我打造弧线

c++ - 将字节写入 .Bin 文件

c++ - 如何在 CMake 中使用 PJSIP 库?

c++ - QVector<T>::operator[] 失败:意外抛出 "index out of range"

c++ - 如何快速搜索项目中所有包含的头文件以查找特定符号?

objective-c - 获取n维数组中的下一个元素

c++ - 具有 1 个写入器和 N 个并发读取器的实时数据流

algorithm - 有效地找到给定顺序的连接子图(不一定导出)

javascript - 从 Pose.orientation 四元数获取欧拉 Angular

algorithm - 计算分割多边形的面积