Javascript 计算对象中哪一个坐标最接近choosen坐标
我有一些带有坐标的数组中的对象Javascript 计算对象中哪一个坐标最接近choosen坐标,javascript,math,Javascript,Math,我有一些带有坐标的数组中的对象 var players = [ {x:100, y:100, pid:1}, {x:-100, y:200, pid:2}, {x:600, y:1200, pid:3} ] var mousepos={x:50,y:0} var selected=null 我想计算这些对象中哪一个的坐标与鼠标点最接近,然后选择它 selected=鼠标点最近坐标的pid 如果有人能给我简单的代码?伙计,这是答案。使用距离公式计算点之间的距离。距离最小的点是最近的点 公式:
var players = [
{x:100, y:100, pid:1},
{x:-100, y:200, pid:2},
{x:600, y:1200, pid:3}
]
var mousepos={x:50,y:0}
var selected=null
我想计算这些对象中哪一个的坐标与鼠标点最接近,然后选择它
selected=鼠标点最近坐标的pid
如果有人能给我简单的代码?伙计,这是答案。使用距离公式计算点之间的距离。距离最小的点是最近的点
公式:-Sqrt((x2-x1)2+(y2-y1)2)这是答案。使用距离公式计算点之间的距离。距离最小的点是最近的点
公式:-Sqrt((x2-x1)2+(y2-y1)2)您似乎在尝试计算。如果是这样,则可以使用内置对象。计算完距离后,您可以返回
索引
。使用此索引从玩家检索he对象
var玩家=[{
x:100,
y:100,
pid:1
},
{
x:-100,
y:200,
pid:2
},
{
x:600,
y:1200,
pid:3
}
]
var mousepos={
x:50,
y:0
}
函数CalculateUclidean(){
设selectedPid=0;
players.forEach(功能(项目、索引){
让距离=Math.sqrt(Math.pow((item.x-mousepos.x),2)+Math.pow((item.y-mousepos.y),2))
如果(索引==0){
selectedPid=索引
}否则如果(距离 log(calculateEuclidean())
您似乎正在尝试计算。如果是这样,则可以使用内置对象。计算完距离后,您可以返回索引
。使用此索引从玩家检索he对象
var玩家=[{
x:100,
y:100,
pid:1
},
{
x:-100,
y:200,
pid:2
},
{
x:600,
y:1200,
pid:3
}
]
var mousepos={
x:50,
y:0
}
函数CalculateUclidean(){
设selectedPid=0;
players.forEach(功能(项目、索引){
让距离=Math.sqrt(Math.pow((item.x-mousepos.x),2)+Math.pow((item.y-mousepos.y),2))
如果(索引==0){
selectedPid=索引
}否则如果(距离 console.log(calculateEuclidean())
由random from discord给出的工作示例
let closestPlayer = undefined;
let closestDist = undefined;
for (let i = 0; i < players.length; i++) {
let player = players[i];
let distance = Math.hypot(player.x - mousepos.x, player.y - mousepos.y);
if (closestPlayer == undefined || distance <= closestDist) {
closestPlayer = player;
closestDist = distance;
}
}
console.log(closestPlayer)
让closestPlayer=未定义;
设closestDist=未定义;
for(设i=0;i if(closestPlayer==未定义的| |距离由discord随机给出的工作示例
let closestPlayer = undefined;
let closestDist = undefined;
for (let i = 0; i < players.length; i++) {
let player = players[i];
let distance = Math.hypot(player.x - mousepos.x, player.y - mousepos.y);
if (closestPlayer == undefined || distance <= closestDist) {
closestPlayer = player;
closestDist = distance;
}
}
console.log(closestPlayer)
让closestPlayer=未定义;
设closestDist=未定义;
for(设i=0;i 如果(closestPlayer==undefined | | distance可能是Agreed的副本,它看起来像是简单的毕达哥尔理论可能是Agreed的副本,它看起来像是简单的毕达哥尔理论有时是NaN,你知道为什么吗?我怎么选择players.pid呢?@Zimek“Value有时是NaN”什么时候?对于什么输入?@Zimek Well NaN的意思不是一个数字。你可以做的是在测试之前确定所有的数字。值有时是NaN。你知道为什么吗?我如何选择玩家。pid那么?@Zimek“值有时是NaN”什么时候?对于什么输入?@Zimek Well NaN的意思是不是一个数字。你可以做的是在测试之前确定所有的数字。我想返回最近而不是距离的玩家的pid。我想返回最近而不是距离的玩家的pid