Randomly moving circles in a graph

I have created circles by the help of fill command. how can I make them movingly linearly.
fill(xobs(k)+robs(k)*cos(theta),yobs(k)+robs(k)*sin(theta),[1 0 0]);
They can be moving in circular motion.

 Accepted Answer

You can record the handles returned by fill(), which will be handles of patch objects. The patch objects that are created will have a Vertices property which will be an N x 2 array. You can change the Vertices property to update the locations, such as
rot = makehgtform('zrotate', 15*180/pi);
V = h.Vertices;
temp = [V,zeros(size(V,1),2)] * rot;
h.Vertices = temp(:,1:2);

6 Comments

xobs=[1.5 4.0 1.2 7.0 8.0];
yobs=[4.5 3.0 1.5 5.0 8.0];
robs=[1.5 1.0 0.8 1.0 1.0];
theta=linspace(0,2*pi,100);
for k=1:numel(xobs)
fill(xobs(k)+robs(k)*cos(theta),yobs(k)+robs(k)*sin(theta),[1 1 0]);
end
This is code I need these circles to be moving linearly
xobs=[1.5 4.0 1.2 7.0 8.0];
yobs=[4.5 3.0 1.5 5.0 8.0];
robs=[1.5 1.0 0.8 1.0 1.0];
theta=linspace(0,2*pi,100);
for k=1:numel(xobs)
fh(k) = fill(xobs(k)+robs(k)*cos(theta),yobs(k)+robs(k)*sin(theta),[1 1 0]);
xspeed(k) = randn()/2;
yspeed(k) = randn()/2;
end
for iterations = 1 : 100
for k = 1 : length(fh)
fh(k).Vertices = fh(k).Vertices + [xspeed(k), yspeed(k)];
end
drawnow();
end
The code assumes R2016b or later.
the code does not know what vertices are. and it does make acircle but not moving circles.
Put a
hold on
before the code here, and
hold off
after the "for k" loop.
the code doesnot recognize 'Vertices' it says Invalid or deleted object. Plus there is no motion in circles. only a single circle is plot
Code enclosed to prove that it does work. Also enclosed is a movie with proof that it works.

Sign in to comment.

More Answers (0)

Categories

Find more on Networks in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!