检查与自己的android.graphics.path交集

我想检查是否(如果是的话,碰撞是在哪里(x,y) – 只是为了突出显示)path本身是相交的。 这也将是非常有趣的,我如何检查path是否与另一个path相交。 下面是一个截图,以更好地解释我的意思:

http://img.androidcookie.com/android/JrEmN.png

Related of "检查与自己的android.graphics.path交集"

最简单的方法是检查是否有线段与其他线段相交。 线段由path中的相邻点组成。 有10个点的path有9个线段。

这里有一个例子说明如何去做。

import android.graphics.Point; import java.util.List; static Boolean isPathComplex(List<Point> path) { if (path == null || path.size() <= 2) { return false; } int len = path.size(); for (int i = 1; i < len; i++) { Point lineAStart = path.get(i - 1); Point lineAEnd = path.get(i); for (int j = i + 1; j < len; j++) { Point lineBStart = path.get(j - 1); Point lineBEnd = path.get(j); if (lineSegmentsIntersect(lineAStart, lineAEnd, lineBStart, lineBEnd)) { return true; } } // inner loop } // outer loop } static Boolean lineSegmentsIntersect(Point aInitial, Point aFinal, Point bInitial, Point bFinal) { // left as an exercise to the reader } 

请参阅如何检测两条线段相交的位置? 例如如何实现lineSegmentsIntersect函数。