为什么Rect(10,10,20,20)不与Rect(20,20,30,30)相交

时间:2014-04-15 16:28:57

标签: java android

import android.graphics.Rect;

Rect r1 = Rect(10,10,20,20);
Rect r2 = Rect(20,20,30,30);


Rect.intersects(r1, r2); //returns FALSE

为什么?

在我的世界中,矩形应该在20,20

处相交

3 个答案:

答案 0 :(得分:3)

因为Rect.intersects(r1,r2)会关注,

public static boolean intersects(Rect a, Rect b) {
    return a.left < b.right && b.left < a.right 
           && a.top < b.bottom && b.top < a.bottom;
 }

正如@clark在评论中所描述的那样, - 认为边缘严格小于/大于,不等于

答案 1 :(得分:0)

这些坐标是矩形的边框。如果除了边界之外的两个矩形中至少有一个像素,则两个矩形相互交叉。

答案 2 :(得分:0)

添加@Jabbar Jigariyo

enter image description here

实际上并没有相交......

P.S。抱歉GnomePaint :(

如果你想在20,20中交叉,请制作一个方法:

public static boolean intersects(Rect a, Rect b) {
    return a.left <= b.right && b.left <= a.right 
           && a.top <= b.bottom && b.top <= a.bottom;
 }