ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[Astar_algorithm04]A_star类与Astar_algorithm函数

2021-11-12 20:06:39  阅读:216  来源: 互联网

标签:star Point algorithm04 void min Astar int const Fn


A_star类

源码如下所示:

class A_star
{
	public:
		A_star() {};
		~A_star();
		void Astar_algorithm();
		bool judge_env_legal(const Point&);
		int calcu_Hn(const Point&);
		int calcu_Gn(const Point&);
		int calcu_cost(const Point&, const Point&);
		void set_start_end_obs_map(Graph&);
		void add_openset(Point* p) { openset.push_back(p); };
		void add_fatherset(Point* p) { fatherset.push_back(p); };
		void delete_openset(const int& idx) {openset.erase(openset.begin() + idx);};
		void search_env_block(Point*);
		void calcu_type_selection(int&, const int&, const int&);
		void show_para_below(Point*);
		bool is_alread_set(std::vector<Point*>&, Point*);
		void get_trajectory(const Point*);
		UserPara get_astar_userpara();
		Point* find_min_Fn(int& idx);

	private:
		int cross_cost = 14;
		int plane_cost = 10;
		std::vector<Point*> openset;
		std::vector<Point*> fatherset;
		//std::vector<Point*> trajectory;
		std::vector<Point*> obstacleset;		
		Point start;
		Point end;
		UserPara user_trajectory;
		const int env_nums = 8;
		//int offset_x[4] = {0, 1, 0, -1};
		//int offset_y[4] = {-1, 0, 1, 0};
		int offset_x[8] = {-1, 0, 1, 1, 1, 0, -1, -1};
		int offset_y[8] = { -1, -1, -1, 0, 1, 1, 1, 0};
		
};

这个就是A_star类定义,下面是Astar_algorithm函数主体:

void A_star::Astar_algorithm()
{
	int min_Fn_idx(0);
	Point* min_Fn_p = new Point(start.x, start.y);

	memcpy(min_Fn_p, &start, sizeof(start));
	add_openset(min_Fn_p);
	
	while (!openset.empty()) {
		Graph::show_map(user_trajectory);
		min_Fn_p = find_min_Fn(min_Fn_idx);
		show_para_below(min_Fn_p);
		if (*min_Fn_p == end) { break; }
		search_env_block(min_Fn_p);
		
		add_fatherset(min_Fn_p);
		delete_openset(min_Fn_idx);
		
		user_trajectory.map[min_Fn_p->x][min_Fn_p->y] = PASS_SEARCH;
	}

	get_trajectory(min_Fn_p);
}

可以看到,这个这个函数主体就是这篇文章里的伪代码的具体实现:[Astar_algorithm01]A*算法伪代码以及思路

标签:star,Point,algorithm04,void,min,Astar,int,const,Fn
来源: https://blog.csdn.net/weixin_43454320/article/details/121294620

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有