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

運行結果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM