Path intersection in android

浪子不回头ぞ 提交于 2019-11-29 21:10:24

问题


I have 2 path objects in my android code.I have tried all the way to check whether these paths are intersected or not, but not able to do it. How can I check whether the paths are intersected or not. Appreciate any good response, Thanks !


回答1:


have a look at Region.op

I haven't tried it but I would suggest to use:

Region.setPath(Path path, Region clip);

to get a region from both of your paths and afterwards you can use:

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

to check for intersection...




回答2:


The answer given by Dheeraj has the answer to your question:

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

Here's a copy and paste of his answer:

Another method I can think of will work with simple objects that can be constructed using Paths.

Once you have two objects whose boundaries are represented by paths, you may try this:

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!
}

Once you have your objects as Paths, you can draw them directly using drawPath(). You can also perform movement by transform()ing the path.

From my understanding, the variable "clip" in the above code should be the bounding box of the path. For general purposes I use

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

Where the layout width and height can be the size of your canvas or activity or whatever.




回答3:


From API 19 onwards, Path now has an op() method.

boolean intersects = path.op(p1,p2,Path.Op.INTERSECT)


来源:https://stackoverflow.com/questions/11184397/path-intersection-in-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!