Wednesday, June 11, 2008

Assignment 10 fabio

function [ outpic ] = swirlbw( inpic,gamma,rad )

cx = size(inpic,1)/2;
cy = size(inpic,2)/2;
outpic=zeros(size(inpic,1),size(inpic,2));

for x =1:size(inpic,1)
for y=1:size(inpic,2)
d= sqrt((x-cx)^2+(y-cy)^2);
if ((d gt rad) or (d lt 1))
outpic(x,y) = inpic(x,y);
else if (y lt cy)
theta = acos((x-cx)/d);
else
theta = -acos((x-cx)/d);
end
fr =((d/rad)^2)*(1-d/rad)^2*16;
newx = d*cos(theta+gamma*fr)+cx;
newy = d*sin(theta+gamma*fr)+cy;
a=newx;
b=newy;
r=floor(newx);
s=floor(newy);

outpic(x,y)= [1-a+r a-r]*[inpic(r,s) inpic(r,s+1);inpic(r+1,s) inpic(r+1,s+1)]*[1-b+s; b-s];

end
end
end


No comments: