dl
dl::AStar< T, COST > 模板类 参考

A星寻路算法 更多...

#include <dl_astar.h>

class  AStarNode
 
class  AStarPriorityQueue
 

Public 类型

using AStarPoint = T
 
using AStarCost = COST
 
using FuncCost = std::function<AStarCost(const AStarPoint&, const AStarPoint&)>
 
using FuncLink = std::function<void(AStar*, const AStarPoint&)>
 

Public 成员函数

AStarPoint AbsPoint (const AStarPoint &a, const AStarPoint &b)
 
AStarCost AStarGetH (const AStarPoint &p0, const AStarPoint &p1)
 默认获取H方法
 
 AStar (const AStarPoint &size, FuncCost func_g, FuncCost func_h=nullptr, FuncLink func_link=nullptr, size_t max_node=10000)
 定制一个A星寻路
 
void SetSize (const AStarPoint &size)
 
bool Search (const AStarPoint &source, const AStarPoint &target, bool target_near, std::list< AStarPoint > &list_path, std::list< AStarPoint > *fail_path=nullptr)
 搜索
 
void AddNode (const AStarPoint &xy, AStarCost k_cost)
 添加节点(在func_link回调函数使用)
 
void SetLinkDiagonal (bool diagonal)
 设置是否对角线可走(使用默认连接函数才有效)
 
void SetFuncLink (FuncLink func_link)
 修改连接函数
 
 ~AStar ()
 

静态 Public 成员函数

static bool AStarNodeCompare (AStarNode *n1, AStarNode *n2)
 

详细描述

template<typename T, typename COST>
class dl::AStar< T, COST >

A星寻路算法

在文件 dl_astar.h33 行定义.

成员类型定义说明

◆ AStarCost

template<typename T, typename COST>
using dl::AStar< T, COST >::AStarCost = COST

在文件 dl_astar.h39 行定义.

◆ AStarPoint

template<typename T, typename COST>
using dl::AStar< T, COST >::AStarPoint = T

在文件 dl_astar.h37 行定义.

◆ FuncCost

template<typename T, typename COST>
using dl::AStar< T, COST >::FuncCost = std::function<AStarCost(const AStarPoint&, const AStarPoint&)>

在文件 dl_astar.h40 行定义.

◆ FuncLink

template<typename T, typename COST>
using dl::AStar< T, COST >::FuncLink = std::function<void(AStar*, const AStarPoint&)>

在文件 dl_astar.h41 行定义.

构造及析构函数说明

◆ AStar()

template<typename T, typename COST>
dl::AStar< T, COST >::AStar ( const AStarPoint & size,
FuncCost func_g,
FuncCost func_h = nullptr,
FuncLink func_link = nullptr,
size_t max_node = 10000 )
inline

定制一个A星寻路

参数
[in]size地图大小,传0不检查
[in]func_g估价g函数(从p0点到p1点实际代价,一般取p1的代价值,p0与p1应为相邻节点)
[in]func_h估价h函数(从p0点到目标点估计代价,一般为距离)
[in]func_link连接函数(加入节点的相邻节点)
[in]max_node节点上限(超过返回失败)

在文件 dl_astar.h130 行定义.

◆ ~AStar()

template<typename T, typename COST>
dl::AStar< T, COST >::~AStar ( )
inline

在文件 dl_astar.h319 行定义.

成员函数说明

◆ AbsPoint()

template<typename T, typename COST>
AStarPoint dl::AStar< T, COST >::AbsPoint ( const AStarPoint & a,
const AStarPoint & b )
inline

在文件 dl_astar.h99 行定义.

◆ AddNode()

template<typename T, typename COST>
void dl::AStar< T, COST >::AddNode ( const AStarPoint & xy,
AStarCost k_cost )
inline

添加节点(在func_link回调函数使用)

参数
[in]xy节点位置
[in]k价值系数

在文件 dl_astar.h250 行定义.

◆ AStarGetH()

template<typename T, typename COST>
AStarCost dl::AStar< T, COST >::AStarGetH ( const AStarPoint & p0,
const AStarPoint & p1 )
inline

默认获取H方法

参数
[in]xy节点位置
[in]k价值系数

< 横着走系数

< 斜着走系数

在文件 dl_astar.h112 行定义.

◆ AStarNodeCompare()

template<typename T, typename COST>
static bool dl::AStar< T, COST >::AStarNodeCompare ( AStarNode * n1,
AStarNode * n2 )
inlinestatic

在文件 dl_astar.h55 行定义.

◆ Search()

template<typename T, typename COST>
bool dl::AStar< T, COST >::Search ( const AStarPoint & source,
const AStarPoint & target,
bool target_near,
std::list< AStarPoint > & list_path,
std::list< AStarPoint > * fail_path = nullptr )
inline

搜索

参数
[in]source起始点
[in]target目标点
[in]target_near如果为真,在相邻目标点就返回路径,而不考虑目标点是否可通行
[out]list_path返回路径,包含首尾节点(target_near为真时,不返回尾节点)
[out]fail_path寻路失败时返回的部分路径
返回值
是否成功

在文件 dl_astar.h166 行定义.

◆ SetFuncLink()

template<typename T, typename COST>
void dl::AStar< T, COST >::SetFuncLink ( FuncLink func_link)
inline

修改连接函数

在文件 dl_astar.h313 行定义.

◆ SetLinkDiagonal()

template<typename T, typename COST>
void dl::AStar< T, COST >::SetLinkDiagonal ( bool diagonal)
inline

设置是否对角线可走(使用默认连接函数才有效)

在文件 dl_astar.h304 行定义.

◆ SetSize()

template<typename T, typename COST>
void dl::AStar< T, COST >::SetSize ( const AStarPoint & size)
inline

在文件 dl_astar.h152 行定义.


该类的文档由以下文件生成: