Hi
I'm trying to make an animation, where I only display one point at the time, right now the trajectory stays, and I want only one point displayed
this is my code so far
x= Ball(:,1);
y= Ball(:,2);
figure
curve = animatedline(
'marker'
,
'*'
,
'Color'
,
'r'
);
set(gca,
'Xlim'
,[-6000 6000],
'Ylim'
,[-4000 4000])
for
i= 1:length(Ball)
addpoints(curve,x(i),y(i));
drawnow
end
If your task is that simple, I prefer updating the XData and YData rather than using the animatedline method. This is faster and more efficient. Instead of deleting and drawing a new point on each iteration, it merely changes the coordinate value of the point that is already drawn. If this is
too fast
, you can control the approximate timing by using pause() within the loop to slow it down.
Here's an example (just run this to watch a dot move along a sinusoidal trajectory).
x= 0:0.1:2*pi;
y= sin(x);
figure
ph = plot(x(1), y(1),
'r*'
);
set(gca,
'Xlim'
,[0 6.5],
'Ylim'
,[-1 1])
for
i=1:length(y)
ph.XData = x(i);
ph.YData = y(i);
drawnow
pause(0.05)
end
If you prefer to use the
animatedline method
, just insert clearpoints() before you call addpoints().
for
i= 1:length(Ball)
clearpoints(curve)
addpoints(curve,x(i),y(i));
drawnow
end
Find the treasures in MATLAB Central and discover how the community can help you!