Java 检查两个矩形在任意一点是否重叠
我有多个矩形和一个特殊的矩形:选择矩形。我想检查每个矩形是否包含至少一个位于选择矩形内的点。为清楚起见,下图如下:
我有多个矩形和一个特殊的矩形:选择矩形。我想检查每个矩形是否包含至少一个位于选择矩形内的点。为清楚起见,下图如下:
矩形只能由其对角线之一来定义。
假设第一个矩形的对角线是 (x1, y1) 到 (x2, y2),
另一个矩形的对角线是 (x3, y3) 到 (x4, y4)
现在,如果这4个条件中的任何一个为真,我们可以得出结论,矩形没有重叠:
否则,它们会重叠!
如果出现以下情况,矩形重叠
(x1 < x4) && (x3 < x2) && (y1 < y4) && (y3 < y2)
Leetcode 上的示例解决方案:https://leetcode.com/problems/rectangle-overlap/discuss/468548/Java-check-if-two-rectangles-overlap-at-any-point
这将发现矩形是否与另一个矩形重叠:
public boolean overlaps (Rectangle r) {
return x < r.x + r.width && x + width > r.x && y < r.y + r.height && y + height > r.y;
}