如何在Python中将比距离阈值更近的3d点分组?

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

我有一组 3d 点,我想根据某个阈值距离找到“靠近”的任何组,并创建一个组(将它们从我的集合中删除)。所以我最终得到了一组点和其余的点。

“靠近”的定义是它们适合小于阈值距离的球体,因此我不会在一组中得到一行点。

我需要在 python 中执行此操作,我对此不太熟悉(cpp 编码器)。它是预编译的,因此不必那么快,而且不可能超过几千个点。

理想情况下,我希望它的实现相当简单,因为它使用库或者很简单。

任何指向算法或示例代码的指针将不胜感激。

python algorithm 3d
1个回答
0
投票

我相信您所描述的问题可以概括为:创建覆盖属于 3D 空间的一组点的最小数量的给定直径的球体。

CS 堆栈交换上有一篇文章描述了这个确切的问题以及可以解决该问题的算法的描述:https://cs.stackexchange.com/questions/48412/cover-points-with-minimal-number固定半径球体

解决方案似乎在于解决一个 NP 难题,因此根据输入的大小,它可能不可行。这个存储库似乎包含 CS 堆栈交换帖子中建议的算法的实现:https://github.com/farjasju/CliqueCover。它还包含一种启发式实现,可能不会产生最佳解决方案,但它可能足以适合您的用例。

这篇文章还建议研究一下聚类,我认为这可能不适合您的需求,但如果您发现上述方法不起作用,这可能是一个探索的方向。

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