algorithm - 空间排序 3d 空间中的百万个点

标签 algorithm sorting 3d computational-geometry

我在 3d 空间中有百万个点的集合。

每个点都是一个对象

Struct Point
{
    double x;
    double y;
    double z;
};

一百万个点以某种随机顺序存储在 C++ 向量 MyPoints 中。

我想根据空间中点的空间分布对这百万个点进行排序,这样物理上更接近的点在排序后也应该在我的数组中更接近。

我对如何做到这一点的第一个猜测如下:首先对 Z 轴排序点,然后沿 Y 轴排序点,然后沿 X 轴排序点

MyPointsSortedAlongZ = Sort(MyPoints, AlongZAxis )
MyPointsSortedAlongY = Sort(MyPointsSortedAlongZ , AlongYAxis  )
MyPointsSortedAlongX = Sort(MyPointsSortedAlongY , AlongYAxis  )

首先,我不知道这个方法是否正确。我的最终点数组 MyPointsSortedAlongX 会在空间上完美排序(或接近空间排序)吗?

其次,如果这个方法是正确的,那么它是不是最快的方法呢?有什么更好的方法来做到这一点?

最佳答案

CGAL图书馆提供 implementation空间填充曲线算法可用于该任务。

关于algorithm - 空间排序 3d 空间中的百万个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22780094/

相关文章:

Javascript:按日期字符串属性对对象列表进行排序,其中日期可以是未定义的

返回键的javascript排序函数

powershell - 正确排序包含版本号的列表

opengl - 3D 数学 - 仅将位置保持在一定码数内

java - 如何使用JOML在3D投影到2D平面上模拟OpenGL之类的模型、 View 矩阵?

algorithm - 替代峰谷算法混淆

algorithm - 插入/删除/排名/选择查询的最佳数据结构/算法

c++ - 使用多重映射算法 (std::minmax_element) 在成对的多重映射中找到最大/最小键 <Class object, enum>?

algorithm - 动态规划练习算法

javascript - Three.js:具有缩放和混合效果的 Transition 2 纹理