103得票7回答
高效(并且解释得很好)的二维四叉树实现用于碰撞检测

我正在编写一个程序,并想加入一个四叉树,但我注意到很少有解释清晰/性能良好的教程是我所需要的。 具体来说,我需要一份通常使用的四叉树方法列表和伪代码(或者它们的过程描述),例如检索,插入,删除等。此外,也许还需要一些提高性能的技巧。由于这是碰撞检测,因此最好以二维矩形为对象进行说明,因为它们...

85得票8回答
何时使用二进制空间分割、四叉树、八叉树?

最近我了解了二元空间分割树及其在3D图形和碰撞检测中的应用。我也简要地浏览了与四叉树和八叉树相关的材料。什么情况下应该使用四叉树而不是BSP树,反之亦然?它们是否可互换?如果我有足够的信息来填写如下表格,那就满意了: | BSP | Quadtree | Octree -...

44得票2回答
R-Tree和Quadtree的比较

我希望比较R-Tree和Quadtree在地理空间数据方面的应用。虽然有文献可查,但我很难找到介绍基本比较的文档。所以我决定问这个问题。 在我看来,R-Tree具有平衡性,树没有空叶子节点。作为缺点,如插入或删除等基本操作可能导致重构整个索引。 相反,四叉树不平衡,有空叶子,但不需要重构。...

36得票3回答
二维碰撞检测的四叉树

我正在尝试使用四叉树进行2D碰撞检测,但我对如何实现它感到有些困惑。首先,我会有一个四叉树,其中包含四个子树(每个象限都代表一个),以及一组无法放入单个子树中的对象。 在树中检查碰撞物体时,我会像这样做(感谢QuadTree for 2D collision detection): 检查...

34得票3回答
在Mathematica中实现四叉树

我在Mathematica中实现了quadtree。作为一个新手,我想知道是否可以通过更好地利用模式来改进或使其更加紧凑。 (我明白通过修剪未使用的节点可以优化树,并且可能会有更好的数据结构,如k-d树用于空间分解。) 此外,我仍然不确定每次添加新点时都要复制整个树/表达式的想法。但我的理...

30得票1回答
四叉树和kd树的区别

四叉树和kd-tree之间的主要区别是什么?我知道它们都可以在多个维度中分割点,但我不明白为什么会选择其中之一。我需要一种结构,可以让我计算在给定区域内有多少个点(2D点)。基本上,我正在尝试检测点的聚集。

20得票4回答
这些四叉树库有哪些好的呢?

看起来我的某个项目需要使用四叉树,这是我以前从未涉及过的东西。从我所了解的来看,它们应该比暴力尝试问题能产生更大的性能提升。这些Python模块中有哪些好用呢? Quadtree 0.1.2 <= 不行: 无法在Python 3.1中执行 QuadTree <= 可以: 简单且...

17得票6回答
存储物品以便通过x,y坐标进行定位

我正在尝试确定一种快速存储一组对象的方法,每个对象都有x和y坐标值,以便我可以快速检索某个矩形或圆周内的所有对象。 对于小的对象集(~100),简单地将它们存储在列表中并进行迭代是相对快速的。但是,对于更大的组,这样做会变得非常缓慢。 我还尝试将它们存储在一对TreeMaps中,一个按x坐标排...

17得票1回答
QuadTree二维碰撞检测

我目前正在开发一个2D射击游戏,使用四叉树进行碰撞检测。我编写了可以将演员正确推入树中所属的节点/叶子的四叉树。然而,我还有一些问题。 首先,如何使用我的四叉树选择其他对象以测试碰撞?我不确定该如何实现。 这带来了第二个问题。假设我有一个在节点中的物体,它不是另一个节点的邻居,但该物体足够...

13得票1回答
什么是粗略和精细的网格搜索?

我正在阅读这个回答: 高效(且解释得很好)的二维碰撞检测四叉树实现 并遇到了这段文字: 好吧,事实上四叉树不是我用于此目的的首选数据结构。我更倾向于使用网格层次结构,例如一个粗糙的世界网格、一个更精细的区域网格和一个更精细的子区域网格(3个密集级别的固定网格,没有涉及到树结构),使...