首页 > 其他 > 详细

判断两个矩形是否相交

时间:2015-11-19 19:06:28      阅读:516      评论:0      收藏:0      [点我收藏+]

  在GIS中判断两个图形相交是常用的方法(这里指的二维空间,以下所有内容的表述都是二维空间),怎么判断两个图形(图形不包括直线,我认为直线没有外接矩形,个人观点)是不是相交呢,首先判断外接矩形是不是相交。如果外接矩形都不想交,那么一定不相交。引出标题,判断外接矩形是否相交。

  首先题目开起来很简单(开始的时候我是这样想的),但是做的时候发现有一点点小复杂。

  什么是相交?

  这个有点复杂了,我不知道拓扑学中怎么定义的,找了好多资料,最后还是没有找到,有的是数学中的定义,在GIS中根本就不试用,干脆看ogc怎么定义的吧。

  技术分享

  原来相交和相离是取反的关系,那么就能看看相离吧。

 

  技术分享

  这个是用DE-9IM(9交模型)定义的,那么相离就是边和边没有交集,边和内部没有交集。终于搞懂GIS中相交是怎么回事了。

  搞懂概念就开始做了。

  要想判断想交的情况,线判断不相交,那么什么情况不想交呢?

技术分享

  如下图是一个屏幕坐标系,我们想判断绿色方块是不是和other1,2,3相交。

  首先看maxX线,这个线代表的是绿色方块x的最大值(平行于Y轴),如果other1,2,3的X最小值都大于绿色方块的x最大值,那么一定不会相交(有点绕)。

  同理:还有三种情况,就不写了。

  代码如下

    /**
     *  利用快排的方法先排除一些情况,如果返回true一定不想交,返回false 可能相交
     * @param other Envelope
     * @return
     */
    public boolean intersects(Envelope other)
    {
        if (isNull() || other.isNull())
        {
            return false;
        }
        return !(other.minX > maxX || other.minY > maxY || other.maxX < minX || other.maxY < minY);
    }

  这样就排除了一部分情况,还有一些情况。改天继续...

 

 

 

  

判断两个矩形是否相交

原文:http://www.cnblogs.com/youngKen/p/4978240.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!