平面上的一组点

A set of points in the plane

我正在寻找在 Java 中开发一种方法的想法,以计算平面中可以尽可能长距离通信并由 "D" 每个点表示的最大点数的点被视为具有两个坐标的对象,"X" 和 "Y" 表示为 2 int.

我发现如果我 select 平面中的任何一个点,都可以确定围绕点 selected 的圆的半径 "D",其中所有此半径内包含的中点可以与目标点通信。

我的问题: 在 Java?

中是否存在更好的方法

如果您有任何建议或想法,我们将不胜感激。

我可能没有完全理解你的问题,但这是我对如何在网格上找到距所选点 D 距离以内的所有点的看法。

可能有更快的方法,但这是我突然想到的方法。基本的蛮力方法是去每个点并使用距离公式来检查它是否可以与您选择的点通信。您可以通过限制需要检查的点来改进这一点。

如果您选择的点是 (10, 10) 并且 D = 5,则没有理由检查诸如 (0, 0) 之类的点,因为它显然太远了。因此,您可以将检查的点限制在一个边长为 D*2 的简单正方形中。

例如,如果您选择的点是 (10, 10) 并且 D = 5,则每个潜在的可通信点都在角为 (5, 5)、(5, 15)、(15, 5) 的正方形内, (15, 5).