Как получить значения ячеек Манхэттена вокруг другой ячейки по радиусу? - PullRequest
0 голосов
/ 20 июня 2019

Привет сообщество StackOverflow,

У меня возникли проблемы с поиском алгоритма, позволяющего получить значение ячейки вокруг ячейки.

Вот картинка, которую я модифицировал, объясняющая ситуацию: Cellules with their respective values

Я хочу поместить в таблицу все значения светло-синего цвета, которые находятся вокруг синей ячейки в радиусе x (3 на рисунке).

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

Спасибо всем, кто может мне помочь.

Ответы [ 3 ]

1 голос
/ 20 июня 2019
local cell = 369
local r = 3
for x = -r, r do 
    for y = -r, r do 
        if math.abs(x) + math.abs(y) <= r then 
            local new_cell = cell + 29*math.floor(x/2) - 27*math.floor(y/2) + (x+y)%2 * (math.floor(cell/14)%2 + 14*(x%2-y%2)) + x*(x+y+1)%2
            print(new_cell)
        end 
    end 
end
1 голос
/ 20 июня 2019

Если вы находитесь в ячейке (x, y), то все ячейки (x1, y1), чье манхэттенское расстояние с ячейкой (x, y) меньше или равно 3, будут в радиусе 3

так что если abs (x-x1) + abs (y-y1) меньше или равно 3, тогда (x1, y1) будет в радиусе 3 от (x, y).

0 голосов
/ 21 июня 2019

Здесь - ссылка на аналогичный вопрос, на который уже дан ответ.Ответ, который я предоставил, тот же, что я бы предложил здесь.

У меня есть проект pixelscan , который может проходить по сетке различными способами, в том числе манхэттенским кольцом, и может бытьиспользуется для извлечения значений ячеек.Это на Python, а не на Lua, но код достаточно прост, его можно скопировать / вставить и настроить для работы.

...