如何判断两个矩形相交
来源:互联网 发布:centos smtp 编辑:程序博客网 时间:2024/09/21 08:54
假定矩形是用一对点表达的(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, miny2)
maxx = min(maxx1, maxx2)
maxy = min(maxy1, maxy2)
如果两个矩形不相交,那么计算得到的点对坐标必然满足:
( minx > maxx ) 或者 ( miny > maxy )
判定是否相交,以及相交矩形是什么都可以用这个方法一体计算完成。
相交的结果一定是个矩形,构成这个相交矩形rect{(minx, miny) (maxx, maxy)}的点对坐标是:
如果两个矩形不相交,那么计算得到的点对坐标必然满足:
判定是否相交,以及相交矩形是什么都可以用这个方法一体计算完成。
从这个算法的结果上,我们还可以简单的生成出下面的两个内容:
㈠ 相交矩形:
㈡ 面积: 面积的计算可以和判定一起进行
第二种方法
两个矩形相交的条件:两个矩形的重心距离在X和Y轴上都小于两个矩形长或宽的一半之和.这样,分两次判断一下就行了.
即:重心距离在X轴上投影长度 < 两个矩形的在X轴的长度之和/2
重心距离在Y轴上投影长度 < 两个矩形在Y轴的宽度之和/2
bool CrossLine(Rect r1,RECT r2)
{
if(abs((r1.x1+r1.x2)/2-(r2.x1+r2.x2)/2)<((r1.x2+r2.x2-r1.x1-r2.x1)/2) && abs((r1.y1+r1.y2)/2-(r2.y1+r2.y2)/2)<((r1.y2+r2.y2-r1.y1-r2.y1)/2))
return true;
return false;
http://www.cnblogs.com/0001/archive/2010/05/04/1726905.html
}
0 0
- 如何判断两个矩形相交
- 如何判断两个矩形相交
- 如何判断两个矩形相交
- 如何判断两个矩形相交
- 如何判断两个矩形相交
- 如何判断两个矩形相交
- 如何判断两个矩形相交
- 如何判断两个矩形是否相交
- 如何判断两个矩形是否相交
- 判断两个矩形是否相交
- 判断两个矩形是否相交
- 判断两个矩形是否相交
- 判断两个线段\矩形相交
- 判断两个矩形是否相交
- 判断两个矩形是否相交
- 判断两个矩形是否重叠/相交
- 判断两个矩形是否相交的算法
- C语言 判断两个矩形是否相交
- hdu5444 Elven Postman(二叉树遍历)
- bash中 2>&1 & 的解释
- 第三周 项目一:顺序表的基本运算 (二)
- 第三周--顺序表的基本运算1
- Hibernate系列之基本配置
- 如何判断两个矩形相交
- Emgu入门引导——加载并显示图像(C#风格)
- Android绘图深度解析
- 约瑟夫环问题
- oracle锁相关问题
- framework not found XCTest
- GridView自定义表头、复合表头、绑定
- Windows与Linux云端文件传输
- less入门教程一