PythonでPerlin Noiseを生成する
Perlin Noiseって何ぞ
普通に乱数を何度も使うと、隣接した値と非依存の値を生成する(そうでなければ乱数とは言わない)ので、ランダムかつなめらかな地形みたいなものは作れない。
このような「ランダムかつなめらか」という目標を達成する手法としてPerlin Noiseがある。ググってみればどういうものができるのか分かるであろう。
noiseライブラリの使い方
これでPerlin Noiseが作れるようになるが、若干癖がある。2次元のPerlin Noiseだとnoise.pnoise1(x)という形で呼び出すことになるが、このxが曲者である。
例えばn個、連続したNoiseを作りたいとする。xには、その番号に適当な係数(今回はaとしておこう)を掛けたものを代入する。例えば、
l = [noise.pnoise1(a*i) for i in xrange(n)]
等とやると良い。
aの決め方であるが、これはパターンの数で決める。1つの縞模様が欲しい場合はaが1/nとなるようにすればよい。10なら当然10/nとなる。
ちなみに、同じ値を入力すると、常に同じ値が返るようになっているので、ランダムにしたい場合は、適当な乱数を足せば良い。(0.1とか足しても大きく変化しないので、できるだけ大きな値を足すこと)