私は機能ファイル[ret]=drawellipse(x,y,a,b,angle,steps,color,img)
を使用しています。スクリプトファイルを使用して関数を呼び出し、画像にランダムな楕円を描画します。しかし、ランダム中心点(x、y)とランダムa、bを設定すると、楕円の交点が生じる可能性が高くなります。どうすれば交差点を防ぐことができますか? (私はお互いに別々の楕円を描画することになっています) ここでは、楕円が重なっているかどうかを確認するための関数ファイルがあります。overlap = overlap_ellipses(x0,y0,a0,b0,angle0,x1,y1,a1,b1,angle1)
。 2つの楕円が重複している場合は 'overlap = 1'、それ以外の場合は 'overlap = 0'です。 は、これらすべてに基づいて、私は、コマンドウィンドウでテスト:Matlab:イメージに楕円が重ならないようにする方法は?
x=rand(4,1)*400; % x and y are the random coodinates for the center of ellipses
y=rand(4,1)*400;
a=[50 69 30 60]; % major axis for a and b, i intend to use random also in the future
b=[20 40 10 40]; % minor axis
angle=[30 90 45 0]; % angle of ellipse
steps=10000;
color=[255 0 0]; % inputs for another function file to draw the ellipse
img=zeros(500,500,3);
を交差部分が存在しなくなるまで「重複== 1の場合は、」、AとBを減らす以下は、私が楕円if overlap==0
をdispalyにしたい、と。最後に、imgをimgします。
for i=1:length(x)
img=drawellipse(x(i),y(i),a(i),b(i),angle(i),steps,color,img);
end
私にとって、私は中間部分をコーディングするのが難しいです。 if文を使用してoverlap
の値を取得する方法と、描画する必要がある楕円に対応するインデックスを作成する方法
iはビット
for k=1:(length(x)-1)
overlap = overlap_ellipses(x(1),y(1),a(1),b(1),angle(1),x(1+k),y(1+k),a(1+k),b(1+k),angle(1+k))
end
ように試験し、それが[0 0 1]ない
overlap=0
overlap=0
overlap=1
を返します。私はそれを把握することができないので、プロセスに固執しています。 最終的なイメージシャウルは、このvoronoi diagram of ellipsesの画像のように見えます。
私のスクリプトファイルでは、forループを使って一度に楕円を描画します。 'img'、彼らは同時に出てくるだろう。どのように私はそれらを1つずつ追跡することができますか? – Elsie