Posez votre question Signaler

Animation 3D MATLAB [Résolu]

Irene_Adler 132Messages postés 26 juin 2008Date d'inscription 13 juillet 2011Dernière intervention - Dernière réponse le 8 juil. 2008 à 17:34
Bonjour à tous,
Je programme une petite animation sur MATLAB et j'ai besoin de fixer l'axe Z pour que l'echelle ne change pas à chaque 'surf'... Comment faire?
Voici mon programme:
function animate(nb,mx,ny)
reruns=1; % number of times movie is to play
fps=5; % frames per second
nframes = nb; % number of frames in the movie
Frames = moviein(nframes); % initialize the matrix 'Frames'
title('FUNWAVE MOVIE')
colormap('jet')
map=jet;
fid=fopen('animation.dat'); % dans animation.dat il y a les noms des fichiers
tab=fscanf(fid,'%s',[401]);
bg=1;
ed=12;
[X,Y,Z]=OpenFunwaveForm1(tab(bg:ed),mx,ny);
zl=max(abs(Z));
zlim=[-zl,zl];
for i=2:nb
bg=bg+12
ed=ed+12
OpenFunwaveForm1(tab(bg:ed),mx,ny);
Frames(:,i)=getframe;
end
return
% OpenFunwaveForm1 est une fonction qui affiche ma figure de la maniere la plus simple, avec tous les parametres par %défaut
Merci aux âmes charitables!
PS: Toutes les critiques sur mon programme sont acceptées :)
Lire la suite 

Animation 3D MATLAB »

5 réponses
Réponse
+0
moins plus
Salut
OpenFunwaveForm1(tab(bg:ed),mx,ny);
zlim([-zl zl]);
A plus
Ajouter un commentaire
Réponse
+0
moins plus
LoL! Merci Sacabouffe!
J'ai corrigé d'autres erreurs:
REMARQUE: zl=max(abs(Z)); donne un vecteur car Z est une matrice 101x101, il fallait donc faire une boucle pour trouver le max (il y a sans doute une manière plus simple...)

voici donc le programme final:



function animate(nb,mx,ny)
reruns=1; % number of times movie is to play
fps=5; % frames per second

nframes = nb; % number of frames in the movie
Frames = moviein(nframes); % initialize the matrix 'Frames'

title('FUNWAVE MOVIE')
colormap('jet')
map=jet;
fid=fopen('animation.dat');
tab=fscanf(fid,'%s',[401]);
bg=1;
ed=12;
[X,Y,Z]=OpenFunwaveForm1(tab(bg:ed),mx,ny);
k=max(abs(Z(:,1)));
for j=2:ny
if k<max(abs(Z(:,j)))
k=max(abs(Z(:,j)))
end
end
k=k+k;
zlim([-k k]);
view(-90,0);
Frames(:,1)=getframe
for i=2:nb
bg=bg+12
ed=ed+12
OpenFunwaveForm1(tab(bg:ed),mx,ny);
zlim([-k k]);
view(-90,0);
Frames(:,i)=getframe;
end
% Now play the movie:
%movie(Frames,reruns,fps)

% Now save the movie as an mpeg file for use on the Web:
map=colormap
% mpgwrite(Frames,map,'funwave.mpg')
return

Ajouter un commentaire
Réponse
+0
moins plus
Salut
Oui il y a pluys simple. J'avais pas fait gaffe à ce détail dans ton code, j'avais juste regardé ton souci d'axe Z.
k=max(max(abs(Z)));
A plus
Ajouter un commentaire
Réponse
+0
moins plus
C'est Vrai (j'adore me compliquer la vie ;D )
Merci et à plus!
Ajouter un commentaire
Réponse
+0
moins plus
De rien :-D
A plus
Ajouter un commentaire
Ce document intitulé « Animation 3D MATLAB » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Windows 8 - À quoi s'attendre ?