2010-12-02 15 views
7

タイトルのように、長方形をランダムに整形されたポリゴンに分割する必要があります。長方形をランダムに形作られたポリゴンに分割する

例、7つのポリゴンで:

+--------+--------+ 
|\  | 2 | 
| \ 1 |''--..__| 
| ------| 5  | 
| 3/ \________| 
| / /\ 6 | 
|__/ 4/\______| 
| /7  | 
+-----+-----------+ 

アルゴリズムは、このためにそこにすでにあるかどうかはわからないが、私はこのまわりで私の頭を取得するように見えることはできません。

私はあなたが答えた言語は特に気にしませんが、私はJava/Swingで実装します。

+2

「ランダムな形の」ポリゴンを意味するとは思いません。あなたの例のポリゴンはランダムに形作られていません。あなたはポリゴンの形状に気にしないという意味ですか?それは「ランダムな形」とは異なります。 –

+0

@McWafflestix:あなたは「ランダムに形作られた」という意味はどうですか?つまり、このアルゴリズムを複数回実行すると、生成されたポリゴンはそれぞれ異なることになります。 –

+0

"random"は、セットの他のメンバーとの関係を意味しません。あなたが示すように分割された長方形の場合、一部のメンバーは他のメンバーとの関係を持っています(例えば、共通の辺の長さ)。 –

答えて

13

あなたは長方形にランダムな点の束を落として、ボロノイ図を計算することができる:だからあなたのサンプルのために、それは行を追加した後、このようにされていると思います。

Here is a Java/Swing implementation.

私はいくつかのサンプルをしました(しかしusing Mathematicaではなく、上記の実装)

alt text

alt text

alt text

HTH!

+0

+1私が考えていたものを考えてみました:)ボロノイの部分は凸であるのに対し、元の例は凹面の部分があることに注意してください。いくつかのボロノイ・ネイバーをランダムにマージして凹状のものを得ることができます。 – celion

+0

@celion「ランダムに形づくられた」とは、直感的なコンセプトだと思います。ボロノイの図は、いくつかのエッジを削除するだけで奇妙な形状を得るための素晴らしい遊び場です。 (アップス!再び同じことを考えている:D) –

3

私は完全な四角形の向こうにランダムな線の束を描いて、各線の交点で線を「分割」するので、基本的に線のネットがあります。次に、必要な数のポリゴンに達するまで任意の数のランダムな線分を削除します。

編集:

+----+---+----+---+ 
|\'--.\_/| / | 
| \ X |''/-..__| 
|--\--+-\+-/------| 
|___\/___\/_______| 
| /\ /\  | 
|__/__\_/|_\______| 
|/ X | \  | 
++----+-++---+----+ 
+0

これは私に[fault algorithm](http://www.lighthouse3d.com/opengl/terrain/index.php3?fault)の2D版を思い出させます。 – Seth

+0

これは、削除する行をプログラムで判断するのが難しいという問題です。また、これは小さなポリゴンを生成する可能性があります。できるだけ避けることをお勧めします。 –

+0

私は故障アルゴリズムを知らなかったが、はい、本当に非常に似ている! – Lucero

関連する問題