人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

以下のことが可能なソフトを探しています。

任意の大きさの長方形をピクセル単位で指定します。
指定した大きさの長方形が作図されます。
次に、上記長方形を構成する四つの線分(辺)上のランダムな箇所に、一つの「点」を生成します。
1)「点」は生まれた箇所で線分を分割します。
2)「点」は、図形内のすべての線分の中から、一つの線分をランダムに選び、その線分上のランダムな位置に向かって「直線」を伸ばします。「直線」は、到達すべき線分まで伸びてゆく間に、他の線分と交差する場合、その交点で線分を分割しながら伸びてゆきます。
そして、先に選ばれた線分に「直線」が接したら、直線の成長は止まり、その接点に新たな「点」が生まれ、以降、1)、2)を繰り返します。

あらかじめ指定した「「点」の生まれる数」に達するか、
あるいは、
あらかじめ設定した「「分割された線分の最短の長さ以上」で上記行程を繰り返すことが出来無くなった時点」で繰り返しが終わります。

上記のようなことが出来るソフトを探しています。
もしくは作っていただけるならご相談の上ポイントを差し上げます。
よろしくお願いいたします。

●質問者: minapoo
●カテゴリ:コンピュータ 学習・教育
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● TransFreeBSD
●100ポイント ベストアンサー

サンプル的に作って見ました。
http://jsdo.it/TransFreeBSD/bv6j
ただ終了条件の

「「分割された線分の最短の長さ以上」で上記行程を繰り返すことが出来無くなった時点」

がよく分からなかったので、これはやってません。
矩形のサイズは描画領域の内側10ピクセルで、取り合えず、点は100個にしています。

精度というか、丸めとか最小単位とか考慮してないので、端点の極近くや超鋭角で交差する線分とかは、ちょっと怪しくなります。
線分をランダムに選択したのち切断点を選ぶため、小さい線分が出来てくると、そこへ集中する傾向があって、意外と極小線分ができやすいようです。

#計算はpythonの方がしやすそうだけど、表示はjavascriptが楽ですね。


minapooさんのコメント
TransFreeBSDさん、ありがとうございます! 私の説明が下手すぎて申し訳ありませんでした。 私の説明の「線分に「直線」が接したら、直線の成長は止まり、その接点に新たな「点」が生まれ、以降、1)、2)を繰り返します。」 の部分なんですが、この「繰り返し」とは、最初の「直線」が接した線分に生まれた新たな「点」から、また1)、2)が繰り返されるということで、つまりは一筆書きのように、続けられていくということなんです。わかりにくくてすみません。 それから「「分割された線分の最短の長さ以上」で上記行程を繰り返すことが出来無くなった時点」というのは、あらかじめ最短の線分長を設定しておくと(例えば10ピクセルとか)「点」や「直線」によって分割されて新たに出来てゆく線分の長さが10ピクセル以下になってしまうルート以外に「直線」を伸ばす選択肢が無くなってしまった時点という意味です(わかりづらいですね、すみません)。 それから、後出しで申し訳ないんですが一つ条件を書き忘れていました。 既にある線分や直線を「なぞらないで」行程を繰り返してほしいんです。 申し訳ありません。 でもかなり近いところまで作っていただけてると思います。こんなに短時間でスマートで驚きました。 もし、修正していただけましたらすごくうれしいです。 その際、私の説明に解りづらい部分があれば質問していただければ幸いです。 よろしくお願いいたします。

TransFreeBSDさんのコメント
改良してみました。 が、下記について。 >> 「点」や「直線」によって分割されて新たに出来てゆく線分の長さが10ピクセル以下になってしまうルート以外に「直線」を伸ばす選択肢が無くなってしまった時点 << 一つは普段からそのルートには伸ばさないのか?と言う点と、 もう一つは、理論的に選択肢がなくなった事が判定基準ですか?という点。 多分そうだと思うけれど、特に後者の判定基準が数学的に整理出来ない(^^; だれか、線形代数得意な人〜解法おしえて〜

minapooさんのコメント
TransFreeBSDさん、改良ありがとうございます! >> 普段からそのルートには伸ばさないのか? << その解釈でお願いできるとありがたいです。 「点」は、常に分割される線分が設定した長さ以下にならないルートで直線を伸ばすということで。 >> 理論的に選択肢がなくなった事が判定基準ですか? << こちらに関しては上の条件がクリアできるのでしたら「選択肢が無くなるまで探し続ける」というのは無しで、終了はあくまで「点」の数でということで良いです。 なんか余計にめんどくさいことになってしまったでしょうか? それにしても凄いですね。改良してくださるのも早くてホントに感動&感謝します。 もし懲りずにまだ考えてくださるならよろしくお願いいたします。

TransFreeBSDさんのコメント
遅くなりましたが、変えておきました。 指定長以下に分割されるルートだと、もう一度ルートを探し、1000回探しても見つからないと、もう選択肢がないと判断して終了してます。 ただ、新たに伸ばした直線に対しては長さを見ていませんので指定した長さ以下の線分も発生しますし、交点で分割していないので、既存の交点の近くでも交点を作ります。 一応、切断できない末端部分を、新規の線分は緑、新規で指定長の(もう分割できない)倍以下は赤、既存の線分を分割した場合は青になっています。

minapooさんのコメント
改良ありがとうございます! 思っていたよりものすごく近いところまで作っていただいて本当に感謝しております。 >> 新たに伸ばした直線に対しては長さを見ていませんので指定した長さ以下の線分も発生しますし、交点で分割していないので << メッセージを送信いたしましたので、よろしかったらご覧ください。

TransFreeBSDさんのコメント
取り合えず修正しました。 以下疑問点 f:id:TransFreeBSD:20120414141929p:image 現状は伸ばした線も分割する右側仕様です。

minapooさんのコメント
>> 現状は伸ばした線も分割する右側仕様です。 << その仕様でOKです。 凄く早く対応していただいて感謝します! ポイント送付させていただきます。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ