[Astar_algorithm06]技术文档_A_star

Posted AIplusX

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Astar_algorithm06]技术文档_A_star相关的知识,希望对你有一定的参考价值。

  • file:A_star.cpp

  • brief:基于父节点搜索邻域格点

  • author:AIplusX

  • param[in|out] 输入:父节点内存的地址 | 输出:无

  • return:无

  • exception:无

  • note:首先根据数组索引父节点周围的格点,然后根据算法逻辑进行格点属性(G,F值)的更新

  • remarks:注意堆中内存的利用,如果申请的内存代表的坐标已经有了,或者是障碍物,那么就需要delete掉申请的内存

void A_star::search_env_block(Point* p)
{
	int temp_cost(INT_MAX);

	for (int i = 0; i < env_nums; i++) {
		
		Point* search_p = new Point((*p).x + offset_x[i], (*p).y + offset_y[i]);

		if (judge_env_legal(*search_p)) {

			temp_cost = (*p).Gn + calcu_cost(*p, *search_p);

			if (is_alread_set(obstacleset, search_p) || is_alread_set(fatherset, search_p)) {
				delete search_p;
				continue;
			}
			else {
				user_trajectory.map[search_p->x][search_p->y] = SEARCH;
				if (!is_alread_set(openset, search_p)) {
					search_p->Gn = temp_cost;
					search_p->Fn = search_p->Gn + calcu_Hn(*search_p);
					search_p->pre_point = p;
					add_openset(search_p);
				}else if(search_p->Gn > temp_cost){
					search_p->Gn = temp_cost;
					search_p->Fn = search_p->Gn + calcu_Hn(*search_p);
					search_p->pre_point = p;
				}
				
			}
		}
		else {delete search_p;}
	}

}

[Astar_algorithm06]技术文档_A_star

以上是关于[Astar_algorithm06]技术文档_A_star的主要内容,如果未能解决你的问题,请参考以下文章

[Astar_algorithm07]技术文档_Graph

[Astar_algorithm04]A_star类与Astar_algorithm函数

[Astar_algorithm01]A*算法伪代码以及思路

[Astar_algorithm02]启发函数的比较

[Astar_algorithm03]随机障碍点生成以及坐标点传递方法

返回随机图片的API_2020.06.12