)
对于该节点每一个不在关闭列表中的相邻节点:
将该节点设置为当前相邻节点的父节点(主要用于后面的节点回溯)
计算当前相邻节点的 G 值(从开始点到当前相邻点的距离)并将其加入到开放列表中...通过这个节点数组,我们就可以通过网格的位置(索引)直接访问节点数据,这对于节点遍历非常有用.一旦我们有了节点数据,我们就可以执行 A* 算法了,我们要做的第一步就是在该数组中填充原始节点,我们使用的填充函数是...如果你不知道上述代码里模板参数中的 compare 是什么,你可以简单理解是一种定义了如何比较节点的简单数据结构.
?...我们将当前节点的分值设置为最低,并且将其 on_close 变量设置为 true,正常来说,我们应该将节点放置于关闭列表中,但是设置节点变量数据是效率更高的一种方式.OK,现在是时候扩展相邻节点了,扩展之前我们需要检查相邻节点是否已经处于关闭列表中...CalculateFopt 是一个用来计算节点 G 值 和 H 值 的函数,方法上主要是检查了节点间是对角距离还是水平(或垂直)距离.我们需要做的最后一件事是,当我们搜索到目标点后,如何回溯节点直到返回开始点