Animación
Modos de vibración de una cuerda
Examinamos los modos de vibración de una cuerda de longitud L=1 con periodo P=2π, o bien con ω=1
En este script cada imagen generada (frame) se guarda en el vector F.
L=1; n=3; %modo normal de vibración de la cuerda x=0:0.005:1; j=0; for t=0:pi/20:2*pi y=sin(n*pi*x/L)*cos(t); plot(x,y,'r') axis([0 1 -1 1]) j=j+1; F(j)=getframe; end
Mediante el comando movie reproducimos la animación dos veces en la ventana de comandos
>> movie(F,2)
Otro modo de producir la animación es la siguiente
N=1000; x=linspace(0,5*pi,N); y=cos(x); for i=1:N clf hold on plot(x,y) plot(x(i), y(i),'ro', 'markersize',4,'markeredgecolor', 'r','markerfacecolor','r'); grid on axis tight xlabel('x'); ylabel('cos(x)') set(gca,'XTick',0:pi:5*pi) set(gca,'XTickLabel',{'0','\pi','2\pi','3\pi','4\pi', '5\pi'}) drawnow hold off end
Animación de una pelota
La clave para producir una animación es dibujar una figura en la posición inicial x1, borrar la figura de dicha posición y dibujarla en la nueva posición x2, borrar la figura de la posición x2 y dibujarla en la nueva posición x3 y así, sucesivamente.
%genera los datos t=0:pi/500:2*pi; % tiempos x=cos(t); % posiciones de la pelota % Dibuja la figura inicial figure('DoubleBuffer','on') %pelota en la posición inicial hg=plot(x(1),0,'o','MarkerSize',25,'MarkerFaceColor','r'); set(hg,'EraseMode','normal'); xlim([-1.1,1.1]); % Animación for i=1:length(x) set(hg,'XData',x(i),'YData',0); drawnow; end
Las propiedades de EraseMode son: normal, xor y none. Probar el efecto
Ejemplos en el curso de Física
Modos de vibración de una membrana rectangular