70 likes | 107 Views
Learn about polar coordinates, pixelation, ripple effects, eyefish effects, and twirl effects. Explore MATLAB implementation for transforming between Cartesian and polar coordinates. See examples and produce captivating visual effects.
E N D
Special effects Jen-Chang Liu, Spring 2005
Polar coordinates 極座標 r θ x y (x, y) y x Origin:
MATLAB implementation • Cartesian coordinate -> polar coordinate • polar coordinate -> Cartesian coordinate rows=256; cols=256; ox=ceil((rows+1)/2); oy=ceil((cols+1)/2); [y,x]=meshgrid([1:cols]-oy, [1:rows]-ox); r=sqrt(x.^2+y.^2); theta=atan2(y,x); x2=round(r.*cos(theta))+ox; y2=round(r.*sin(theta))+oy;
Pixelation effects 像素化 • mod operation • Radial pixelation % to Cartesian coordinate xx=round(x2)+ox; xx(find(xx>rows))=rows; xx(find(xx<1))=1; yy=round(y2)+oy; yy(find(yy>cols))=cols; yy(find(yy<1))=1; for i=1:rows for j=1:cols f2(i,j)=fg(xx(i,j), yy(i,j)); end; end; x=1:12 mod(x,4) x-mod(x,4) f=imread(‘flower.tif’); fg=rgb2gray(f); [rows cols]=size(fg); % polar coordinate r2=r-mod(r, 5); theta2=theta-mod(theta, 0.087); Ex.1: Try other mod parameters
Ripple effects • Produce repeat patterns • Ripples in the Cartesian coordinate x=1:12 x+mod(x,4) [y,x]=meshgrid(1:cols,1:rows); y2=y+mod(y,32); y2(find(y2<1))=1; y2(find(y2>cols))=cols; for i=1:rows for j=1:cols ripples(i,j)=fg(x(i,j), y2(i,j)); end; end; Ex.2: produce ripples in the polar coordinate (to r component)
Eyefish effects • In the polar coordinate R=max(r(:)); r=r.^2/R; Ex. 3: Produce the eyefish effect
Other effects • Twirl • Θ’(i,j) =θ(i,j)+r(i,j)/K Ex. 4: Produce the Twirl effect with K=100