Я уверен, что есть чистый способ сделать это, но я, вероятно, не использую правильные ключевые слова для его поиска.
Итак, скажем, у меня есть сетка. Начиная с позиции в сетке, верните все координаты сетки, которые находятся в пределах заданного расстояния. Поэтому я называю что-то вроде:
getCoordinates( currentPosition, distance )
И для каждой координаты, начиная с начальной позиции, добавьте все кардинальные направления, а затем добавьте пробелы вокруг них и так далее, пока расстояние не будет достигнуто. Я представляю, что на сетке это будет выглядеть как алмаз. Функция вернет этот массив координат. Может кто-нибудь указать мне на рутину, которая будет делать это эффективно (я работаю в AS3, для чего это стоит)?
В желаемом выводе итерация 1 будет:
.x.
xxx
.x.
Итерация 2 будет:
..x..
.xxx.
xxxxx
.xxx.
..x..
Итерация 3:
...x...
..xxx..
.xxxxx.
xxxxxxx
.xxxxx.
..xxx..
...x...
и так далее ...