作成中のゲームのデータを生成するためにパーリン ノイズ関数を使用していますが、何らかの理由で、異なる入力に対してまったく同じ結果が返され続けます。FBM 関数でこれをデバッグしようとして 4 時間ほど費やしましたが、理解できなかったので、Ken Perlin の改善されたノイズ関数を試してみましたが、同じことが起こりました。
これがなぜなのか誰か知っていますか?それを修正する良い方法は何ですか?私ができた唯一のことは、x 座標と y 座標に .6473 のような 10 進数の値を追加することだけでした。
ここにいくつかのテストコードがあります。ノイズ値で満たされた 2 つの異なる 2D 配列を作成しようとしています。x と y の入力は、私のゲームの座標です。それらの後に ' * * 'がある行では、これらの値を増やさないと、両方の配列がすべてゼロで埋められます。この例では、座標 (0.0, -768.0) と (-1024.0, -768.0) はまったく同じノイズ値を返します。私のゲームでは、9 つの異なる座標が同じ値を返します。
このテストに使用しているパーリン ノイズ関数はこちら
public class TestPerlinMain
{
public static void main(String[] args)
{
int seed = 532434;
//create first noise array
double x = 0.0; //x-coordinate
double y = -768.0; //y-coordinate
float z = 10.0f;
double[][] test = new double[15][15];
System.out.println("Noise Array 1: ");
for(int i = 0; i < test.length; i++)
{
for(int j = 0; j < test[i].length; j++)
{
test[i][j] = ImprovedNoise.noise(x + (j * 64.0), y + (i * 64.0), 10.0);
x += .314f;//************
System.out.print(test[i][j] + " ");
}
y += .314f;//***********
}
System.out.println();
//create 2nd noise array
double x2 = -1024.0; //x coordinate
double y2 = -768.0; //y coordinate
float z2 = 10.0f;
System.out.println();
double[][] test2 = new double[15][15];
System.out.println("Noise Array 2: ");
for(int i = 0; i < test2.length; i++)
{
for(int j = 0; j < test2[i].length; j++)
{
test2[i][j] = ImprovedNoise.noise(x2 + (j * 64.0), y2 + (i * 64.0), 10.0);
x2 += .314f;//*************
System.out.print(test2[i][j] + " ");
}
y2 += .314f;//************
}
System.out.println();
}