一个用来可视化最短路算法的小工具.
dijkstra: ![]() |
A*: ![]() |
flow-field: ![]() |
LPA*: ![]() |
先确保已安装 conan, 然后执行以下来安装依赖:
make install
然后构建:
make configure
make build
接下来, 查看帮助:
./build/path-finding-visualizer --help
一个运行 A*
算法的例子:
./build/path-finding-visualizer --start 6,1 --target 6,14 astar
目前支持的算法:
dijkstra
dijkstra-bi
(双向 dijkstra)astar
(A*
算法)astar-bi
(双向A*
算法)flow-field
简单的流场寻路lpastar
(LPA*
算法, 一种增量计算的A*
算法, Lifelong Planning A* )
- 按下
ESC
或者Ctrl-C
来退出. - 按下
Ctrl-S
来手动截图, 会保存在screenshots
目录, 也可以用--enable-screenshot
来对每一帧自动截图 (会自动在找到最短路后及时退出自动截图, 免得截图太多). - 单击鼠标左键, 来翻转一个地图方格(成为障碍物或者消去障碍物), 引起重新计算 (
lpastar
支持增量寻路, 不会全部重算). - 单击鼠标右键, 变更起始点 (
flow-field
流场可以在目标不变的情况下, 直接计算多个出发点的路径).
- 地图规格
12x15
, 0 表示空白, 1 表示障碍物 - 地图文件默认在当前目录
map.txt
- 默认是支持 8 个方向移动 (使用选项
-d4
来只使用四个方向). - 代价: 水平和垂直方向移动消耗
10
, 对角方向移动消耗14
(根号2 倍).
- 黑色: 障碍物
- 浅蓝色: 待扩展的方格, 也常叫做
open_list
,open_set
, 或者优先级队列中的元素 - 深蓝色: 已经探索过的方格 (也常叫做
closed_list
,closed_set
, visited 数组) - 绿色: 起点, 终点都是绿色. 探索到的最短路径是绿色
- 红色边框: 鼠标修改过此位置
字体 Arrows.ttf
来自 https://www.dafont.com/arrows.font.