【问题标题】:Get Coordinates of a Point from Distance从距离获取点的坐标
【发布时间】:2020-11-12 13:39:18
【问题描述】:

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

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

Players 和 Balls 是 2 个类,有 2 个整数,x 和 y 是它们的坐标。

我通过使用计算距离 Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1))

现在我需要以某种方式获取最短距离的 x 和 y 坐标。我想过反转公式以获得x值y值,但我不确定它会给我带来想要的结果.

您有什么想法或不同的方法想法吗?我只需要一些想法和解决方法,剩下的由我来做。

无法发布代码,因为许多其他方法、类等未存储在本地,因此我无权访问完整的源代码。如果您仍然认为您可以在代码方面提供更好的帮助,我将在此处上传。

【问题讨论】:

  • 你说你需要“最短距离的x和y坐标”到底是什么意思?您发布的公式只有 2 组坐标,因此根据定义它们已经是彼此最接近的。或者您是否在代码中使用不同的 X/Y 变量多次计算该公式,并且您想知道哪个结果最低?
  • 所以我使用这个公式两次,(每个球员一次),用于存储球的数组。现在,我得到每个球员到每个球的距离。我需要弄清楚如何获得离任何球员最近的球的 x 和 y 坐标。

标签: java algorithm math bots calculation


【解决方案1】:

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

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

即类似这样的伪代码:

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 计算 方向 到最近的球,normalize 将其转换为单位向量。

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

【讨论】:

  • @OHGODSPIDERS 我确实说过伪代码 - 想确保我在提供任何“真实”代码之前理解问题的要点。
猜你喜欢
  • 2017-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多