Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计算对象中哪一个坐标最接近choosen坐标_Javascript_Math - Fatal编程技术网

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;iif(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