Code to draw multiple circles that do not overlap
    7 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!