用于存储 3d 点的高效数据结构

Efficient data structure for storing 3d points

本文关键字:高效 数据结构 存储 3d 用于      更新时间:2023-10-16

我正在寻找用于存储 3d 点 (x,y,z) 的有效数据结构。在数据结构中的点处存储的效果应该会生成更节省内存的结构,并更快地搜索一组特定的坐标。3d 点映射到特定 ID,因此它应该能够跟踪我正在寻找任何可用实现的每组坐标。

x, y, z 给出了每个节点的笛卡尔坐标。

内径 x y z

1 14.566132 34.873772 7.857000

2 16.022520 33.760513 7.047000

3 17.542000 32.604973 6.885001

4 19.163984 32.022469 5.913000

5 20.448090 30.822802 4.860000

6 21.897903 28.881084 3.402000

7 18.461960 30.289471 8.586000

8 19.420759 28.730757 9.558000

坐标的数量将很大,可能在1 000 000左右。

提前感谢!

更节省内存的结构

内存效率比什么高?一个清单?为此,您需要压缩。

更快地搜索一组特定的坐标

如果要从一组坐标中找到 k 个最近的点,球树是一个不错的选择。

如果要搜索卷,四叉树(或八叉树)效果更好。

我听说您正在查找的坐标与结构中的坐标完全匹配。 根据您的空间分布,您可以创建一个哈希函数,该函数采用坐标并尝试生成相当独特的内容,然后仅使用标准哈希映射。 大多数现代语言都提供某种哈希映射实现,因此您需要做的就是为坐标提供适当的哈希值。

如果您需要查找测试坐标附近的坐标,那么球树或八叉树之类的东西,但听起来这不是您需要的。

您可以使用

struct

struct coordinate
{
   double x;
   double y;
   double z;
} points[1000000];