考虑到机器人必须在非网格状平面中从一个点移动到另一个点。如果有像森林这样的东西,我怎样才能找到最短的路径?我知道网格可以使用A *算法。但是我想要实现的另一个例子是僵尸,它具有极好的地体知识,试图找到它通向人类的最短路径。
答案 0 :(得分:2)
如果你做一个简单的假设,你可以把它减少到更易处理的东西:机器人/僵尸是一个点。
这是为了避免检查你是否合适等等。如果机器人/僵尸是一个圆圈,你可以通过圆圈的弧度将障碍物的所有边缘移向物体外部,使所有其他物体“变胖”。如果机器人/僵尸是一个矩形,你仍然可以将边缘推出,但使用立方体尺寸来做,但如果矩形应该旋转,这不起作用。
一旦你试图找到单点的路径,它就会变得更简单。将'fat'多边形障碍物的每个顶点变换为图形中的节点,并将其连接到直接可见的每个其他节点(不通过某个障碍物)。如果你在3d中,你需要考虑边缘,问题变得有点单调乏味。
一旦你有图表做A * / Dijkstra /任何适合你的问题。
如果你想要非常精确的结果,如果你的机器人/组合是一个圆圈,你需要小心角落,因为绕过角落会在弧段上移动。如果您正在运行游戏/模拟,除了非常薄的障碍物和相对较大的圈子/机器人/僵尸之外,差异不大可能。
对于性能,如果设置是静态的,您可以预先计算图形。此外,节点的数量取决于障碍物的顶点数量,因此可能值得使用质量较低的对象进行路径寻找。