用js写了一个判断矩形相交的函数

基本思想

求两个矩形是否相连或相交,两个矩形的最小外包矩形宽小于两个矩形宽的和,且两个矩形最小外包矩形的的高小于两个矩形高的和,则两个矩形相交。
外包矩形的宽等于两个矩形的y轴最大值减去y轴的最小值。
外包矩形的高等于两个矩形的x轴最大值减去x轴最小值。
y轴最小值为两矩形左上角取小者,最大值为两矩形左上角加高取大值。
x轴最小值为两矩形左上角取小者,x轴最大值为两矩形左上角加宽取大值。两个矩形的宽的和小于最小外包矩形的宽,不相交
两个矩形的宽的和、高的和小于最小外包矩形的宽、高。相交

具体代码实现

    var collide = function(rect1,rect2) {
        var maxX,maxY,minX,minY

        maxX = rect1.x+rect1.width >= rect2.x+rect2.width ? rect1.x+rect1.width : rect2.x+rect2.width
        maxY = rect1.y+rect1.height >= rect2.y+rect2.height ? rect1.y+rect1.height : rect2.y+rect2.height
        minX = rect1.x <= rect2.x ? rect1.x : rect2.x
        minY = rect1.y <= rect2.y ? rect1.y : rect2.y

        if(maxX - minX <= rect1.width+rect2.width && maxY - minY <= rect1.height+rect2.height){
          return true
        }else{
          return false
        }
      }
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页