什么是粗略和细网格搜索?

问题描述 投票:3回答:1

我正在阅读此答案

Efficient (and well explained) implementation of a Quadtree for 2D collision detection

并遇到本段

好吧,因此实际上四叉树并不是我最喜欢的数据结构。我倾向于使用网格层次结构,例如世界的粗网格,区域的精细网格和子区域的精细网格(3个固定级别的密集网格,并且不涉及任何树),并带有行-基于优化的方法,这样将取消分配其中没有实体的行并将其变为空指针,同样,完全空的区域或子区域也将变为空。虽然这种在一个线程中运行的四叉树的简单实现可以以60 FPS的速度在我的i7上处理10万个代理,但是我实现了可以处理几百万个代理的网格,这些代理在较旧的硬件(i3)上每帧都相互反射。我也一直喜欢网格如何使它很容易预测它们需要多少内存,因为它们不细分单元。但我将尝试介绍如何实现合理有效的四叉树。

这种类型的网格看起来很直观,听起来像是“ N阶”网格,其中每个父级有4个子节点,而不是4个子节点。 N ^ 3可以比4 ^ 3更远,这可以提供更好的精度,而分支的数量可能更少(我想是因为分支的数量更少)。

我有些困惑,因为我会凭直觉地使用带有适当< operator()的单个或3 std :: map来减少其内存占用,但是我不确定它会这么快,因为查询AABB将意味着堆叠多个O(log n)访问。

他所说的那些基于行的优化到底是什么?这种类型的网格搜索常见吗?

我对z阶曲线有所了解,对四叉树并不完全满意。

我正在阅读此答案高效(且已充分解释)用于2D碰撞检测的四叉树实现,并且遇到了此段落好吧,所以实际上四叉树不是我的...

performance binary-search-tree quadtree space-partitioning
1个回答
0
投票

我回答这个问题很不礼貌,因为这是我自己的报价。但这是基于我在个人经历中遇到的常见模式。

© www.soinside.com 2019 - 2024. All rights reserved.