A*寻路算法笔记 2011

寻路是很多游戏需要实现的功能,简言之,就是确定起点和终点,找出到达的路线。常见应用:电脑怪物对主人公进行追踪打击。

AStar是目前使用较多的一种寻路算法,最近比较感兴趣研究了下,记录一些要点:

 

1,寻路的基础是将地图网格化,转化为二维数组,这样做的好处是节省计算资源,简化计算模型,也很接近真实。

2,AStar是从起点开始向外依次计算临近网格到目标网格的距离,得出最短距离。

3,F = H + G;G值是从起点到该网格累加的距离值,两个网格如果是垂直或水平相邻则G值差为10,如果是斜角相邻G值差为14,为什么是14很简单:等腰直角三角形直角边是10,斜边就是14...,为了节省计算资源,用整数14近似替代。H值是当前网格到目标网格的近似距离,这是一个系数,有多种公式实现,比较简化的算法是垂直距离与横向距离之和。  F值就表明的是当前点到目标点的近似距离,F值越小,就表明该网格很有可能是最优路线上的一个节点。

4,开放列表中存放的是检查过的所有节点(除了放入封闭列表的),封闭列表中存放的是每次寻路中F值最小的节点

5,当开放列表中已经没有节点时,表明寻路失败,当目标节点被添加到开放列表中时,表明寻路成功。

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
threejs是一个用于创建和显示3D图形的JavaScript库。它可以帮助开发人员在网页上实现逼真的3D效果。 A*寻路算法是一种常用的路径规划算法,用于找到从起点到终点的最短路径。它基于图的搜索,并使用启发式函数来评估节点的优先级。在threejs中,A*寻路算法可以应用于3D场景中的对象移动和导航。 使用A*寻路算法,我们可以在threejs中实现以下步骤: 1. 创建一个网格地图:将3D场景划分为一个个网格,其中每个网格可以是可通过或不可通过的区域。这个网格地图可以是一个二维数组或者一个图数据结构。 2. 定义起点和终点:在网格地图上指定一个起点和一个终点。起点表示对象当前的位置,终点表示对象希望到达的位置。 3. 计算邻居节点:对于当前节点,计算周围可通过的邻居节点。这些节点将成为A*算法的候选节点。 4. 计算启发式函数:为每个候选节点计算启发式函数的值。启发式函数评估从该节点到目标的预测距离。常用的启发式函数是曼哈顿距离或欧几里得距离。 5. 选择最佳节点:从候选节点中选择具有最低启发式函数值的节点作为下一个节点。将其标记为已访问。 6. 更新路径和开放列表:将选择的节点添加到路径中,并将其邻居节点添加到开放列表中。 7. 重复步骤4至步骤6,直到到达终点或开放列表为空。 8. 生成最短路径:回溯从起点到终点的节点,形成最短路径。 在threejs中,我们可以使用A*寻路算法实现对象的智能导航,让对象能够自动寻找并移动到目标位置。这对于创建逼真的游戏角色、机器人或虚拟导航员非常有用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值