我想检查路径是否与自身相交(如果是,则碰撞在(x,y) - 只是为了突出显示)。
我如何检查一条路径是否与另一条路径相交也非常有趣。
这是一个屏幕截图,可以更好地解释我的意思:
https://i.stack.imgur.com/JrEmN.png https://i.stack.imgur.com/JrEmN.png
最简单的方法是检查任何线段是否与任何其他线段相交。线段由路径中的成对相邻点组成。具有 10 个点的路径有 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
}
See 如何检测两条线段相交的位置? https://stackoverflow.com/questions/563198/how-do-you-detect-where-two-line-segments-intersect有关如何实现 lineSegmentsIntersect 函数的示例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)