快速判断两个矩形是否相交
来源:互联网 发布:淘宝店铺权重如何提升 编辑:程序博客网 时间:2024/06/10 07:41
两个矩形之间的位置关系无外乎图中的5中case.
难道我们要每个case都要判断一边,然后决定是否相交?
其实是有通用方法的。
如果两个矩形相交,那么矩形A B的中心点和矩形的边长是有一定关系的。
Case 2345中,两个中心点间的距离肯定小于AB边长和的一半。
Case 1中就像等了。
设A[x01,y01,x02,y02] B[x11,y11,x12,y12].
矩形A和矩形B物理中心点X方向的距离为Lx:abs( (x01+x02)/2 – (x11+x12) /2)
矩形A和矩形B物理中心点Y方向的距离为Ly:abs( (y01+y02)/2 – (y11+y12) /2)
矩形A和矩形B X方向的边长为 Sax:abs(x01-x02) Sbx: abs(x11-x12)
矩形A和矩形B Y方向的边长为 Say:abs(y01-y02) Sby: abs(y11-y12)
如果AB相交,则满足下列关系:
Lx <= (Sax + Sbx)/2 && Ly <=(Say+ Sby)/2
C code:
static uint8_t is_rect_intersect(int x01, int x02, int y01, int y02,int x11, int x12, int y11, int y12){int zx = abs(x01 + x02 -x11 - x12);int x = abs(x01 - x02) + abs(x11 - x12);int zy = abs(y01 + y02 - y11 - y12);int y = abs(y01 - y02) + abs(y11 - y12);if(zx <= x && zy <= y)return 1;elsereturn 0;}针对此问题,matlab中还有增强版的实现函数rectint(A,B) 返回交集的面积。有兴趣的可以单步调试下,看看实现方法。
Ref:
http://www.cnblogs.com/avril/archive/2012/11/13/2767577.html
0 0
- 快速判断两个矩形是否相交
- 判断两个矩形是否相交
- 判断两个矩形是否相交
- 判断两个矩形是否相交
- 判断两个矩形是否相交
- 判断两个矩形是否相交
- 如何判断两个矩形是否相交
- 如何判断两个矩形是否相交
- 判断两个矩形是否重叠/相交
- 判断两个矩形是否相交的算法
- C语言 判断两个矩形是否相交
- Objective-C 判断两个矩形是否相交
- 判断两个矩形是否相交(C++)
- 判断两个矩形是否相交算法
- 判断两个矩形是否相交,相交区域面积
- 两个矩形是否相交
- 判断矩形是否相交
- 判断两个矩形是否相交的4个方法
- ListView优化为何ViewHolder用static类
- abstract类与接口的问题。
- 第6周 项目5 后缀表达式
- 第十一周--二叉树的层次遍历算法
- C#关于文件版本号的编译
- 快速判断两个矩形是否相交
- poj 1020dfs
- Android——支付宝SDK调用(移动应用接入支付宝支付,提供安全、便捷的支付能力)
- 自定义UITableViewCell(registerNib: 与 registerClass: 的区别)
- CANVAS左开右闭
- 第10周项目2 二叉树遍历的递归算法
- Android System Property分析(1):property接口
- log4j
- [从零开始A31S]之安装虚拟机以及下载ubuntu