2017-05-22 1 views
1

J'essaye de faire une animation avec des cercles obtenus avec la fonction rectangle dans Matlab2013. Afin d'animer l'intrigue, j'ai essayé d'utiliser clf, drawnow et pause, mais cela ne semble pas fonctionner. D'un autre côté, quand je travaille avec des points ou des lignes, j'utilise set et pause et cela fonctionne bien, mais je ne vois pas un moyen de les utiliser avec des rectangles.Comment animer des rectangles

Ici, je vous montre comment j'ai essayé de le faire avec drawnow. Il y a 1000 pas de temps, et à chaque pas de temps j'ai stocké les coordonnées x et y de quatre cercles.

%At every time step I would like to plot 4 circles. 
PosxProt = rand(1000, 4) 
PosyProt = rand(1000, 4) 

for i=1:1000 
    clf 
    hold on 
    for j=1:4 
     rP=0.345; %radius of the circles 
     cP=[PosxProt(i,j) PosyProt(i,j)]; %center of the circles 
     rectangle('Position',[cP-rP 2*rP 2*rP],'Curvature',[1 1],'facecolor','r') %plot circle 
    end 
    drawnow 
    pause(0.05) 

end 
+0

Ce qui ne fonctionne pas? – m7913d

+0

Je voulais dire que l'animation ne fonctionne pas. – Fisiquin

+1

Pour moi, l'animation fonctionne. Est-ce que cela fonctionne quand vous mettez un point d'arrêt dans la boucle ou prolongez la durée de la pause? – m7913d

Répondre

1

Vous pouvez paramétrer le rectangle à l'aide de l'équation suivante:

% 2*p and 2*q are the size of the rectangle 
t = 0:0.01:1; 
x=p*(abs(cos(t))*cos(t)+abs(sin(t))*sin(t)) 
y=q*(abs(cos(t))*cos(t)-abs(sin(t))*sin(t)) 

puis tracer le rectangle à l'aide comète:

comet(x,y) 

vous pouvez également trouver plus d'options pour comethere.