猿问

平面中的一组点

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

我发现如果我选择平面中的任何一个点,都可以确定围绕所选点的圆的半径“D”,其中包含在该半径内的所有中点都可以与目标点通信。

我的问题:在 Java 中存在更好的方法吗?

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


MYYA
浏览 122回答 1
1回答

幕布斯7119047

我可能没有完全理解你的问题,但这是我对如何在网格上找到离你选择的点 D 距离内的所有点的看法。可能有一种更快的方法,但这是我想到的。基本的蛮力方法是去每个点并使用距离公式来检查它是否可以与您选择的点通信。您可以通过限制需要检查的点来改进这一点。如果您选择的点是 (10, 10) 并且 D = 5,则没有理由检查诸如 (0, 0) 之类的点,因为它显然太远了。因此,您可以将检查的点数限制在边长为 D*2 的简单正方形中。例如,如果您选择的点是 (10, 10) 且 D = 5,则每个潜在的可通信点都位于具有角 (5, 5)、(5, 15)、(15, 5)、(15, 5) 的正方形内)。
随时随地看视频慕课网APP

相关分类

Java
我要回答