判断两个矩形(外包络线)是否相交

  首先考虑什么是相交,在GIS中相交是怎么定义的,请参考博客GIS中相交的定义(OGC相交的定义)

  定义我们明白了,就是两个矩形的有公共的部分,我们分为三种情况去写。

  • 情况一:一个矩形的顶点在另一个矩形中,如下图的情况这种情况矩形一定相交。

  • 情况二:一个矩形在一个矩形内部,其实这个可以看成是情况一的特殊情况。

  • 情况三:其中一个矩形的任何一个点都不在矩形的内部,但还是相交了。
  • 情况四:也就是最后一种情况,这种情况就是边和边相交。

  那么问题来了,这么多种情况,每个都进行判断比较麻烦,用一种方法能不能解决这样的四种情况,答案是可以的,就叫做包络线发吧。

  

  很容易从图中看出来,如两个矩形的外包络线的宽大于两个矩形宽的和或者外包络线的高大于两个矩形高的和,两个矩形一定不想交。

  

Envelope red = new Envelope();//红色的矩形
Envelope green = new Envelope();//绿色的矩形
Envelope out = new Envelope();//外接矩形

if(out.width <= red.width+green.width || out.height <= red.height+green.height)
{
    return true;        
}

 

  

 

 作者   Young-Ken(微博)

 审阅者 Cindy-Leee(微博)

 转载请注明 http://www.cnblogs.com/youngKen/p/4978240.html

  

转载于:https://www.cnblogs.com/youngKen/p/4978240.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值