查找矩形区域是否相交的实现问题

时间:2019-04-01 17:12:54

标签: java

我正在尝试实现一种方法,如果 矩形所覆盖的区域的某些部分也是另一个矩形的一部分,否则为false,否则使用x和y坐标以及宽度和高度。

伴随下面的代码,我已经初始化了变量x,y,width和height,它们是对象BoundingBox的属性

public boolean intersects(BoundingBox box) {
    int boxx = getX();
    int boxy = getY();
    int boxw = getWidth();
    int boxh = getHeight();
    if ( box.getX()+ box.getWidth() < boxx || box.getY() + box.getHeight() < boxy || boxx+boxw < box.getX() || boxy + boxh < box.getY()) {
        if (boxw*boxh <= box.getWidth()*box.getHeight()) {
            return false;
        }
        else {
            return true;
        }
    }   
    else {
        return true;
    }
}

当我尝试查看(x,y,width,height)=(20,0,1,20)的矩形是否与原始矩形相交时,我将其设置为(10,10,10,10 ),我希望看到结果为false,但实际输出为true?

1 个答案:

答案 0 :(得分:0)

在您的for循环中使用它。

if (boxx > box.getX()+box.getWidth() || box.getX(0) > boxx) { 
    return false; 
}

if (boxy < box.getY()+box.getHeight() || box.getY() < boxy+boxh) { 
    return false; 
} 
return true;