Я хотел бы написать программу, которая поможет мне разделить определенную прямоугольную поверхность, размеры которой я знаю, на M (известных) маленьких квадратов с промежутками между ними. Размеры этих маленьких прямоугольников должны составлять от 0,5 до 5 мм, и они одинаковы для размеров зазоров. Я написал простой код, но не могу получить все возможные конфигурации, и большую часть времени я не получал результата.
Hrect = 150; Vrect =20;
minSq=1;maxSq=5;%sqaure
minSp=1;maxSp=5;%space
minM=1; maxM=5;%margin
nb_squares=2;
res=[];
c=0;
for HSQ=minSq:maxSq
for HSP=minSp:maxSp
for VSQ=minSq:maxSq
for VSP= minSp:maxSp
nb_HSQ=(Hrect/HSQ);
if(Hrect-nb_HSQ*(HSQ+HSP)>=HSQ)
nb_HSQ=nb_HSQ+1;
end
nb_VSQ=(Vrect/(VSQ+VSP));
if(Vrect - nb_VSQ*(VSQ+VSP)>=VSQ)
nb_VSQ=nb_VSQ+1;
end
if(nb_HSQ*nb_VSQ==nb_squares) c=c+1;
res(c,1)=VSQ; res(c,2)=HSQ;res(c,3)=HSP;res(c,4)=VSP;res(c,5)=nb_HSQ;res(c,6)=nb_VSQ;
if(c==4000000) disp('stop here')
end
end
end
end
end
end
res
res