我如何知道两个矩形相交的位置?

时间:2017-09-30 16:04:24

标签: java android intersection rectangles

我的android项目中有2个矩形交叉点(一个比其他大)的问题。我使用Rect.intersects(rect1,rect2)方法,它工作正常但我应该知道它相交的地方。例如,rect1.right与rect2.left等相交。有没有办法解决这个问题?Example

我写了类似的内容来检测顶部或底部。但它给了我2或5像素的错误。

if (Rect.intersects(rect2,rect1)){
    //rect1 is smaller one
   if (rect1.exactCenterY()<rect2.exactCenterY() - rect2.height()/2||
      rect1.exactCenterY()>rect.exactCenterY() + rect2.height()/2){
      //It is top or bottom
         doSomething();
   }else{
         doSomething();
   }
}

我希望你们能给我一些建议或其他方法来解决它。

2 个答案:

答案 0 :(得分:1)

如果您使用的是Rectangle类:

    int x = (int) rect1.intersection(rect2).getX();
    int y = (int) rect1.intersection(rect2).getY();

方法交点返回交叉矩形。读出那个矩形。希望这会有所帮助。

答案 1 :(得分:0)

发现它!谢谢你的建议。但重要的是你还应该处理矩形角的交点。

if(rect2.setIntersects(rect2,rect1)){
    if(rect2.left!=rect1.left){
    //do something
    }else if(rect2.right!=rect1.right){
    //do something
    }// and so on
}