从距离获取点的坐标

时间:2020-11-12 13:39:18

标签: java algorithm math bots calculation

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

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

玩家和球是 2类,其中 2个整数,x和y是它们的坐标。

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

现在,我需要以某种方式获取最短距离的x和y坐标。我考虑过逆转公式以获得 x值 y值,但是我不确定是否能为我带来理想的结果

您有任何想法或不同的方法想法吗?我只需要一些想法和解决方法,其余的工作就由我来做。

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

1 个答案:

答案 0 :(得分:0)

我假设您的项目有一些对象,这些对象代表球员和包含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将其转换为单位矢量。

围绕简单的矢量数学有很多教程。