我的安卓代码中有 2 个路径对象。我一直在尝试检查这些路径是否相交,但无法做到。如何检查路径是否相交。感谢任何良好的回应,谢谢!
Dheeraj给出的答案可以回答你的问题:
https://stackoverflow.com/a/9918830/1268168
以下是他的答案的复制和粘贴:
我能想到的另一种方法是处理可以使用 Path 构造的简单对象。
一旦您有两个对象的边界由路径表示,您可以尝试以下操作:
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);
其中布局宽度和高度可以是画布或活动的大小或其他任何大小。
从 API 19 开始,Path
现在有一个op()
方法。
boolean intersects = path.op(p1,p2,Path.Op.INTERSECT)
看看 Region.op
我还没有尝试过,但我建议使用:
Region.setPath(Path path, Region clip);
要从两个路径中获取区域,然后可以使用:
if (region1.op(region2,Region.Op.INTERSECT)) {
// intersection
}
检查交叉路口...