Java 如何选择与参考点有一定距离的随机点

Java 如何选择与参考点有一定距离的随机点,java,math,random,Java,Math,Random,我有点A(点A=(x1,y1)),我需要选择一个随机点B(点B=(x2,y2)),这样A和B之间的距离等于K这是一个简单的数学问题 x2 = x1 - k + 2k*new Random().nextDouble() 现在你可以计算y2了。这是一道简单的数学题 x2 = x1 - k + 2k*new Random().nextDouble() 现在你可以计算y2了。让我们用极坐标形式求解 我们需要这些双倍的distance,x1和y1 首先,我们需要以弧度为单位的角度: double an

我有点A
点A=(x1,y1)
),我需要选择一个随机点B
点B=(x2,y2)
),这样AB之间的距离等于K

这是一个简单的数学问题

x2 = x1 - k + 2k*new Random().nextDouble()

现在你可以计算y2了。

这是一道简单的数学题

x2 = x1 - k + 2k*new Random().nextDouble()

现在你可以计算y2了。

让我们用极坐标形式求解

我们需要这些双倍的
distance
x1
y1

首先,我们需要以弧度为单位的角度:

double angle = Math.random()*2*Math.PI;
然后我们想要得到从我们的点开始的x和y偏移:

double xOff = Math.cos(angle)*distance;
double yOff = Math.sin(angle)*distance;
然后我们将这些添加到第一点:

double x2 = x1 + xOff;
double y2 = y1 + yOff;

这将得到一个距离第一个点一定距离的点。

让我们用极坐标形式求解

我们需要这些双倍的
distance
x1
y1

首先,我们需要以弧度为单位的角度:

double angle = Math.random()*2*Math.PI;
然后我们想要得到从我们的点开始的x和y偏移:

double xOff = Math.cos(angle)*distance;
double yOff = Math.sin(angle)*distance;
然后我们将这些添加到第一点:

double x2 = x1 + xOff;
double y2 = y1 + yOff;

这将使您在距离第一个点一定距离的地方获得一个点。

[此答案][1]符合您的要求。[1] :可能重复的不是重复的。我投票结束这个问题,因为它是一个几何问题,而不是编码/软件问题。[这个答案][1]符合您的要求。[1] :可能重复的不是重复的。我投票结束这个问题,因为它是一个几何问题,不是一个编码/软件问题。为什么angle=Math.random()*2*PI?哦,我明白了。最大随机数为1。1*2*3.14=6.28弧度=360度。为什么角度=Math.random()*2*PI?哦,我明白了。最大随机数为1。1*2*3.14=6.28弧度=360°。