Вычислить, какая из координат в объекте ближе всего к выбранным координатам - PullRequest
1 голос
/ 04 октября 2019

У меня есть несколько объектов в массиве с координатами.

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

И я хочу вычислить, какой из этих объектов имеет ближайшие координаты к мышиному полю, чтобы выбрать егоpid selected = pid of closest coords to mousepos

если кто-нибудь может дать мне простой код?

Ответы [ 3 ]

0 голосов
/ 04 октября 2019

Кажется, вы пытаетесь вычислить Евклидово расстояние . Если это так, то вы можете использовать Math build in object. Как только расстояние рассчитано, вы можете вернуть index. С помощью этого индекса получить объект he от игроков

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
}

function calculateEuclidean() {
  let selectedPid = 0;
  players.forEach(function(item, index) {
    let distance = Math.sqrt(Math.pow((item.x - mousepos.x), 2) + Math.pow((item.y - mousepos.y), 2))
    if (index === 0) {
      selectedPid = index
    } else if (distance < selectedPid) {
      selectedPid = index;
    }
  })
  return players[selectedPid];
}


console.log(calculateEuclidean())
0 голосов
/ 04 октября 2019

Рабочий пример, заданный случайным образом из разногласий

    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)
0 голосов
/ 04 октября 2019

Мате вот ответ. Используйте формулу расстояния, чтобы вычислить расстояние между точками. Один с наименьшим расстоянием является ближайшей точкой.

Fomula: - Sqrt ((x 2 -x 1 ) 2 + (y 2 -y 1 ) 2 )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...