如何找出哪些堇青石最接近



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

比方说:

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

所以我的球员保持在10,20。我有三个不同的盒子,我需要找出哪一个最接近。有什么简单的计算方法吗?

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

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));

要找到最小距离(最近的点(,只需找到x和y偏移的平方和的最小差。根据毕达哥罗的理论,你不需要用平方根来计算实际距离。如果您在编写代码时遇到问题,请不要忘记包含您尝试过的内容。

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

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);

最新更新