用于存储 3d 点的高效数据结构
Efficient data structure for storing 3d points
我正在寻找用于存储 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];
相关文章:
- 链表,反向函数,数据结构
- 如何使用set实现无序数据结构?
- 我们可以将数据永久保存为数据结构吗?
- C++中的可变长度数组/数据结构
- 用于存储由空格分隔的字符串的 C++/C 数据结构
- 通过 NIF 从C++返回自定义数据结构
- 编译器上的策略数据结构不起作用
- 尝试构建"lock-free"数据结构C++
- 用于高效搜索的数据结构
- 用于双向随机访问的 C++ 高效数据结构
- 在Haskell中使用O(1)元素访问实现高效的类似拉链的数据结构
- C++ 高效的数据结构,用于附加具有覆盖的数据
- 用于存储 3d 点的高效数据结构
- 高效频率计算的数据结构决策.
- C++:用于高效插入和检索自定义数据的数据结构
- 密集矩阵和稀疏矩阵的高效(时间和空间复杂性)数据结构
- 更高效的数据结构
- Zobrist密钥的高效数据结构
- 该数据结构支持高效删除和随机访问
- 数据结构+算法为ipv4存储高效搜索前缀