如何找出最接近的座标?

时间:2018-07-13 06:28:28

标签: javascript jquery

我想知道如何将我的坐标计算为一组坐标,并找出最接近的一个?

让我们说:

var player = {
  x: 10,
  y: 20
}

var box = [
  {x: 17, y: 30},
  {x: 41, y: 14},
  {x: 20, y: 30}
];

所以我的玩家停留在10、20上。我有3个不同的装箱框,我需要找出最接近的一个。有什么简单的方法可以计算出来吗?

3 个答案:

答案 0 :(得分:2)

您可以通过检查每个距离并返回最短的对象来计算距离并缩小数组。

function getDistance(p1, p2) {
    return Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2))
}

var player = { x: 10, y: 20 },
    box = [{ x: 17, y: 30 }, { x: 41, y: 14 }, { x: 20, y: 30 }];

console.log(box.reduce((a, b) => getDistance(a, player) < getDistance(b, player) ? a : b));

答案 1 :(得分:1)

要找到最小的距离(最接近的点),只需找到x和y偏移的平方和之差最小即可。您不需要根据平方定理来求平方根即可找到实际距离。如果您在编写代码时遇到困难,请不要忘记包含您尝试过的内容。

答案 2 :(得分:0)

您可以使用2点画布formla并根据距离对其进行排序

let positions = [
  {x: 17, y: 30},
  {x: 41, y: 14},
  {x: 20, y: 30}
];

let x=10;
let y= 20;

let positions_close=positions.sort(p=>Math.hypot(p.x-x, p.y-y));

console.log(positions_close[0]);

//check the distance
let distances=positions.map(p=>Math.hypot(p.x-x, p.y-y));
console.log(distances);