Bucle espiral en una matriz desde un punto
Tengo una cuadrícula 2D de la siguiente manera y quiero comenzar desde X, Y y guardar la esquina de una ventana (W) y la superposición de (OP). Yo he tratadoestas códigos, pero ninguno de ellos se ajusta a mi propósito.
Como se demuestra, quiero comenzar desde un punto aleatorio (celda negra) y guardar las ubicaciones de las esquinas (mostradas por círculos negros) de cada nueva ventana en un bucle espiral. El algoritmo debe usarse para cualquier tamaño de cuadrícula (no necesariamente cuadrado) y cualquier ubicación de punto de inicio.
Matlab también tiene una función (espiral) que es similar a lo que quiero, pero no toma una cuadrícula, tamaño de ventana y superposición (OP).
Espero tener el siguiente resultado para esta figura: (8,12) (11,12) (11,9) (8,9) (4,9) (4,12) (4,15) ...
Estoy usando los siguientes códigos que comienzan desde una esquina y llenan la matriz paso a paso usando el tamaño W, OP y Matrix definido:
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;
Entonces, de una manera más clara, ¿cómo debo cambiar el código "anterior" para comenzar desde una ubicación (x, y) y llenar en espiral toda la matriz de acuerdo con W, OP y tamaño (M).
¡Gracias!