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