Java 从远处获取点的坐标

Java 从远处获取点的坐标,java,algorithm,math,bots,calculation,Java,Algorithm,Math,Bots,Calculation,所以,我在做一个机器人算法游戏,我有2个玩家和7个球 我设法计算了每个球员和每个球之间的距离,但现在我需要我的球员移动到距离球员最短的球的坐标 球员和球是2类,其中2个整数,x&y是他们的坐标 我用计算机计算了距离 Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)) 现在我需要的是得到最短距离的x和y坐标。我曾考虑反转公式,以获得x值和y值,但我不确定它是否会给我带来期望的结果 你有什么想法或不同的方法吗?我只需要一些想法和解决方法,其余的由我来做 无法发布代码

所以,我在做一个机器人算法游戏,我有2个玩家和7个球

我设法计算了每个球员和每个球之间的距离,但现在我需要我的球员移动到距离球员最短的球的坐标

球员和球是2类,其中2个整数,x&y是他们的坐标

我用计算机计算了距离
Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))

现在我需要的是得到最短距离的x和y坐标。我曾考虑反转公式,以获得x值y值,但我不确定它是否会给我带来期望的结果

你有什么想法或不同的方法吗?我只需要一些想法和解决方法,其余的由我来做


无法发布代码,因为许多其他方法、类等都不是本地存储的,所以我无法访问完整的源代码。如果您仍然认为您可以更好地帮助编写代码,我将把它上传到这里。

我假设您的项目包含代表球员和球的对象,这些对象包含X-Y坐标,并且您希望移动到最近的球(而不是传送到球)

如果假设是正确的,那么您需要的是最近球的方向向量。每个球都应该知道它的X-Y坐标,你不需要计算它们——或者我错过了点

i、 e.类似于以下伪代码:

class Player { float x, y };
class Ball { float x, y };

// Determine nearest ball
function distance(Player, Ball) = ... // the code you already posted
Ball nearest = for each ball { calculate distance } and find lowest

// Calculate direction to nearest ball
Vector dir = normalize(nearest.xy - player.xy);

// Move player
Vector move = dir * speed;
player.xy += move;
nearest.xy-player.xy
计算最近球的方向,并将其规格化为单位向量


关于简单向量数学,有很多教程。

你说你需要“最短距离的x和y坐标”到底是什么意思?您发布的公式只有两组坐标,因此根据定义,它们已经彼此最接近。或者你在你的代码中用不同的X/Y变量多次计算这个公式,你想知道哪一个结果是最低的吗?所以我用这个公式两次(每个球员一次),对于一个球存储在其中的数组。现在,我得到了每个球员到每个球的距离。我需要找出如何得到球的x和y坐标,这是最接近任何球员的坐标。@Oh,我确实说了伪代码-我想在提供任何“真实”代码之前确保我理解了问题的要点。