ANIMAÇÃO EM MATLAB Danilo Ueno Takahagi Rafael Amaro Grupo de Pesquisa de Aplicações em Computação Paralela
Introdução: O que é uma animação em Matlab? É uma seqüência de imagens plotadas sobrepostas, com uma velocidade limite para se tornar seqüencial.
Clique no ícone para ver o exemplo (2.48MB) VIDEOCLIPE Clique no ícone para ver o exemplo (2.48MB)
Como animar? 1) Saber o que será animado; 2) Buscar as funções que geram o gráfico; 3) Prever as posições em que o gráfico percorrerá, gerando uma matriz de posições; 4) Através da matriz de posições, plotam-se os gráfico de cada instante da animação, ou seja, a cada iteração.
Objetivos: Observar com maior eficiência o comportamento de uma função, visualizando todos as suas iterações; Simular situações reais, para analisar os aspectos dos experimentos, obtendo uma melhor compreensão dos resultados, com o auxílio da visualização
Funções de animação do Matlab: Avifile(‘nome_arquivo.avi') gera arquivo avi para salvar a animação Close(ponteiro do arquivo) Fecha o arquivo de filme. 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; Moviein(n) Determina que o filme terá um número de quadros igual a n; Movie(nome_arquivo,n) Executa o filme selecionado n vezes seguidas.
Funções para plotar: plot(x1,y1,.....) plota gráfico bidimensional plot3(x1,y1,z1,...) plota gráfico tridimensional line(x,y)gera linha definida nos vetores x e y para a escala definida com o comando axis line(x,y,z)gera linha com coordenadas em três dimensões
mesh(x,y,z) gera gráfico de superfície na forma de uma rede surfl(x,y,z) gera gráfico de superfície com um mapa de cores EXEMPLOS NOS PROGRAMAS
Exemplo A = avifile('Animacao2.avi') y = [ 0.7071 1 0.7071 0 -0.7071 -1 -0.7071 0 ]; n=length(x); for i=1:length(x) xa = [ 0, x(i) ]; ya = [ 0, y(i) ]; plot(xa(2),ya(2),'bo') line(xa,ya) axis([-2 2 -2 2]) axis off F=getframe; A = addframe(A,F); end A=close(A);
Clique no ícone para ver o exemplo (162KB) Filme gerado: VIDEOCLIPE Clique no ícone para ver o exemplo (162KB)
Exemplo com função seno e cosseno mov = avifile('animaçao3.avi') t = 0:pi/100:10*pi; for i=0:1:50 plot3(sin(t+i),cos(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);
Clique no ícone para ver o exemplo (310KB) Filme Gerado VIDEOCLIPE Clique no ícone para ver o exemplo (310KB)
Animação de Superfície m=avifile('superficie.avi') x=-3:3; y=1:5; [X,Y]=meshgrid(x,y); for i=-100:1 Z=((X+Y).^2); [X,Y,Z]=peaks(20) surfl(X,Y,Z./i); axis([-4 4 -5 5 -10 10]) axis off; F=getframe; m=addframe(m,F) end m=close(m)
Clique no ícone para ver o exemplo (1.17MB) Filme Gerado: VIDEOCLIPE Clique no ícone para ver o exemplo (1.17MB)