判断两个矩形是否重叠
PL1,PR1 表示为矩形1 的左上角 和 右下角 的 点
PL2,PR2 表示为矩形2 的左上角 和 右下角 的 点
PR1.x <= PL2.x 表示矩形1 在矩形2 的左边,不重叠
PL1.x >= PR2.x 表示矩形1 在矩形2 的右边,不重叠
PL1.y <= PR2.y 表示矩形1 在矩形2 的下面,不重叠
PR1.y >= PL2.y 表示矩形1 在矩形2 的上面,不重叠
PR1.x <= PL2.x | | PL1.x >= PR2.x | | PL1.y <= PR2.y | | PR1.y >= PL2.y 表示所有不重叠的情况
!(PR1.x <= PL2.x | | PL1.x >= PR2.x | | PL1.y <= PR2.y | | PR1.y >= PL2.y) 表示所有重叠的情况
德摩根定律 等价于
PR1.x > PL2.x && PL1.x < PR2.x && PL1.y > PR2.y && PR1.y < PL2.y
import java.util.*;
import javax.swing.*;
class Main {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("Enter r1's center x-, y-coordinates, width, and height:");
double xR1 = input.nextDouble();
double yR1 = input.nextDouble();
double widthOfR1 = input.nextDouble();
double heightOfR1 = input.nextDouble();
double PL1x = xR1 - (widthOfR1 / 2);
double PL1y = yR1 + (heightOfR1 / 2);
double PR1x = xR1 + (widthOfR1 / 2);
double PR1y = yR1 - (heightOfR1 / 2);
System.out.print("Enter r2's center x-, y-coordinates, width, and height:");
double xR2 = input.nextDouble();
double yR2 = input.nextDouble();
double widthOfR2 = input.nextDouble();
double heightOfR2 = input.nextDouble();
double PL2x = xR2 - (widthOfR2 / 2);
double PL2y = yR2 + (heightOfR2 / 2);
double PR2x = xR2 + (widthOfR2 / 2);
double PR2y = yR2 - (heightOfR2 / 2);
if(PL1x <= PL2x && PL2x <= PR1x &&
PR1y <= PL2y && PL2y <= PL1y &&
PL1x <= PR2x && PR2x <= PR1x &&
PR1y <= PR2y && PR2y <= PL1y
){
System.out.print("r2 is inside r1");
}else if(PL2x <= PL1x && PL1x <= PR2x &&
PR2y <= PL1y && PL1y <= PL2y &&
PL2x <= PR1x && PR1x <= PR2x &&
PR2y <= PR1y && PR1y <= PL2y){
System.out.print("r1 is inside r2");
}else if(PR1x > PL2x
&& PL1x < PR2x
&& PL1y > PR2y
&& PR1y < PL2y)//PR1.x > PL2.x && PL1.x < PR2.x && PL1.y > PR2.y && PR1.y < PL2.y
{
System.out.print("r1 overlaps r2");
}else{
System.out.print("r1 does not overlap r2");
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律