到目前为止,我已经使用递归函数为八叉树建立了索引
i = p * 8 + c + 1
其中p是父索引,而c是本地节点索引(0-7) 这导致八叉树的每个节点都有唯一的索引,这使我避免了必须在父级中存储子级索引-这样可以节省内存,让我可以通过简单地计算节点具有的键并对其进行访问来访问该节点的子级这样。
我将八叉树存储在地图中。
我有一个问题,我认为可以找到另一种索引树的方法来解决。我正独自努力,所以我想你们可以帮忙!
https://duskydepths.com/images/quadtree.png 这是我正在处理的问题的二维类比。在这种情况下,每个分支节点都有4个子节点。这是实现自适应分辨率网格的常用方法。
我正在寻找一种使用生成的索引来计算和查找树中与特定深度处的统一网格位置相对应的节点的方法。通常,我会通过检查网格上的目标位置是否大于或小于每个轴上树“分支”的值来使用递归来执行此操作,但是由于我的最终目标是在GPU上实现此目标,感觉这是最好的解决方案。我听说GPU在分支时烂透了。老实说,我只是想能够深入人心-最大限度地细分树,然后通过进行简单的计算将代表像素pos的整数矢量转换为八叉树索引,从而像访问像素一样访问最大深度节点。>
很抱歉,如果这是一个明显且已解决的问题!我从未正式学习过CS,所以我真的不知道它涉及哪个领域-如果您不想花时间回答,那么朝正确的方向轻推就足够了。