bool Rect::intersectsRect(const Rect& rect) const
{
return !( getMaxX() < rect.getMinX() ||
rect.getMaxX() < getMinX() ||
getMaxY() < rect.getMinY() ||
rect.getMaxY() < getMinY());
}

可以用这个函数来判断两个矩形是否有交叉区域,比如用来判断飞机是否碰撞,渔网和鱼是否碰撞等



交叉的时候上面的判断条件就等价于:

1、getMaxX() < rect.getMinX()

2、rect.getMaxX() < getMinX()

3、getMaxY() < rect.getMinY()

4、rect.getMaxY() < getMinY()

当同时满足上面四个条件时,可以判断为交叉。

简单的理解方法:

而判断不交叉只需要上述四个条件有一个为真即不交叉。从图中可以看出:

1、当A的minX比B的maxX还要大时,不交叉。

2、当A的maxX比B的minX还要小时,不交叉。

3、当A的minY比B的maxY还要大时,不交叉。

4、当A的maxY比B的minY还要小时,不交叉。

反之,如果要交叉,上面四个条件都要同时为假,才能判定为交叉,即:

1、A的minX比B的maxX还要小,同时

2、A的maxX比B的minX还要大,同时

3、A的minY比B的maxY还要小,同时

4、A的maxY比B的minY还要大,此时才交叉。

最新文章

  1. ZeroMQ接口函数之 :zmq_sendmsg – 从一个socket上发送一个消息帧
  2. AX 2012 template table use in Query
  3. mysql高性能索引策略
  4. 下一代GNU/Linux显示服务Wayland 1.12正式发布
  5. 对于Spark1.3进行编译
  6. JS实现页面回到顶部效果
  7. zedboard 驱动理解
  8. Qt入门(12)——Qt国际化
  9. TCP/IP笔记 四.应用层(1)——DNS
  10. Java经典案例之-判断质数(素数)
  11. Javascript 面向对象编程—封装
  12. 一个ios的各种组件、代码分类,供参考
  13. 【LOJ 6041】「雅礼集训 2017 Day7」事情的相似度
  14. mysql递归
  15. shell删除三天前或者三天内的文件
  16. java总结:double取两位小数的多种方法
  17. Q: Is Consul eventually or strongly consistent?
  18. mybatis中namespace配置方式
  19. kafuka资料学习
  20. jsonp的工作原理

热门文章

  1. Linux系统管理_用户管理
  2. 微服务 Zipkin 链路追踪原理(图文详解)
  3. 编辑距离(Minimum Edit Distance)
  4. jmeter时间戳
  5. 利用nginx自带的反向代理以及轮询功能实现应用的负载均衡
  6. PHP 代码解一元二次方程
  7. vcenter异常死机无法重启
  8. C++ 之 宏定义
  9. [Kogel.Subscribe.Mssql]SQL Server增量订阅,数据库变更监听
  10. day07 方法重写&amp;super、this、static关键字&amp;JVM的类加载顺序题目