AStar算法笔记
来源:互联网 发布:胜科金仕达数据系统 编辑:程序博客网 时间:2024/05/16 12:33
听说这个很久了,今天是第一次实现该算法
原理不算难,弄明白很容易
实现起来也还可以,根据网上的一些讲解,代码之类的勉强也完成了一个实现
一个简单的实现......
Node类:节点的数据类,负责保存G = F + H的数据,位置,父节点,是否是障碍,提供一个排序的比较方法
Grid类:网格生成和维护类,横向纵向的网格数目,网格大小,在unity中还可以在该类里用OnGizmosDraw显示辅助线
同时,该类也负责添加临近网格,和将网格的坐标数据和网格数据的索引之间转化的工作
NodeArray:节点的列表类,push,remove,firstNode,GetLength,FirstNode等方法
AStar类:A*的具体类,维护两个节点的列表,一个openList,一个closeList,将每次计算周围点的和值最小的节点放入ClosedList,其余的放入openList,然后选择最小和值的节点,计算计算周围的节点,如果没在openList当中,就添加,已经存在的重新计算和值,看是否可以取得更小的到达开始点的值
应该包含计算估算值H的方法
寻路过程
传入两个节点,一个是起始点,一个是目标点
先将起始点加入到开放列表OpenList中,计算起始点的H值,F值为0
循环遍历开放列表OpenList,取得列表中的firstNode(node的排序是根据H值来排序的)
只要firstNode不是目标点,继续,否则,计算路径,寻路完成了
便利邻居节点(可以是四方向或者8方向)
如果closeList不包含邻居节点,计算邻居节点到fistNode的G值,计算另据节点到目标点的G值
邻居节点的父节点为firstNode,
将其加入到openList当中
所有的邻居节点都算完之后,把openList中的firstNode(经过排序,最小H值的节点被放在first)
放入到closeList当中, 从OpenList里面删除掉
然后重复上面的过程,知道fisrtNode与目标点相同,结束寻路,返回路径
写的不好...
大家还是看我学习时候的参考文章吧.........
http://www.raywenderlich.com/zh-hans/21503/a星寻路算法介绍
- AStar算法笔记
- AStar算法学习笔记
- Astar算法
- Astar算法
- AStar算法
- AStar算法
- JavaScript实现AStar算法
- C# Astar算法
- AStar(A星)算法
- (一)Astar算法
- astar算法伪代码
- cocos2dx(lua)ASTAR算法
- AStar寻径算法
- astar寻路算法
- AStar学习笔记
- AStar 算法(erlang版本)
- Egret寻路算法Astar
- Astar
- js取得本周,本月,上周,上月
- Binary Tree Maximum Path Sum
- FFMPEG SDK 开发介绍
- tomcat6.0的comet支持
- GPU及GPU通用计算编程模型简介
- AStar算法笔记
- linux下mysql常用基本操作
- opencv学习笔记(2)视频文件的读取与保存
- K-均值散列:学习二进制压缩码的近邻保留量化方法(董帆翻译)
- 计算机底层执行一条指令的过程
- (java)中file类的常用方法
- VIM命令模式与输入模式切换
- 亲密接触VC6.0编译器
- Java_List元素的遍历和删除