Aufgabe: Erstellen einer Annimation

Beispiel

Mit MATLAB kann man einfach Filme machen. Versuchen Sie das folgende Beispiel zu verstehen.

% Script file mymovie % Shows a spinning wheel for demonstration purposes % Initialize movie (allocate memory space) m = moviein(5); % Auxiliary data t = 0:pi/100:2*pi; t = t(:); % t becomes column vector p = abs(sin(2*t).*cos(2*t)); maxp = max(p); X = [cos(t).*p, sin(t).*p]; % Q is planar rotation around angle phi phi = pi/20; c=cos(phi);s=sin(phi); Q = [c s; -s c]; hold off h_f = fill(X(:,1),X(:,2),'y'); hold on h_p = plot(maxp*cos(t),maxp*sin(t),'r'); set(h_p,'LineWidth',4) hold off axis square axis off % turns off all axis labeling, % tick marks and background h_t = title(' To halt the spinning wheel press Ctrl-C '); set(h_t,'FontSize',14) for i=1:5 m(:,i) = getframe; pause(1) X = X*Q; set(h_f,'XData',X(:,1)) set(h_f,'YData',X(:,2)) end movie(m,1000000)

Kopieren Sie die Befehle in ein eigenes M-File und lassen Sie den `Film' laufen.

Der Befehl m = moviein(5) reserviert in der Variable m Speicherpatz für fünf Bilder. In der for-Schleife werden dann diese fünf Bilder generiert und mit dem Befehl getframe in die Elemente von m kopiert. Mit dem Befehl movie(m,1000000) wird der Film gestartet und 1000000 abgespielt.

Übung

Ausgehend von der folgenden Befehlssequenz

[x,y,z] = sphere(30); for i = 0:9 t = i*pi/10; surf(x,y,z*abs(cos(t))) axis([-1 1 -1 1 -1 1]) pause(1); end

erzeuge man selber einen Film.