用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
        }
      }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值