中点変位法で地形をつくる

Diamond-Square法 — 正方形を繰り返し分割し、ランダムな高さを加えて山や谷をつくろう

3D地形と生成過程

生成開始前
ドラッグ:回転 ホイール・ピンチ:拡大縮小 (タッチ操作対応)

生成アルゴリズム

① Diamond正方形の4頂点の平均高さに乱数変位を加え、中央の高さを求めます。
h中央 = (h₁ + h₂ + h₃ + h₄) / 4 + δ
② Square辺上の点について、周囲の既知の頂点(最大4点)の平均高さに乱数変位を加えます。境界では平均する点が少なくなります。
h辺 = 周囲の高さの平均 + δ

変位量を減らす理由

分割するたびに大きな凹凸を加えると、不自然でギザギザした地形になります。そこで分割段階 k の乱数変位の最大幅 Akを減らします。

δ ∈ [−Ak, +Ak]
Ak = A₀ × 2−Hk

H が大きいほど細かな起伏が弱くなり、滑らかな地形になります。H が小さいほど細かな凹凸が残ります。この教材では各段階の Diamond と Square に同じ振幅を使います。