Спиральная петля на матрице из точки
У меня есть двумерная сетка, как показано ниже, и я хочу начать с X, Y и сохранить угол окна (W) и перекрытие (OP). я пыталсяэти коды, но ни один из них не подходит для моей цели.
Как показано, я хочу начать со случайной точки (черная ячейка) и сохранить угловые местоположения (показанные черными кружками) каждого нового окна в спиральной петле. Алгоритм должен использоваться для любых размеров сетки (не обязательно квадратной) и любых начальных точек.
Matlab также имеет функцию (спираль), которая похожа на то, что я хочу, но она не принимает сетку, размер окна и перекрытия (OP).
Я ожидаю получить следующий результат для этой цифры: (8,12) (11,12) (11,9) (8,9) (4,9) (4,12) (4,15) ...
Я использую следующие коды, которые начинаются с угла и постепенно заполняют матрицу, используя определенные размеры W, OP и Matrix:
W = [10 12];
OP = [4 3];
M = zeros(100,110);
for i=[1:W(1)-OP(1):size(M,1)-W(1), size(M,1)-W(1)+1]
for j=[1:W(2)-OP(2):size(M,2)-W(2), size(M,2)-W(2)+1]
block = rand(W(1),W(2));
M(i:i+W(1)-1, j:j+W(2)-1) = block;
imagesc(M); axis equal tight xy
pause(.1)
end;
end;
Итак, более понятным образом, как я должен изменить код «выше», чтобы начать с местоположения (x, y) и по спирали заполнить всю матрицу в соответствии с W, OP и размером (M).
Спасибо!