Distribute different size circles inside a square
8 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Stephen23
il 18 Mag 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:
Risposte (1)
KSSV
il 18 Mag 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 Commenti
Torsten
il 18 Mag 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.
Vedere anche
Categorie
Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!