Distribute different size circles inside a square
Afficher commentaires plus anciens
Suppose we have circles with 4 different diameter (A:0.1, B:0.2, C=0.3, D=0.4), We want to arrange them in a square (5*5) to reach the maximum area. How many of each circle put in the square? a.A + b.B + c.C + d.D = 25 , actually we want to detect a, b, c ,d and position of them. How can I do it in MATLAB?
3 commentaires
Jan
le 18 Mai 2018
What exactly does "reach the maximum area" mean? What is e.g. "a.A"?
Kian Babanezhad
le 18 Mai 2018
Stephen23
le 18 Mai 2018
@Kian Babanezhad: there is no general solution to this problem. Just because the task is simple does not mean that there is a tractable solution. Read more here:
Réponses (1)
KSSV
le 18 Mai 2018
R = 0.1; % RAdius of circle
S = 5 ; % side of square
% Square coordinates
xs = [0 5 5 0 0] ; ys = [0 0 5 5 0] ;
% Circle coordinates
th = linspace(0,2*pi) ;
xc = R*cos(th) ; yc = R*sin(th) ;
% form centers of circle inside the square
x = R:2*R:S-R ;
y = R:2*R:S-R ;
[X,Y] = meshgrid(x,y) ;
% plot
figure
hold on
plot(xs,ys,'r') ;
plot(X,Y,'.b')
%
for i = 1:size(X,1)
for j = 1:size(X,2)
plot(X(i,j)+xc,Y(i,j)+yc,'b')
end
end
title(sprintf('Number of circles = %d',numel(X)))
3 commentaires
Kian Babanezhad
le 18 Mai 2018
Torsten
le 18 Mai 2018
Seems to me that this is a field of ongoing research:
https://en.wikipedia.org/wiki/Circle_packing
If you find a solution, submit a publication.
Best wishes
Torsten.
KSSV
le 18 Mai 2018
You said how many of each circle...so took a single circle...
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!