質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MATLAB

MATLABはMathWorksで開発された数値計算や数値の視覚化のための高水準の対話型プログラミング環境です。

Q&A

0回答

497閲覧

指定範囲内にランダムな楕円を重ならないように配置するプログラム

sasatakato

総合スコア9

MATLAB

MATLABはMathWorksで開発された数値計算や数値の視覚化のための高水準の対話型プログラミング環境です。

0グッド

0クリップ

投稿2018/06/19 08:47

長径0.5m、短径0.2mの楕円をちょうど重ならないようにランダムに配置するプログラムを組みたいです。
円径の場合には次のように書けると思うのですがの、出来ればこれを楕円の場合にも適応させたいと考えております。
円の場合のプログラムでは
円の中心をランダム位置に発生

ランダム点同士の距離の比較を行い直径以下になるまでこれを繰り返す

比較試行数の限界を迎えるか、発生させたい円の数を満たすと終了する

といった流れになっております。
比較部分でどうにか工夫ができればと考えているので実コードでなくてもアイデアのみでも頂ければありがたいです。
よろしくお願いいたします。

MATLAB

1 2a= 10;%発生させたい範囲 3n_a=50;%発生させたい円の個数 4c_th=1000;%比較限界 5w = 0.5;%円直径 6%long_axis=0.25; %楕円の半径を想定 7%short_axis=0.1; %楕円の半径を想定 8 9for i = 1:n_a 10 11 c = 0; 12 while 1 13 flag = 0; 14 u(i,1) = a * (rand - 0.5); % 円中心位置x 15 u(i,2) = a * (rand - 0.5); % 円中心位置y 16 %u(i,3) = pi * (2 * rand - 1); %楕円の場合の角度を想定 17 18 19 for k = 1:i-1 20 % 21 if norm(u(k,1:2) - u(i,1:2)) < w %距離の比較 22 flag = 1; 23 c = c + 1; 24 break 25 end 26 end 27 if c > c_th 28 break 29 elseif flag == 1 30 continue 31 end 32 break 33 end 34 if c > c_th 35 msg = 'Too crowded to evaluate :('; 36 error(msg) 37 end 38end

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問