E N D
1. Animações em MATLAB Luiz Gustavo Supriano
Roberto Basting Junior
3. Como plotar gráficos Existem dois tipos de gráficos em Matlab: gráficos 2D e gráficos 3D
Gráficos 2D:
Plot: função básica para desenhar gráficos em 2D
exemplo: plot(x,y)
onde: x é a definição do intervalo que queremos plotar
y é a função que desejamos plotar
4. Como plotar gráficos Gráficos 3D:
Curvas:
plot3(x,y,t)
Superfícies:
surf(X,Y,Z) => superfície preenchida
mesh(X,Y,Z) => malha
5. Animação Animação = seqüência de gráficos plotados sobrepostos
Requisitos:
Saber o que se deseja animar
Descobrir as funções que serão utilizadas
Gerar uma matriz de posição
6. Animação Objetivos:
Melhor análise de determinados fenômenos através de recursos visuais
Visualização das iterações de uma função
Simulação de situações reais
Criação de filmes quando os cálculos exigem um tempo significativo e as imagens resultantes são bastantes complexas
7. Como animar? O Matlab possui funções específicas para criação de animações (vídeos):
Avifile(‘nome_arquivo.avi') ? gera arquivo avi para salvar a animação
Close(ponteiro do arquivo) ? Fecha o arquivo de filme.
8. Como animar? Getframe ? retorna cada pixel da imagem para a variável de frames ;
Addframe(ponteiro do arquivo,variável de frames ) ? copia cada quadro do gráfico plotado para o final do arquivo de vídeo;
Axis([xi xf yi yf zi zf]) ? Fixa o tamanho dos eixos das coordenadas;
9. Como animar? Movie(array_pixel) ? executa o filme
Movie(array_pixel,n) ? executa o filme n vezes
Aviread(nome_arquivo) ? lê um arquivo de filme avi
10. Exemplos mov = avifile('animaçao1.avi')
t = 0:pi/100:10*pi;
for i=0:1:50
plot3(sin(t+i).*cos(t+i),sin(t+i),t+i)
hold on
axis off
axis([-1 1 -1 1 0 100])
F=getframe
mov = addframe(mov,F);
end
mov=close(mov);
11. Exemplos video=avifile('trajetoria.avi')
s0=20; v0=15; a=2;
for i=1:5:100
y=s0+v0*i+(a*(i.^2))/2;
xlabel('tempo');
ylabel('espaço');
plot(i,y,'bo');
hold on;
axis off;
F=getframe;
video=addframe(video,F);
end
video=close(video)
12. Exemplos m=avifile('superficie.avi')
x=-3:3;
y=1:5;
[X,Y]=meshgrid(x,y);
for i=-100:1
Z=((X+Y).^2)/2-(X.^3);
[X,Y,Z]=peaks(49)
surfl(X,Y,Z./i);
axis([-4 4 -5 5 -10 10])
axis off;
F=getframe;
m=addframe(m,F)
end
m=close(m)
13. Exemplos function exemplo=funcao(t,y)
B1=1; B2=1; B3=1; A1=1; A2=1;
exemplo = [y(2);(-(y(1)-y(3))/B1)/A1; y(4);(-(y(3)-y(5))/B2 - (y(1)-y(3))/B1)/A2; y(6); (-(y(5)/B3 - (y(3)-y(5))/B2))/A2; ];
m=avifile('teste5.avi')
yo = [0.1 0.1 0.1 0.1 0.1 0.1];
for tspan=1:0.05:10
[t,y] = ode45(@funcao,[0 tspan],yo);
plot(t,y(:,1));
f=getframe;
m=addframe(m,f)
end
m=close(m)
14. Exemplos function yprime=vdpol(t,y)
a=0.398; b=2; c=4;
yprime = [-(y(2)+y(3));y(1)+a.*y(2);
b+y(3).*(y(1)-c)];
m=avifile('teste2.avi');
yo = [0.1; 0.1; 0.1];
for tspan=1:5:1000
[t,y] = ode45(@vdpol,[0 tspan],yo);
plot(t,y(:,3));
f=getframe
m=addframe(m,f)
end
m=close(m)
15. Exemplos function yprime=vdpol(t,y)
a=0.398; b=2; c=4;
yprime = [-(y(2)+y(3));y(1)+a.*y(2);
b+y(3).*(y(1)-c)];
m=avifile('eod.avi');
yo = [0.1; 0.1; 0.1];
for t=1:5:1000
[t,y] = ode45(@vdpol,[0 t],yo);
plot(y(:,1),y(:,3));
f=getframe
m=addframe(m,f)
end
m=close(m);
16. Bibliografia MATLAB 6 : curso completo
Duane Hanselman, Bruce Littlefield
Tradução Cláudia Sant'Ana Martins
Editora Prentice Hall, São Paulo 2003.
Amaro, R.; Takahagi, D. N. Seminário: Animação em Matlab
Bovolenta, J. E.; Coyado, A. F. Seminário: Matlab
17. Contato
Luiz Gustavo Supriano – luizgustavo@supriano.com
Roberto Basting Junior – basting_jr@yahoo.com.br
Universidade Estadual Paulista
Instituto de Geociências e Ciências Exatas
Departamento de Estatística, Matemática Aplicada e Computação