Ich brauche eine feste Anzahl von nicht überlappenden Kreisen nach dem Zufallsprinzip zu generieren. Ich kann Kreise angezeigt werden, in diesem Fall 20, befindet sich zufällig mit diesem Stück Code,Nicht überlappende zufällig angeordnete Kreise
for i =1:20
x=0 + (5+5)*rand(1)
y=0 + (5+5)*rand(1)
r=0.5
circle3(x,y,r)
hold on
end
jedoch Kreise überlappen, und ich möchte, dies vermeiden. Dies wurde von früheren Benutzern mit Mathematica https://mathematica.stackexchange.com/questions/69649/generate-nonoverlapping-random-circles erreicht, aber ich benutze MATLAB und ich würde gerne dabei bleiben.
Für Reproduzierbarkeit, ist dies die Funktion, circle3, ich bin mit dem Kreis
function h = circle3(x,y,r)
d = r*2;
px = x-r;
py = y-r;
h = rectangle('Position',[px py d d],'Curvature',[1,1]);
daspect([1,1,1])
Danke zu ziehen.
Bitte zeigen Sie, was Sie versucht haben, auf Überlappungen zu überprüfen. – SpamBot
nicht das gleiche, aber erinnert mich daran: http://Stackoverflow.com/q/7833534/97160 – Amro
Ich denke, Sie können Ihre Region mit Fliesen in Quadrate schneiden, und füllen Sie den Kreis dort – GameOfThrows