Pythonのノイズモジュールを使用して2Dパーリンノイズを生成しようとしています。私は例に従おうとしました。
この関数は、入力を必要とするだけです。pnoise2()
x
y
noise2(x, y, octaves=1, persistence=0.5, repeatx=1024, repeaty=1024, base=0.0)
しかし、私が何を渡しても、関数は常にを返します0.0
。どうして?私は何か見落としてますか?
[編集:05/10/12]
他のいくつかの例は機能しますが、コードは単純です。
import sys
from noise import pnoise2
import random
random.seed()
octaves = random.random()
freq = 16.0 * octaves
for y in range(30):
for x in range(40):
n = int(pnoise2(x/freq, y / freq, 1)*10+3)
if n>=1:
n=1
else:
n=0
print n,
print
* 0.5
それで、またはなどの値が何のためにあるの+ 0.5
かわからないので* 10+3
、これらの値のいくつかを除外しながら、私は自分自身を試しました。上記の例でrandom.random()
は、float0.7806
などを返します。これに乗算し16.0
て周波数を取得します。注意:オクターブは、連続するノイズ関数の数を示すため、整数である必要があるため、すでに困惑しています(関数1
の3番目の値として渡される整数でもあることに注意してくださいpnoise2()
)。とにかく、関数では、からのいくつかの整数range()
が、で除算されfrequency
ます13.88
。
>>> pnoise2(1/13.88, 1/13.88, 1)
0.06868855153353493
>>> pnoise2(0.07, 0.06, 1)
0.06691436186932441
>>> pnoise2(3.07, 3.04, 1)
0.06642476158741428
>>> pnoise2(3.00, 2.03, 1)
0.02999223154495647
しかし、再び:
>>> pnoise2(3.0, 2.0, 1)
0.0
>>> pnoise2(1.0, 2.0, 1)
0.0
>>> pnoise2(4.0, 5.0, 1)
0.0
したがって、関数が。以外の値を返すためには、x
または 小数が必要であると結論付けます。y
0.0
この後、私の問題は、理由がわからないことです。誰かが私を教えてくれませんか?