测试矩形是否包含另一个矩形的全部或部分?

时间:2012-10-09 22:06:59

标签: java android algorithm

我有这段代码:

graphicsContext.setCanvas(canvas);
graphicsContext.clear();
camera.applyTransform(graphicsContext);
RectF screen = camera.getCamRect(getWidth(), getHeight());

for(Road r : roads) {
  if(screen.contains(r.getRect())) {
    r.draw(graphicsContext);
  }
}

for(Intersection i : intersections) {
  if(screen.contains(i.getRect())) {
    i.draw(graphicsContext);
  }
}

唯一的问题是contains方法必须在A中有B的所有4个顶点才能返回true。 我可以使用什么类型的算法,给出顶部,左侧,底部,右侧,以检查B是B的一部分还是完全在B内部。

由于

2 个答案:

答案 0 :(得分:4)

只需将RectF.contains()与要测试交叉的形状的每个顶点

一起使用

或者更简单,RectF.intersects()将为您处理所有这些事情。

全部都在documentation

答案 1 :(得分:0)

只需使用intersects方法:

for(Road r : roads)
{
    if(RectF.intersects(screen, r.getRect()))
    {
        r.draw(graphicsContext);
    }
}