Maps 基于多边形/多边形地图表示的路径搜索算法

Maps 基于多边形/多边形地图表示的路径搜索算法,maps,artificial-intelligence,polygon,path-finding,Maps,Artificial Intelligence,Polygon,Path Finding,我正在找出一种方法,在给定源和目标的情况下,找到最短路径。我的地图就像一座建筑物的平面图。我用多边形表示我的地图,如下所示: class Polygon(){ String polygon_name; // describes whether it is a room, or a path, or an untraversable area ArrayList <Coordinates> corners; // describes the coordinates

我正在找出一种方法,在给定目标的情况下,找到最短路径。我的地图就像一座建筑物的平面图。我用多边形表示我的地图,如下所示:

class Polygon(){

    String polygon_name; // describes whether it is a room, or a path, or an untraversable area 

    ArrayList <Coordinates> corners; // describes the coordinates of the corners of the polygon

    ArrayList <Coordinates> center; // describes the center of a polygon/rectangle
}
class多边形(){
String polygon_name;//描述它是房间、路径还是不可移动的区域
ArrayList corners;//描述多边形角点的坐标
ArrayList center;//描述多边形/矩形的中心
}
我有一个所有多边形的列表,我不知道如何在这个场景中实现路径查找。我以前尝试过*算法,但是使用网格或瓷砖,这几乎是一个基本的例子,但是我不知道如何使用它,因为这里有多边形

下面是我想要实现的一个例子:

所有蓝色矩形都是房间,黑色实心矩形不可移动,黑色未填充矩形是路径。我还可以安全地假设一个房间不是通向另一个房间的路径,我可以忽略通向房间的入口,只使用房间的中心,就像我已经拥有的那样。我知道矩形的所有角。我希望得到从红色圆圈到另一个红色圆圈的最短路径


我不完全确定我的地图表示是否正确和足够。但是,当我已经有了多边形时,有没有办法实现路径查找呢?

我建议你研究什么是图形以及它们是如何工作的。这是一个在图上的寻路算法。为网格实现它与为“多边形”实现它是一样的。不清楚所有多边形是如何连接的。对于路径查找,您需要一种方法来获取每个节点的邻居,也就是说,您可以从任何给定节点访问哪些节点。一旦拥有了此功能(例如,通过实现一个方法返回给定节点的所有邻居),就可以继续查找路径。我建议从简单的BFS开始。@BlueRaja DannyPflughoeft是的,事实上我认为这是可能的,但正如c0der所说,不清楚所有多边形是如何连接的,这就是我如何解决的。@c0der谢谢。昨天我也是这么想的,我正在想办法改变我的地图表示法。之所以这样表示,是因为我将其用于定位/定位系统,因此,区域的多边形是确定位置所需的多边形。谢谢你的回复!我确实认为我的地图表示法必须修改,我仍然在想一种从这一点生成图形的方法。我建议你研究什么是图形以及它们是如何工作的。这是一个在图上的寻路算法。为网格实现它与为“多边形”实现它是一样的。不清楚所有多边形是如何连接的。对于路径查找,您需要一种方法来获取每个节点的邻居,也就是说,您可以从任何给定节点访问哪些节点。一旦拥有了此功能(例如,通过实现一个方法返回给定节点的所有邻居),就可以继续查找路径。我建议从简单的BFS开始。@BlueRaja DannyPflughoeft是的,事实上我认为这是可能的,但正如c0der所说,不清楚所有多边形是如何连接的,这就是我如何解决的。@c0der谢谢。昨天我也是这么想的,我正在想办法改变我的地图表示法。之所以这样表示,是因为我将其用于定位/定位系统,因此,区域的多边形是确定位置所需的多边形。谢谢你的回复!我确实认为我的地图表示法必须修改,我仍然在想一种从这一点生成图形的方法。