如何仅使用一个点云存储两个3D点云的信息?

问题描述 投票:0回答:1

假设我有两个 3D 点云,它们代表变换的起点和终点。现在我想将起点和终点点云信息都存储到数据库中,但数据库只允许输入一个点云。有没有什么方法可以将一个“代表性”点云的 3D 坐标存储为标识符,以便始终可以从该标识符再现起点和终点点云(例如使用数学变换或散列的某些固定规则)?

math hash transform uniqueidentifier identifier
1个回答
0
投票

我们可能需要数据库施加的限制的更具体细节,以及点本身的性质(正/负、整数/有理数/实数等)来提供具体的答案。不过,我至少会在下面提供一些建议。

数据库是否严格限制为 3 维?如果它可以支持 6+ 维数据,只需对额外轴中的第二个点进行编码即可。如果它至少可以支持 4 个维度,您可以使用第 4 个维度作为每个点的唯一标识符,合并到两个点云,并通过第 4 个维度将起点/终点配对。

这些点是整数坐标吗?如果是这样,您可以使用 Cantor 配对函数

x1
x2
映射到单个唯一整数
x3
,并对每个点的 y 和 z 坐标执行相同的操作。如果它们不是整数,但精度不是一个大问题,您可以按某个大系数放大坐标,然后四舍五入到最接近的整数,然后应用配对技巧。

如果精度允许,你也可以将这两种策略结合起来。假设您的点在 x 轴上跨度为

[-1e3, 1e3]
,那么您不需要太多的精度。您可以将
k * 1e4
添加到第 k 个起点/终点的 x 分量。如果您按新的 x 分量对点进行排序,它会将起点和终点配对。您可以对 y 或 z 分量执行类似的操作来区分是开始还是结束。当然,您可以通过将每个分量对您的倍数取模来恢复原始点。

© www.soinside.com 2019 - 2024. All rights reserved.