<texit info> author=Roman Putanowicz title=Rozwi�zanie �wiczenia 2.1.1
</texit> back
W tym ćwiczeniu można by zamiast funkcji line zastosować funkcję patch
do narysowania wypełnionego prostokąta. Niestety w Octave (wersja 3.2), dla
której testowałem rozwiazanie, jest błąd i nie działa funkcja set z
argumentami xdata
i ydata
.
<sxh c> function rotfigure(h, angle)
c = cos(angle); s = sin(angle); X = get(h,'xdata'); Y = get(h,'ydata'); Xp = c*X - s*Y; Yp = s*X + c*Y; set(h,'xdata',Xp); set(h,'ydata',Yp);
end%function
rectangle = [1,4,4,1,1;
1,1,3,3,1];
axis([-5,5,-5,5], 'equal'); h = line(rectangle(1,:), rectangle(2,:)) N = 36; dfi = 2*pi/N; for i=1:N
rotfigure(h, dfi); drawnow(); sleep(0.5); name=sprintf('rotshape%03d.png',i); disp(name);
end%for pause() </sxh>
<texit> \begin{lstlisting} function rotfigure(h, angle)
c = cos(angle); s = sin(angle); X = get(h,'xdata'); Y = get(h,'ydata'); Xp = c*X - s*Y; Yp = s*X + c*Y; set(h,'xdata',Xp); set(h,'ydata',Yp);
end%function
rectangle = [1,4,4,1,1;
1,1,3,3,1];
axis([-5,5,-5,5], 'equal'); h = line(rectangle(1,:), rectangle(2,:)) N = 36; dfi = 2*pi/N; for i=1:N
rotfigure(h, dfi); drawnow(); sleep(0.5); name=sprintf('rotshape%03d.png',i); disp(name);
end%for pause() \end{lstlisting} </texit>