zoukankan      html  css  js  c++  java
  • A*寻路入门

    基本概念
     
         a*实现算法很多,下文仅以启发式算法为例
         公式 F = G + H ,h为当前点至目标点消耗(距离),g为起始点至当前点的消耗(距离) , F为代价
     
    主要做两件事
         一.生成导航图
         二.计算代价,寻找最少代价的路径
     

    1.生成导航图
          a.根据地图的宽度高度决定不同网格尺寸与网格密度
          b.检测地图中需要碰撞的物体
     
    2.导航图(图中白点)已生成
         a.下面是计算并寻找最小代价路径
     
    定义 开启集合
    定义 关闭集合
    定义 当前点
    将起始点添加到开始集合中 
     
    While(开始集合包含至少一个node){
    当前点 =开启集合中最小的F值的点 
    当前点点移除开启集合中 
    当前点点加入关闭集合中 
     
    如果当前点是目标点 结束查询
     
    遍历当前点的每个相邻点 
    如果相邻点不能访问或则相邻点在关闭集合中,则跳过此相邻点 
     
    如果新的路径到相邻点的距离更短(H),或者相邻点不在开启集合中 
    重设F值
    重设其父节点为当前点
    如果相邻点不在开启集合中 
    添加相邻点到开启集合中
    }
     
          b.得到关闭集合,与当前点,此时当前点等于目标点,通过回溯当前点可以得到下图,黑色为最终路径,黄色区域为探索过的区域
     

    apath

  • 相关阅读:
    UITabBarController资料
    lintcode157 判断字符串是否没有重复字符
    设置TabBarItem选中时的图片及文字颜色
    扩展UIColor类
    设置UINavigationController相同标题
    iOS打开手机QQ与指定用户聊天界面
    UIWindow
    Google Test资料
    Xcode集成Google Test
    文章索引
  • 原文地址:https://www.cnblogs.com/Keyle/p/4594192.html
Copyright © 2011-2022 走看看