0

立方体の 3D ボックスがあり、各立方体には次の 3 つのインデックスがあると仮定(x,y,z)します。

この立方体のボックスを表す 3D 配列があり、各立方体が 3D 配列の要素であるとします。

たとえば、次の配列は、ボウル型の土地を表します。

y=0:        
0 0 0 0 0     
0 0 0 0 0
1 1 1 1 1
1 1 1 1 1

y=1:
0 0 0 0 0
0 0 0 0 0
1 0 0 0 1
1 1 1 1 1

y=2:
0 0 0 0 0
0 0 0 0 0
1 0 0 0 1
1 1 1 1 1

y=3:
0 0 0 0 0  
0 0 0 0 0
1 1 1 1 1
1 1 1 1 1

f選択ボックスを指定すると、頻度が で、平均高さがh、高さのv平均変動が である丘を生成するようなアルゴリズムは何ですか?

結合ボックスの最下層が「ベースライン」または「海面」であると想定できます。

function makeTrees(double frequency, int height, double variation)
{
    //return 3d array.
}

私はMinecraft MCEditフィルタプラグインを書いています:P

4

2 に答える 2

2

最も簡単な方法は、問題を3つの部分に分解することです。

  1. 高さhの単一の丘の立方体を生成するルーチンを記述します。これを単純な円錐にすることから始めます(心地よく見えるものが見つかるまで、頂角で遊んでください)

  2. 選択した乱数ジェネレーターを使用して、hvとh+vの間のn個の高さのセットを生成します

  3. 立方体にランダムにn個の山を配置します。それらが交差するかどうかは関係ありません-実際、それはより見栄えの良い範囲につながります。

ただし、このアプローチを放棄し、境界キューブ内にフラクタル地形を生成して、それを離散化することもお勧めします。フラクタルジェネレーターのパラメーターを操作して、高さと分散を制限できます。

于 2011-08-26T05:29:05.727 に答える
1

中心からの半径の関数として、周波数の正弦波の丘f(または、「周波数」は通常時間量に使用されるため、波数)が必要であると仮定します。 fr = sqrt(x^2+y^2)

次のようにしきい値関数を定義します。

ここに画像の説明を入力

(x,y,z)を持つ要素はすべてz < z_m土地になり、残りは空気になります。

于 2011-08-26T07:24:19.037 に答える