5

我的android代码中有2个路径对象。我一直尝试检查这些路径是否相交,但无法做到。如何检查路径是否相交。感谢任何好的回应,谢谢!

4

3 回答 3

7

Dheeraj 给出的答案可以回答您的问题:

https://stackoverflow.com/a/9918830/1268168

这是他的答案的复制和粘贴:

我能想到的另一种方法适用于可以使用路径构造的简单对象。

一旦你有两个对象的边界由路径表示,你可以试试这个:

Path path1 = new Path();
path1.addCircle(10, 10, 4, Path.Direction.CW);
Path path2 = new Path();
path2.addCircle(15, 15, 8, Path.Direction.CW);

Region region1 = new Region();
region1.setPath(path1, clip);
Region region2 = new Region();
region2.setPath(path2, clip);

if (!region1.quickReject(region2) && region1.op(region2, Region.Op.INTERSECT)) {
    // Collision!
}

将对象作为路径后,您可以使用 drawPath() 直接绘制它们。您还可以通过变换()路径来执行移动。

根据我的理解,上面代码中的变量“clip”应该是路径的边界框。出于一般目的,我使用

Region clip = new Region(0, 0, layoutWidth, layoutHeight);

布局宽度和高度可以是画布或活动的大小或其他任何内容。

于 2012-11-19T07:53:02.520 回答
7

从 API 19 开始,Path现在有了一个op()方法。

boolean intersects = path.op(p1,p2,Path.Op.INTERSECT)
于 2014-05-26T13:44:57.517 回答
5

看看Region.op

我没有尝试过,但我建议使用:

Region.setPath(Path path, Region clip);

从您的两条路径中获取一个区域,然后您可以使用:

if (region1.op(region2,Region.Op.INTERSECT)) {
  // intersection
}

检查交叉点...

于 2012-06-25T07:01:49.597 回答