Вычисление расстояния между двумя квадратами в сетке — Java

Я создаю игру на Java и имею сетку квадратов, составляющих игровую область. У игрока есть определенные цели, и мне нужно выяснить, насколько далеко игрок находится от этих целей, используя значения координат x и y квадратов. Таким образом, если бы игрок находился в ячейке 1,1, мне нужно было бы знать, что он находится на расстоянии 2 квадратов (2 входа движения) от ячейки 2,2 — вы не можете двигаться по диагонали.

Я нашел формулу евклидова расстояния, но я не уверен, как преобразовать ее в Java, и она не учитывает, что я не могу двигаться по диагонали, поэтому я не уверен, применимо ли это вообще.

Есть ли какая-то простая формула, которую мне не хватает? Я не мог найти ни одного. Спасибо.


person user3407039    schedule 24.07.2014    source источник


Ответы (1)


Да, есть простая формула: Math.abs(x1 - x2) + Math.abs(y1 - y2)

Math.abs - это функция абсолютного значения - если аргумент является положительным числом, он возвращает его; в противном случае он возвращает соответствующее положительное число (поэтому Math.abs(-5) возвращает 5)

person user253751    schedule 24.07.2014
comment
Это работает отлично, именно то, что я искал. - person user3407039; 24.07.2014
comment
Действительно, просто применяя геометрию такси: en.wikipedia.org/wiki/Taxicab_geometry - person bowmore; 24.07.2014