是否可以在半径为s且中心为(0,0)&的大圆内生成半径为r且中心不是(0,0)的小圆圈。在它们内部产生不同数量的随机点?例如,半径为r的10个点和半径为s的100个点。有人可以帮忙吗?
答案 0 :(得分:2)
检查以下代码段。您可能需要根据您的要求进行更新。作为一个例子,想一想如何避免过圈。
clear all;
i = 0;
j = 0;
r = 100;
nc = 2;
figure;
hold on;
axis equal;
viscircles([0 0], r, 'EdgeColor','r')
while i < nc
rr = randi([-r r]);
rc = randi([-r r]);
d = pdist([rc rr; 0 0],'euclidean');
r2 = randi([20 300]);
if d<r && d+r2<r
viscircles([rc rr], r2, 'EdgeColor','g')
c = [rand rand rand];
np = randi([1 10]);
while j<np
pc = randi([rc-r2 rc+r2]);
pr = randi([rr-r2 rr+r2]);
d2 = pdist([pc pr; rc rr],'euclidean');
if d2<r2
scatter(pc,pr,30,c,'filled');
j = j+1;
end
end
i = i+1;
end
end
示例输出: