最近MATLABを学習しはじめたものです。
先ほど質問させていただいて、丁寧なご回答の末、複数の円を描くことに成功しました。
そこで、その円の中の領域を塗りつぶしたいと思い、いろいろサイトや本を見て学習していたところ、fillという関数を使用すれば塗りつぶすことが可能だという言うことが理解できました。
しかし、fill関数を利用してもエラーなく実行はできるのに、塗りつぶす作業ができません。
また、半径を座標にしているせいなのかx,yで座標を指定する方法がわかりません。
コードは以下に示しているのでご指摘お願いします。(重なった円はどちらかが前面に出て、後面にある円は一部隠れているものを想像しています。)
MATLAB
1t = linspace(0,2*pi,100); 2for i=1:20 3 cx =randi([50 460]); cy =randi([50 460]); % 中心 4 r = randi([10 50]); % 半径 5 plot(r*sin(t)+cx,r*cos(t)+cy,'-k'); 6 7 fill(cx,cy,"w"); 8 hold on 9end 10hold off 11axis([0,512,0,512]) 12axis square
t = linspace(0,2*pi,100);
for i=1:20
cx =randi([50 460]); cy =randi([50 460]); % 中心
r = randi([10 50]); % 半径
x=r*cos(t)+cy;
y=r*sin(t)+cx;
plot(r*sin(t)+cx,r*cos(t)+cy,'-k');
fill(x,y,"r");
hold on
end
hold off
axis([0,512,0,512])
axis square
x,yを指定してみようとし、以上のコードに変えたところ、円の数が倍になり、塗りつぶされているものと、塗られていないものが出てくるようになりました。
理解できる方がいればご回答お願いします。
回答1件
あなたの回答
tips
プレビュー