The*_*Guy 56
我们可以确定一个只有一个对角线的矩形.
假设左方矩形的对角线是(x1,y1)到(x2,y2)
而右方矩形的对角线是(x3,y3)到(x4,y4)
现在,如果这4个条件中的任何一个为真,则可以说矩形不重叠:
除了这些条件之外的任何东西都意味着它们重叠!
Cod*_*per 24
这将找到矩形是否与另一个矩形重叠:
public boolean overlaps (Rectangle r) {
return x < r.x + r.width && x + width > r.x && y < r.y + r.height && y + height > r.y;
}
Run Code Online (Sandbox Code Playgroud)
我将制作Rectangle对象(http://docs.oracle.com/javase/8/docs/api/java/awt/Rectangle.html)然后使用Rectangle.intersects和Rectangle.contains方法来确定它们是否相交或如果一个包含另一个.
由于你有一个大矩形,即选择矩形,这比我想象的要容易.运行Rectangle.contains,对于所有未包含的矩形,运行Rectangle.intersects,你就可以得到你想要的东西.
这是另一个更简单的解决方案:
// Left x
int leftX = Math.max(x1, x3);
// Right x
int rightX = Math.min(x2, x4);
// Bottom y
int botY = Math.max(y1, y3);
// TopY
int topY = Math.min(y2, y4);
if (rightX > leftX && topY > botY)
return true;
Run Code Online (Sandbox Code Playgroud)