我需要找到三维空间中点云的直径(两个距离最远的点)。目前的临时解决方案是,我只是遍历所有可能的点对并比较它们之间的距离,这是一个非常慢的O(n^2)解决方案。
我相信可以用O(n log n)的时间复杂度完成。在二维平面上,这是一个相当简单的任务(只需找到凸包,然后应用旋转卡尺算法),但在三维空间中,我无法想象如何使用旋转卡尺算法,因为没有办法对点进行排序。
是否有任何简单的方法来实现它(或在python或C/C++中使用现成的实现)?
PS:StackOverflow上有类似的问题,但我发现的答案只涉及旋转卡尺(或类似的)算法,在二维情况下运行良好,但不清楚如何在三维(或更高维)中实现。
我相信可以用O(n log n)的时间复杂度完成。在二维平面上,这是一个相当简单的任务(只需找到凸包,然后应用旋转卡尺算法),但在三维空间中,我无法想象如何使用旋转卡尺算法,因为没有办法对点进行排序。
是否有任何简单的方法来实现它(或在python或C/C++中使用现成的实现)?
PS:StackOverflow上有类似的问题,但我发现的答案只涉及旋转卡尺(或类似的)算法,在二维情况下运行良好,但不清楚如何在三维(或更高维)中实现。