<texit info> author=Roman Putanowicz title=Solution to exercise 6.1.3

</texit> back

Solution to exercise 6.1.3

<sxh c> function rotatecolor(R,a,n)

fi = linspace(0,2*pi-2*pi/n,n);
x = R*cos(fi);
y = R*sin(fi);
h = zeros(n);
for i=1:n
  h(i) =  square(x(i),y(i),a);
endfor
drawnow()
circulate(h, n);  

endfunction

function circulate(h, N)

n = length(h);
i = 1; k = 0;
while k < N
  c = get(h(i), "facecolor");
  set(h(i),"facecolor","red");
  drawnow()
  fname = sprintf("frame%03d.png", i);
  print(fname, "-dpng","-S300,300");
  set(h(i),"facecolor",c);
  i = mod(i+1, n+1);
  if i == 0
    i = 1;
  endif
  k = k+1;
end

endfunction

function h = square(x,y,a)

a2 = a/2;
x = [x-a2,x+a2,x+a2, x-a2, x-a2];
y = [y-a2,y-a2,y+a2, y+a2, y-a2];
h = patch(x,y,"yellow");

endfunction </sxh>

<texit> \begin{lstlisting} function rotatecolor(R,a,n)

fi = linspace(0,2*pi-2*pi/n,n);
x = R*cos(fi);
y = R*sin(fi);
h = zeros(n);
for i=1:n
  h(i) =  square(x(i),y(i),a);
endfor
drawnow()
circulate(h, n);  

endfunction

function circulate(h, N)

n = length(h);
i = 1; k = 0;
while k < N
  c = get(h(i), "facecolor");
  set(h(i),"facecolor","red");
  drawnow()
  fname = sprintf("frame%03d.png", i);
  print(fname, "-dpng","-S300,300");
  set(h(i),"facecolor",c);
  i = mod(i+1, n+1);
  if i == 0
    i = 1;
  endif
  k = k+1;
end

endfunction

function h = square(x,y,a)

a2 = a/2;
x = [x-a2,x+a2,x+a2, x-a2, x-a2];
y = [y-a2,y-a2,y+a2, y+a2, y-a2];
h = patch(x,y,"yellow");

endfunction \end{lstlisting} </texit>

  • en/teaching/subjects/it/labs/sol_6_1_3.txt
  • Last modified: 2017/10/02 15:54
  • (external edit)