Data structures 三维移动点的数据结构

Data structures 三维移动点的数据结构,data-structures,nearest-neighbor,kdtree,space-partitioning,Data Structures,Nearest Neighbor,Kdtree,Space Partitioning,我在三维空间中有很多点(+100000)。我需要使用最近邻和范围查询。首先,我使用kdtree(k=3),但每个点都有一个速度属性。它们的位置不是静态的,它们会改变它们的位置。问题从这里开始。使用它们的旧位置进行最近邻和范围查询很容易。但我必须根据它们的速度来计算它们的新位置。我必须找到最近的邻居,并在计算他们的新位置后在范围内搜索 每次点改变位置时,我都必须更新kdtree,但代价很高。它使我慢下来。对于这种情况,您有什么建议或者有更好的数据结构吗?八叉树或八进制键可以更快。八进制键通常使用莫

我在三维空间中有很多点(+100000)。我需要使用最近邻和范围查询。首先,我使用kdtree(k=3),但每个点都有一个速度属性。它们的位置不是静态的,它们会改变它们的位置。问题从这里开始。使用它们的旧位置进行最近邻和范围查询很容易。但我必须根据它们的速度来计算它们的新位置。我必须找到最近的邻居,并在计算他们的新位置后在范围内搜索


每次点改变位置时,我都必须更新kdtree,但代价很高。它使我慢下来。对于这种情况,您有什么建议或者有更好的数据结构吗?

八叉树或八进制键可以更快。八进制键通常使用莫顿曲线或希尔伯特曲线。它减少了尺寸并填充了空间。它通常用于地图应用。要在3d中找到方向,灰色代码有助于找到正确的象限。下面是一个关于移动对象的有趣线程:。它推荐四叉树、链表树或三叉树。

我听说过八叉树,但从未听过莫顿曲线或希尔伯特曲线。他们如何解决这个速度问题?如果您能详细解释,我将不胜感激。我已经编写了一个php类hilbert curve@phpclasses.org。你也可以通过谷歌搜索bing地图quadkey来获得解释。但是,仅对静态对象使用范围查询也是有意义的。对于其他对象,请使用简单的数据结构,如链表。