Code to draw multiple circles that do not overlap
3 views (last 30 days)
Show older comments
In Matlab, I try to draw circles randomly as shown in the following figure.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/168748/image.png)
The current situation is drawn like this and I am in trouble because I have no idea how to make it a circle.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/168749/image.png)
%the code of the current situation
t = linspace(0,2*pi,100);
figure
cx = 200 + (rand(20, 1) .* 1000); %center of the circle
cy = 300 + (rand(20, 1) .* 1000); %center
r = 2; %radius
plot(r*sin(t)+cx,r*cos(t)+cy)
y = r*cos(t)+cy
x = r*sin(t)+cx
for i =0:20
fill(x,y,'k')
%fill(r*sin(t)+cx,r*cos(t)+cy, 'k')
r = r+1;
end
i=i+1;
axis([0,1200,0,1200])
axis square
0 Comments
Accepted Answer
michio
on 12 Jan 2018
Edited: michio
on 12 Jan 2018
When the inputs are matrices, the functions draw columns of Y versus columns of X. So could you try changing
fill(x,y,'k')
to
fill(x',y','k')
I just transposed the matrices, x and y. The radius might need to be a bigger number though.
P.S. If you perfer, posting questions in Japanese is also always welcome :)
1 Comment
michio
on 12 Jan 2018
I forgot to mention but you do not need the for loop.
for i =0:20
fill(x,y,'k')
end
Simply calling
fill(x',y','k');
would work.
More Answers (1)
See Also
Categories
Find more on 多角形 in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!