Code to draw multiple circles that do not overlap
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
In Matlab, I try to draw circles randomly as shown in the following figure.

The current situation is drawn like this and I am in trouble because I have no idea how to make it a circle.

%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 Kommentare
Akzeptierte Antwort
michio
am 12 Jan. 2018
Bearbeitet: michio
am 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 Kommentar
michio
am 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.
Weitere Antworten (1)
Siehe auch
Kategorien
Mehr zu 多角形 finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!