假设我们有两个矩形,分别定义了它们的左下角和右上角。例如: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/