Спиральная петля на матрице из точки

У меня есть двумерная сетка, как показано ниже, и я хочу начать с 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).

Спасибо!

Ответы на вопрос(0)

Ваш ответ на вопрос