30 Mart 2012 Cuma

DieArt



Gecenlerde alternatif ev esyasi satan bir yerde rastladigim bir duvar susunden ilham aldim. istediginiz figuru zarlari belli bir yapida yapistirarak ortaya cikarliyor. yazdigim bir bos-vakit- matlab-kodu sekilde görüldügü üzere zarlari hangi sirada koyacagima yardimci olabilir. belki 3 boyutlu hali de güzel olabilir, o da ayri bir script'in konusu olsun :)

MS, Münih, 30.03.2012


ps:Asiri sekilde comment'ler ile destekledigim Matlab script'i su sekilde:

function dieArt(imagein,N)
inp=load(imagein);
imout=readImage(inp.dat,1:6,N);

for i=1:N
for j=1:N
drawDie([i j],imout(i,j),1)
end
fprintf('.')
end
axis off
axis equal
end

function out=readImage(imin,rng,N)
x=linspace(1,size(imin,1),N+1);
x=round(x);
for i=1:length(x)-1
for j=1:length(x)-1
out(i,j)=1+round(mean(mean(imin(x(i):x(i+1),x(j):x(j+1))))/(255/(length(rng)-1)));
end
end
out=rot90(out,3);
end

function drawDie(coor,val,isFrame)
r1=.2;
rr=.2;
dieface{1}={[.5 .5],r1,[1 0 0]};
dieface{2}={[.25 .25; .75 .75],rr,[0 0 0]};
dieface{3}={[.2 .2; .5 .5;.8 .8],rr,[0 0 0]};
dieface{4}={[.25 .25; .25 .75;.75 .25;.75 .75],rr,[0 0 0]};
dieface{5}={[.25 .25; .25 .75;.75 .25;.75 .75; .5 .5],rr,[0 0 0]};
dieface{6}={[.25 .2; .25 .5;.25 .8;.75 .2; .75 .5;.75 .8;],rr,[0 0 0]};

for i=1:size(dieface{val}{1},1)
cpos=[coor(1)+dieface{val}{1}(i,1)-dieface{val}{2}/2,coor(2)+dieface{val}{1}(i,2)-dieface{val}{2}/2,dieface{val}{2},dieface{val}{2}];
rectangle('Position',cpos,'Curvature',[1,1],'FaceColor',dieface{val}{3},'LineStyle','none')
hold on
end

if isFrame
plot(coor(1)+[1 1],coor(2)+[0 1],'k'); hold on
plot(coor(1)+[0 0],coor(2)+[0 1],'k')
plot(coor(1)+[0 1],coor(2)+[0 0],'k')
plot(coor(1)+[0 1],coor(2)+[1 1],'k')
end

end

Hiç yorum yok: