我是靠谱客的博主 笨笨奇迹,最近开发中收集的这篇文章主要介绍判断两个矩形是否相交——不考虑旋转,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

法一:

假设两矩形分别由两个点构成,它们的构成点分别为(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

最后

以上就是笨笨奇迹为你收集整理的判断两个矩形是否相交——不考虑旋转的全部内容,希望文章能够帮你解决判断两个矩形是否相交——不考虑旋转所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部