matlab 以坐标画圆

2025-02-25 21:03:29
推荐回答(2个)
回答1:

n=5;%节点个数

x=rand(n,1);%随机x坐标

y=rand(n,1);%随机y坐标

r=rand(n,1)/4;%随机半径

t=0:360;

figure(1);

clf;

hold on;

for ii=1:n 

    plot(x(ii),y(ii),'r.');%画出随机5点

    plot(x(ii)+r(ii)*cosd(t),y(ii)+r(ii)*sind(t));%画圆

    text(x(ii),y(ii),num2str(ii));%标节点号

end

a=false(n);

for ii=1:n

    a(ii,:)=sqrt((x-x(ii)).^2+(y-y(ii)).^2)<=r+r(ii);%利用距离判断生成邻接矩阵

end

a=a-eye(n); %令对角元素为0

gplot(a,[x,y],'k');%画邻接关系图,这里使用了原来的随机x,y坐标

axis equal;

hold off;


这是其中一次随机的结果,找子图等操作留给你自己完成

回答2:

画圆不是关键,只需要两两判断用户之间的距离即可。
用邻接矩阵表示上述图的结构就可以。