Android - 室内寻路建议
Android - Indoor Pathfinding suggestions
我目前正在从事室内寻路项目。你可以这样想象:
enter image description here
在我的应用程序中,我有两个搜索视图,一个是起始房间,一个是目标房间,我已经实现了。进入这两个房间后,应用程序应启动一个算法,例如 A*,以计算这两个房间之间的最短路径。突然间,用户可以看到这两个房间之间有一条画线。
关于如何在 Android 上实现 A* 算法,如图所示,您有什么建议吗?
A*算法依赖于图论。
因此,首先您应该将您的房间绘制成图表(每个 room/floor 是一个顶点或节点,每扇门都是一条边)。我建议你为此使用众所周知的实现(here 是一个例子)。
根据您的架构,您的图表应该如下所示
保留一个 HashMap(或其他东西)来跟踪哪个房间映射到哪个节点,以及哪个走廊链接到哪个边。
然后,当你使用调用路径时,计算你的A*算法。我链接给你的例子看起来像这样
List<Node> path = aStar.findPath();
将节点列表重新映射回房间列表,并将其显示给您的用户。
注意:如果你想让它非常干净,你可以重写 AStar.java
以接受 Room
的列表,并让它吐出另一个 [=12] 的列表=].
我目前正在从事室内寻路项目。你可以这样想象: enter image description here
在我的应用程序中,我有两个搜索视图,一个是起始房间,一个是目标房间,我已经实现了。进入这两个房间后,应用程序应启动一个算法,例如 A*,以计算这两个房间之间的最短路径。突然间,用户可以看到这两个房间之间有一条画线。
关于如何在 Android 上实现 A* 算法,如图所示,您有什么建议吗?
A*算法依赖于图论。
因此,首先您应该将您的房间绘制成图表(每个 room/floor 是一个顶点或节点,每扇门都是一条边)。我建议你为此使用众所周知的实现(here 是一个例子)。
根据您的架构,您的图表应该如下所示
保留一个 HashMap(或其他东西)来跟踪哪个房间映射到哪个节点,以及哪个走廊链接到哪个边。
然后,当你使用调用路径时,计算你的A*算法。我链接给你的例子看起来像这样
List<Node> path = aStar.findPath();
将节点列表重新映射回房间列表,并将其显示给您的用户。
注意:如果你想让它非常干净,你可以重写 AStar.java
以接受 Room
的列表,并让它吐出另一个 [=12] 的列表=].