#path-finding #a-star #traits #algorithm

a-star_traitbased

基于结构体的 A* 实现,基于训练实现

4 个版本

0.1.3 2023 年 3 月 11 日
0.1.2 2022 年 7 月 16 日
0.1.1 2022 年 7 月 9 日
0.1.0 2022 年 7 月 9 日

#10#a-star

MIT 许可证

12KB
243

结构体 A*

这是一个基于结构体的 A* 算法的基本实现。如果你已经有了包含移动(可以是游戏、动画或其他能够确定可能路径的结构体),这将非常有用。

实现

  • 在结构体上实现 PathGenerator trait;
  • 调用 AStar::run(from_struct: Box<&T: PathGenerator>, start: (usize, usize), target: (Option, Option)) -> Option<Vec<(usize, usize)>>

注意

预期的结构体应该能够使用 2D 位置参数(x, y)工作,这些参数应该是数字。PathGenerator 将需要实现

  • generate_paths -> 用于从位置生成可能路径的逻辑(在这里可以包括障碍物和额外的逻辑);
  • calculate_cost -> 用于推导从位置到下一个位置的转移成本的逻辑;
  • calculate_heuristic_cost -> 用于推导到目标的相关成本的逻辑;

AStar::run 接受一个目标,该目标可以包含 x 和 y(或到达的确切点)或仅包含一个(x 或 y),达到地图的一侧。

AStar::run 返回一个从目标到起始点的位置向量的 Option,如果没有路径可用,则返回 None。

  • 这是我在一个项目中使用的一个实现,但可能对其他人也有用,所以我决定分享它。

无运行时依赖