java 矩形重叠问题_两个矩形重叠的问题

问:如何判断两个矩形是否重叠?

当满足以下条件时,两个矩形不是重叠的

1.一个矩形在另一个的上面

2.一个矩形在另一个的左边

一个矩形可以被表示为两个点,分别是左上和右下。

我们定义下面四个变量来表示:

1. l1 第一个矩形的左上

2. r1 第一个矩形的右下

3. l2 第二个矩形的左上

4. r2 第二个矩形的右下

所以矩形不重叠的条件是

l1.x > r2.x || l2.x > l1.x   // 一个在另一个的左边

l1.y < r2.y || l2.y < r1.y  // 一个在另一个的下面

剩下的条件都是重叠

Two rectangles do not overlap if one of the following conditions is true.

1) One rectangle is above top edge of other rectangle.

2) One rectangle is on left side of left edge of other rectangle.

Note that a rectangle can be represented by two coordinates, top left and bottom right. So mainly we are given following four coordinates.

l1: Top Left coordinate of first rectangle.

r1: Bottom Right coordinate of first rectangle.

l2: Top Left coordinate of second rectangle.

r2: Bottom Right coordinate of second rectangle.

classPoint{intx,y;};// Returns true if two rectangles (l1, r1) and (l2, r2) overlapbool doOverlap(Pointl1,Pointr1,Pointl2,Pointr2){// If one rectangle is on left side of otherif(l1.x >r2.x ||l2.x >r1.x)returnfalse;// If one rectangle is above otherif(l1.y

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值