How to plot (n) circles with known center and radius

2 ビュー (過去 30 日間)
Abdul Hamed Hatem
Abdul Hamed Hatem 2020 年 7 月 4 日
コメント済み: Abdul Hamed Hatem 2020 年 7 月 4 日
Hi,
I need to generat a plot of (n) circles. The radius of the circles is known and equals to 15m. The circles centers are separated by azimuthal angle equal to 10 degrees and they are located on the perimiter of biggr circle that it is radius is 120m.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
theta=10 % azimuthal distance between the centers of circles group
r=120 % The radius of the big circle
DM=12 % The radius of the group of circles
for i=1:38 % number of circles
x1(i)= r*cosd(90-(i-1)*theta); % the x comoenets of the circle group
y1(i)=r*sind(90-(i-1)*theta); % The y component of the circle group
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Would please advise.
Best Regards,

採用された回答

Image Analyst
Image Analyst 2020 年 7 月 4 日
If you have the Image Processing Toolbox, use viscircles(centers, radii):
theta=10 % azimuthal distance between the centers of circles group
r=120 % The radius of the big circle
DM=12 % The radius of the group of circles
numCircles = 38;
for k = 1 : numCircles % number of circles
xCenter(k) = r * cosd(90-(k-1)*theta); % the x comoenets of the circle group
yCenter(k) = r * sind(90-(k-1)*theta); % The y component of the circle group
end
plot(xCenter, yCenter, 'b.');
grid on;
viscircles([xCenter(:),yCenter(:)], 15 * ones(numCircles, 1));
axis square
  1 件のコメント
Abdul Hamed Hatem
Abdul Hamed Hatem 2020 年 7 月 4 日
Many Thanks,
That is exactly what I want.
Regards,

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

その他の回答 (1 件)

Rafael Hernandez-Walls
Rafael Hernandez-Walls 2020 年 7 月 4 日
I don't know is you want this:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
theta=10 % azimuthal distance between the centers of circles group
r=120; % The radius of the big circle
DM=15; % The radius of the group of circles
i=1:38;
x1= r*cosd(90-(i-1)*theta); % the x component of the circle group
y1= r*sind(90-(i-1)*theta); % The y component of the circle group
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
plot(x1,y1),axis equal
hold on
n=38;
for k=1:n
x=x1(k)+DM*cos([0:pi/16:2*pi]);
y=y1(k)+DM*sin([0:pi/16:2*pi]);
plot(x,y);
drawnow
end
  1 件のコメント
Abdul Hamed Hatem
Abdul Hamed Hatem 2020 年 7 月 4 日
Many thanks Rafael,
Yes, that is what I am looking after.
Regards,

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

カテゴリ

Help Center および File ExchangeDates and Time についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by