パーリンノイズ
地形生成に使えそうななだらかなノイズ Perlin Noise フラクタル地形自動生成
バリューノイズ
ランダムな値の間を補完して作るノイズ 基本的に、線形補完に渡す割合の値を、こねくり回してる感じ
線形補完
aまで移動後、a-b間のx%を追加で移動
def liner(a, b, x) a + x * (b - a) end
コサイン補完
線形補完に使っているx%を、コサインを使って作る。 ラジアンが0〜PIの時、コサインは-1〜1なので、1から引いて0〜2にする。 これを半分にして距離の割合(x%)を作る
def cosine(a, b, x) ft = x * Math::PI # 0〜1を0〜PIのラジアンへ変換 f = (1 - Math.cos(ft)) * 0.5 a + f * (b - a) end
パーリン先生の補完(?)
ノイズの話 - Pentanium Blog?
補完の割合をf(t) = 6.0*t^5-15*t^4+10*t^3
に食わせると
いい感じに滑らかになる魔法
def parlin_interpolate(a, b, x) # f = x * x * x * (10.0 + x * (-15.0 + 6.0 * t)) a + f * (b - a)