2010-07-06 6 views
0
sRMatTemp = [SENSORRANGE]; 
sRMat = repmat(sRMatTemp, size(obj.landmarks.sensed(:,1), 1)); 
ellipse(((2*pi*sRMat)/(360/obj.landmarks.sensed(:,4))), obj.landmarks.sensed(:,5) , obj.landmarks.sensed(:,3), obj.landmarks.apparentPositionsST(:,1), obj.landmarks.apparentPositionsST(:,2)); 

Le code ci-dessus fonctionne bien ... UNE FOIS. Le problème est que j'ai besoin de l'animer. Chaque fois que je trace les ellipses, elles restent sur mon écran et le graphique devient illisible instantanément.Animation de plusieurs ellipses

Ceci est le code ci-dessus qui fonctionne bien aussi, pour animer un nuage de points. Y a-t-il un moyen de l'utiliser avec des ellipses? J'utilise ellipse.m sur le site de la communauté Mathworks.

fig=figure; 
axes('NextPlot','add'); 
set(fig, 'name', 'Animated Graph') 
l.st=scatter([0],[0],'g.'); 
set(l.st,'XData',obj.landmarks.apparentPositionsST(:,1),'YData',obj.landmarks.apparentPositionsST(:,2)); 
drawnow 

Répondre

2

Vous devez définir la propriété EraseMode-xor de sorte que lorsque vous mettez à jour ses données X/Y, il supprimera son ancien emplacement, puis redessiner. Assurez-vous de lire ceci animation guide.

J'ai écrit un exemple simple pour illustrer une ellipse animée. J'utilise la fonction calculateEllipse.m d'une question précédente ici sur SO.

step = linspace(50,200,100); 

figure 
hAx = axes('XLim',[-250 250], 'YLim',[-250 250], ... 
    'Drawmode','fast', 'NextPlot','add'); 
axis(hAx, 'equal') 

p = calculateEllipse(0, 0, step(1), step(end), step(1)); 
hLine = line('XData',p(:,1), 'YData',p(:,2), 'EraseMode','xor', ... 
    'Color','r', 'LineWidth',3); 

for i=1:numel(step) 
    p = calculateEllipse(0, 0, step(i), step(numel(step)-i+1), step(i)); 
    set(hLine,'XData',p(:,1), 'YData',p(:,2)) %# update X/Y data 
    pause(.05)         %# slow down animation 
    drawnow         %# force refresh 
    if ~ishandle(hLine), return; end   %# in case you close the figure 
end 

animated_ellipse

+0

Je tiens à souligner que je suivais cet exemple GIF animé pour créer la figure ci-dessus: http://www.mathworks.com/matlabcentral/fileexchange/21944-animated-gif – Amro