Distribute different size circles inside a square

11 ビュー (過去 30 日間)
Kian Babanezhad
Kian Babanezhad 2018 年 5 月 17 日
コメント済み: Stephen23 2018 年 5 月 18 日
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 件のコメント
Kian Babanezhad
Kian Babanezhad 2018 年 5 月 18 日
we want to cover maximum area inside the square with 4 different circle (rA=0.1, rB=0.2, rC=0.3 and rD=0.4). How many of each kind of circles we need to reach maximum area by these circles? for example we can cover X=24.404 (<25) by 1400 number of A, 400 number of B, 40 number of C and 15 number of D. we want to reach maximum of X. clear?
Stephen23
Stephen23 2018 年 5 月 18 日
@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:

サインインしてコメントする。

回答 (1 件)

KSSV
KSSV 2018 年 5 月 18 日
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 件のコメント
Torsten
Torsten 2018 年 5 月 18 日
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
KSSV 2018 年 5 月 18 日
You said how many of each circle...so took a single circle...

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeCreating and Concatenating Matrices についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by