判断两个矩形是否相交——不考虑旋转

法一:

假设两矩形分别由两个点构成,它们的构成点分别为(minX1,minY1),(maxX1,maxY1)和(minX2,minY2),(maxX2,maxY2)。
假设它们相交,那么相交的形状一定是矩形。假设该矩形两个点分别为(minX,minY)和(maxX,maxY)。
则有:

minX=max(minX1,minX2)
minY=max(minY1,minY2)
maxX=min(maxX1,maxX2)
maxY=min(maxY1,maxY2)

若最终两矩形不相交则必然有:

minX>maxX 或者 minY>maxY

使用该方法,不仅能判断是否相交,还可以求出相交的矩形。

法二:

转换为判断是否有横线和竖线相交。
若两矩形相交,则必然存在一个矩形的横线和另一个矩形的竖线相交。

法三:

一句代码判断是否相交,原理:

  1. 判断 r1 的左上角是否在 r2 的右下角的下面或者右面
  2. 判断 r2 的左上角是否在 r1 的右下角的下面或者右面
  3. 结果求反.

return !(r1.left > r2.right || r1.top > r2.bottom || r2.left > r1.right || r2.top > r1.bottom);

法四:

两个矩形的重心在X和Y轴上的距离都小于两个矩形长或宽的一半之和

参考文档:

https://blog.csdn.net/iloveyin/article/details/48372799

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iningwei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值