java判断两个矩形是否相交_判断矩形相交以及求出相交的区域
时间: 2023-08-05 15:10:29 浏览: 50
判断两个矩形是否相交可以使用以下方法:
1. 判断两个矩形的边界是否有交集,如果没有交集,那么两个矩形一定不相交。
2. 如果两个矩形的边界有交集,那么再判断两个矩形的重心是否在对方的内部,如果重心不在对方的内部,那么两个矩形也不相交。
求出两个相交矩形的区域可以使用以下方法:
1. 判断两个矩形是否相交,如果不相交,则不存在相交区域。
2. 如果两个矩形相交,那么可以求出相交矩形的左上角和右下角的坐标,从而确定相交区域。
具体实现可以参考以下代码:
```java
public class Rectangle {
// 判断两个矩形是否相交
public static boolean isOverlap(int x1, int y1, int width1, int height1, int x2, int y2, int width2, int height2) {
if (x1 + width1 <= x2 || x1 >= x2 + width2 || y1 + height1 <= y2 || y1 >= y2 + height2) {
return false;
}
return true;
}
// 求出两个相交矩形的区域
public static void getOverlapRegion(int x1, int y1, int width1, int height1, int x2, int y2, int width2, int height2) {
if (!isOverlap(x1, y1, width1, height1, x2, y2, width2, height2)) {
System.out.println("两个矩形不相交");
return;
}
int x = Math.max(x1, x2);
int y = Math.max(y1, y2);
int width = Math.min(x1 + width1, x2 + width2) - x;
int height = Math.min(y1 + height1, y2 + height2) - y;
System.out.println("相交区域左上角坐标为 (" + x + ", " + y + ")");
System.out.println("相交区域右下角坐标为 (" + (x + width) + ", " + (y + height) + ")");
}
public static void main(String[] args) {
int x1 = 0, y1 = 0, width1 = 4, height1 = 4;
int x2 = 2, y2 = 2, width2 = 4, height2 = 4;
getOverlapRegion(x1, y1, width1, height1, x2, y2, width2, height2);
}
}
```