概述
法一:
假设两矩形分别由两个点构成,它们的构成点分别为(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
使用该方法,不仅能判断是否相交,还可以求出相交的矩形。
法二:
转换为判断是否有横线和竖线相交。
若两矩形相交,则必然存在一个矩形的横线和另一个矩形的竖线相交。
法三:
一句代码判断是否相交,原理:
- 判断 r1 的左上角是否在 r2 的右下角的下面或者右面
- 判断 r2 的左上角是否在 r1 的右下角的下面或者右面
- 结果求反.
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
最后
以上就是笨笨奇迹为你收集整理的判断两个矩形是否相交——不考虑旋转的全部内容,希望文章能够帮你解决判断两个矩形是否相交——不考虑旋转所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复