我正在制作一个简单的游戏,并且偶然发现了这个问题。假设2D空间中有几个点。我想要的是让点彼此靠近以某种方式相互作用。找到另一点的某个半径内的所有点
让我扔的图片在这里为更好地理解这一问题:
现在,问题不是关于计算距离。我知道该怎么做。
起初我有大约10分,我可以简单地检查每一个组合,但正如你可以假设的那样,随着积分数量的增加,这是非常低效的。如果我总共有一百万分,但所有这些分数彼此之间会很疏远呢?
我试图找到一个合适的数据结构或一种方法来看待这个问题,所以每个点只能介意他们的周围而不是整个空间。有没有已知的算法?我不完全知道如何命名这个问题,所以我可以谷歌到我想要的。
如果你不知道这种已知的algorighm,所有的想法都非常受欢迎。
我不知道如果是最好的主意,但它总比没有好。将二维空间存储在此结构中:array(array(bool)),如果有一个点,则为true;如果没有,则为false。因此,当你想在半径内找到点时,你不必评估整个矩阵,只需评估半径范围内的位置 –
https://en.wikipedia.org/wiki/K-d_tree – amit
@pablito。这实际上是我的第一个想法之一。仍然不太喜欢检查你周围的每个像素的想法。 – Saraph