矩形相交判断超简单方法

设矩形A(xa1,ya1),(xa2,ya2),B(xb1,yb1),(xb2,yb2)

其中:

xa1<=xa2,ya1<=ya2

xb1<=xb2,yb1<=yb2

先看线段相交的判断:

La:xa1,xa2   xa1<=xa2

Lb:xb1,  xb2   xb1<=xb2

考虑对立面(只有两种情况):

不相交的条件:xa2<xb1||xa1>xb2

由摩根律,得出相交条件:xa2>=xb1&&xa1<=xb2

矩形A B相交的条件为:分别在X和Y轴上的投影相交。

也就是:

对X轴,线段相交条件,有

xa2>=xb1(1)

xa1<=xb2(2)

xa1<=xa2(3)

xb1<=xb2(4)

(1),(3)<=> xa2>=max(xa1,xb1);

(2),(4)<=> xb2>=max(xa1,xb1);

min(xa2,xb2)>=max(xa1,xb1);

同理可得:min(ya2,yb2)>=max(ya1,yb1);

故相交条件为:

min(xa2,xb2)>=max(xa1,xb1)&&min(ya2,yb2)>=max(ya1,yb1)

其中:

xa1<=xa2,ya1<=ya2

xb1<=xb2,yb1<=yb2

时间: 2024-10-12 13:06:52

矩形相交判断超简单方法的相关文章

矩形相交判断

[转载]矩形相交判断 问题重述? Find the total area covered by two rectilinear rectangles in a 2D plane. Each rectangle is defined by its bottom left corner and top right corner as shown in the figure. 矩形相交 Assume that the total area is never beyond the maximum pos

chm转换为html的超简单方法

在Windows下chm转换为html的超简单方法(反编译CHM文件的方法) 通过调用Windows命令,将chm 文件转换为html 文件. 方法: 命令行(cmd),输入hh -decompile <输出文件夹路径> <要反编译的CHM文件全路径名> 例如: win+r 键,弹出运行窗口输入命令cmd回车,然后输入: hh -decompile D:/chm/target D:/chm/VC++6DOC.chm 实例: C:\Users\Administrator>d:

把C#程序(含多个Dll)合并成一个Exe的超简单方法

原文:把C#程序(含多个Dll)合并成一个Exe的超简单方法 开发程序的时候经常会引用一些第三方的DLL,然后编译生成的exe文件就不能脱离这些DLL独立运行了. 但是,很多时候我们本想开发一款只需要一个exe就能完美运行的小工具.那该怎么办呢? 下文介绍一种超简单的方法,不用写一行代码就可轻松实现. 这里我们需要用到一款名为Costura.Fody的工具.Costura.Fody是一个Fody框架下的插件,可通过Nuget安装到VS工程中.安装之后,就可以将项目所依赖的DLL(甚至PDB)文件

[转]PHP实现页面静态化的超简单方法

为什么要页面静态化? 1.动态文件执行过程:语法分析-编译-运行 2.静态文件,不需要编译,减少了服务器脚本运行的时间,降低了服务器的响应时间,直接运行,响应速度快:如果页面中一些内容不经常改动,动态页面静态化是非常有效的加速方法.(纯静态,伪静态还是需要PHP解释器的) 3.生成静态URL利于SEO,利于蜘蛛抓取和收录,有利于提升排名 优化页面响应时间方法 1.动态页面静态化 2.优化数据库 3.负载均衡 4.使用缓存等等 //动态页面静态化一般用于不经常改动的地方,频繁改动的地方一般不适用静

C#超简单方法实现两个richtextbox控件滚动条同步滚动

此文章属于作者原创,转载请注明,谢谢 有时候我们需要实现对照文章等,往往将文本放到两个richtextbox控件中,但是,如果我们需要同步滚动查看,来达到更好的观看效果. 当然,传统的方法重载控件或者自定义控件都可以达到目的,但是对于新手或者想仅仅只用一次这个控件的人来说,是非常麻烦的.所以,接 下来我来提供一种简单快捷的方法来实现:richtextbox滚动条同步的功能. 首先,我们在winform窗体创建两个richtextbox控件 下面介绍两个方法,我经常用到 第一个方法,获得当前鼠标所

【成功】qlv转MP4,超简单方法

1.搜索 小白兔视频格式转换 这个网站. 2.上传你的视频(腾讯qlv,爱奇艺qsv.优酷kux)都可以. 3.点击转换按钮,转换好后,我们把转换的视频下载到电脑里,就可以看到视频已经是MP4格式了. 4.百度搜索 "小白兔视频格式转换"就可以啦~ 原文地址:https://blog.51cto.com/14204019/2365555

腾讯视频转成mp4格式用什么软件 无需超简单方法

1.搜索: 小白兔视频格式在线转换官网 2.上传你的视频(腾讯qlv,爱奇艺qsv.优酷kux)都可以. 3.转换好后,我们把转换的视频下载到电脑里,就可以看到视频已经是MP4格式了. 原文地址:https://blog.51cto.com/14204019/2393102

简单地判断判断两矩形相交/重叠 C#

最近需要用到矩形相交算法的简单应用,所以特地拿一个很简单的算法出来供新手参考,为什么说是给新手的参考呢因为这个算法效率并不是很高,但是这个算法只有简简单单的三行.程序使用了两种方法来判断是否重叠/相交,如果有兴趣可以看一下,如果觉得有bug可以留言.代码仅供参考. C#中矩形的方法为Rectangl(起始点坐标, 矩形的大小)或Rectangl(起始点x坐标, 起始点y坐标, 矩形宽, 矩形高),起始点为矩形区域的左上角. 方法一 姑且叫做“井字法”吧,延长其中一个矩形的四边使其形成一“井”字(

判断两个矩形相交

假定矩形是用一对点表达的(minx, miny) (maxx, maxy),那么两个矩形    rect1{(minx1, miny1)(maxx1, maxy1)}    rect2{(minx2, miny2)(maxx2, maxy2)}  相交的结果一定是个矩形,构成这个相交矩形rect{(minx, miny) (maxx, maxy)}的点对坐标是:      minx   =   max(minx1,   minx2)      miny   =   max(miny1,   mi