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
運行結果:

