Navigation 如何在四叉树上进行*导航

Navigation 如何在四叉树上进行*导航,navigation,path-finding,a-star,quadtree,pathfinder,Navigation,Path Finding,A Star,Quadtree,Pathfinder,我想在四叉树上做导航 我已经实现了一个四叉树,或者至少我认为是一个四叉树。同时,我也看到了一些内部节点包含元素的地方。使用mine,内部节点仅链接到其子节点,元素存储在叶节点的集合中。 虽然每个节点都链接到其父节点,但(当前)没有链接到邻居,也没有兄弟节点或其他分支的节点。元素是区域,而不仅仅是点 我也在grids上看到了一段时间,甚至在QuadTree上看到了一个演示,但这没有细节 我想主要的问题是我怎样才能很快找到我的邻居 我不确定我是否应该保持这些叶子相互链接。但这将是一个地狱般的工作,因

我想在四叉树上做导航

我已经实现了一个四叉树,或者至少我认为是一个四叉树。同时,我也看到了一些内部节点包含元素的地方。使用mine,内部节点仅链接到其子节点,元素存储在叶节点的集合中。 虽然每个节点都链接到其父节点,但(当前)没有链接到邻居,也没有兄弟节点或其他分支的节点。元素是区域,而不仅仅是点

我也在grids上看到了一段时间,甚至在QuadTree上看到了一个演示,但这没有细节

我想主要的问题是我怎样才能很快找到我的邻居

我不确定我是否应该保持这些叶子相互链接。但这将是一个地狱般的工作,因为树是动态的元素更新其位置。它还需要一些链接的动态收集,因为根据节点大小,一个大叶子可以在一个方向上有很多小叶子(例如东)。更新这篇文章的努力似乎相当巨大,即使目前我也不知道该怎么做


Thx n rgds

A*是一种用于查找从开始节点到结束节点的最短路径的算法。这在树上没有多大意义,因为最短的路径总是从起点到终点,然后一直到终点

如果由于某种原因无法在树中找到终点,则必须将树视为普通图,并进行广度优先搜索(或a*,如果有某种启发式)

我想主要的问题是我怎样才能很快找到我的邻居


在树中存储指向每个节点的父节点的指针。然后,可以通过查看其父节点的所有子节点来查看节点的同级节点。

这是可能的,但肯定不是最优的。A*在图形数据结构上完成。其中“图形”表示可以非常快速地访问节点——最好是通过直接指针/引用

通过四叉树获取邻居的正常方法是-因此,递归检查子项是否在查询范围内。也是

如果你还需要一个*你可以用另一种方法:使用一个普通图,在它上面做一个*并实现最近邻搜索