繁体   English   中英

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

[英]Efficient data structure for storing 3d points

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

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

id xyz

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

坐标的数量将是巨大的,可能约为1000000。

提前致谢!

内存效率更高的结构

比什么更有效率的内存? 一个列表? 您需要为此进行压缩。

快速搜索一组特定的坐标

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

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

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

如果您需要在测试坐标附近查找坐标,则可以选择球形树或八叉树等,但这听起来并不是您所需要的。

您可以使用struct

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM