我在2D空间中有一组点。这些点中的每一个都是具有以下字段的结构类型:
(x,y)
我想将距离一个点的预定义半径R
内的2D空间中的所有点分组。因此,如果点P1接近点P2,则它们被分组。如果P2接近P3 ...... P1,P2和P3将被认为是在同一组中,尽管P1和P3不在所需的距离。
然而,对我来说问题是,两个具有相同标签的点不能在同一组中。
重要的是要注意,可能会发生两个具有相同标签的点不在半径范围内,但是,在它们的中间还有另一个点,它们都在正确的距离内。
有没有正确快速的C ++方法?
编辑:我上传了一些照片以便于理解。
算法的起点如下:
每种颜色代表不同的标签,绿色的点都有Label = 1,红色的标签= 2 ...所以现在,下面的步骤将根据距离对这些点进行分组
然而,在底部组中,有两个绿点。这是必须满足的条件,而不是同一组中同一标签的两个点。这将导致两种不同的解决方案,这就是我想要的解决方案。 (我真的不在乎哪一个)
(绿点自己解开了一个小组)
(红点和绿点是另一组)