Количество шагов от одного поля в сетке к другому, ортогонально? - PullRequest
1 голос
/ 30 марта 2011

Как рассчитать количество «шагов», которые есть от одного поля к другому в сетке, движущейся ортогонально?

Я внедряю систему поиска путей * для игры, которую разрабатываю, и эта простая математическая операция у меня на пути.

Я, наверное, должен снова посещать третий класс. Ха-ха.

Ответы [ 2 ]

3 голосов
/ 30 марта 2011

Если я правильно понимаю, я думаю, что вы просто складываете необходимые движения x, y. Если заданы две точки (x1,y1) и (x2,y2), то расстояние (при условии, что «движение ортогонально» означает перемещение только по горизонтали и / или по вертикали), тогда оно равно:

abs(x1-x2) + abs(y1-y2)

Например, перемещение из положения (1,1) в (3,4) означает перемещение на 2 пробела вправо и на 3 пробела вверх в общей сложности 5. abs(1-3)+abs(1-4) = 2 + 3 = 5

0 голосов
/ 30 марта 2011

Я верю, что это вопрос простой математики.

Конечно, вы знаете свои начальные значения x / y и конечные значения x / y.Чтобы получить расстояние между ними, вы делаете это:

dist = sqrt (dx ^ 2 + dy ^ 2)

Где dx - это разница между x-координатами точек Гдеdy - это разница между y-координатами точек.

Так, например.Допустим, координата A - это A (15,20), а координата B - это B (35,5);

dx = 35 - 15 = 20;dy = 20-5 = 15;

Поэтому;

dist между AB = sqrt (20 ^ 2 + 15 ^ 2) = 25,0 единиц.

Теперь для вашего финалаответ, это зависит от того, сколько единиц "шаг" в вашей программе.Если шаг составляет 5 единиц (25/5), то для перехода из пункта А в пункт Б. требуется 5 шагов.

...