MATLAB之画确定区域内不重合的随机圆

MATLAB之画确定区域内不重合的随机圆

程序要求:在确定区域内,画互不重合的圆。

知识点:
(1)A=p'; 转置运算
(2)ones(a,b)产生a行b列全1数组
(3)rand(a,b)产生a行b列个0~1之间的随机数
(4)函数简介:输入参数:N为圆的个数,D为圆的半径,K为两圆之间的距离(D的倍数);输出为各圆心的坐标;并作图

程序:

  function [xdata,ydata] = dataH(N,D,K)
%N为圆的个数,D为圆的半径,K为两圆之间的距离(D的倍数)
b=D*ones(1,N);                            %生成半径为D的数组,100个
S=[150,100];                              %**区域大小**
p=b(1)+(S-2*b(1)).*rand(1,2);             %产生一个随机点
A=p';                                     %第一点坐标记录进矩阵A中,转置运算
t=0:360;
plot([0 400 400 0 0],[0 0 400 400 0]);     %画区域方框
hold on                                  
for ii=2:N
    p=b(ii)+(S-2*b(ii)).*rand(1,2);   %产生一个新随机点,rand(1,2)表示产生一行两列(0,1)之间的随机数
    while any((A(1,:)-p(1)).^2+(A(2,:)-p(2)).^2<K*K*D*D)   %距离判断
          p=b(ii)+(S-2*b(ii)).*rand(1,2);
    end
    A = [A,p'];                                            %保存新的点到矩阵A
    patch(p(1)+b(ii)*cosd(t),p(2)+b(ii)*sind(t),'r');      %填充一个圆
end
hold off
axis equal
axis([0 150 0 100]);
A=[b;A];
xdata = A(2,:);
ydata =A(3,:); 
 end

运行结果:

原文地址:https://www.cnblogs.com/HZL2017/p/6711187.html