如何在Javascript中获取最近的实体

How can I get the nearest entity in Javascript?

本文关键字:最近 实体 获取 Javascript      更新时间:2024-04-25

我有:

array = [{
  'id': <an id like -45283etc>,
  'x': 7,
  'y': 10,
  'z': 5
},
{
  'id': <random id, too>,
  'x': 19,
  'y': 6,
  'z': 4
},
{
  'id': <random id, too>,
  'x': 2,
  'y': -7,
  'z': -5
}
]

array[0]是玩家

我如何知道实体(数组[1]或数组[2])中哪一个最接近数组[0]?

for(var closest = 1, var i = 1; i < array.length; i++){
  if(array[i] is closer to player than closest){
    var closest = array[i]
  }
}
return array[i]

我必须在if语句中写些什么?

假设您想将它们视为点,并且"最接近"是指使用L2范数(欧几里得距离),则可以使用:

var minDistanceSquared = Infinity;
for(var closest = 1, i = 1; i < array.length; i++){
    var distanceSquared = Math.abs( 
      Math.pow( array[i].x - array[0].x, 2 ) +
      Math.pow( array[i].y - array[0].y, 2 ) + 
      Math.pow( array[i].z - array[0].z, 2 )
    );
    if ( distanceSquared < minDistanceSquared ) {
        closest = i;
        minDistanceSquared = distanceSquared;
    }
}

这是基于问题中的伪代码循环,并依赖于位于索引0的播放器。