C / Obj-C噪音发生器在第一次运行后总是返回0?

时间:2013-06-17 23:41:01

标签: objective-c c

不幸的是,我一直使用的simplex / perlin噪声生成器非常臃肿且基于java,转移到c / obj-c会很痛苦。我正在寻找在iOS版游戏中使用的更好的课程,但我有一个奇怪的问题。

我的代码循环遍历2d背景的每个“tile” - 它应该计算每个tile的噪声值。在我的java实现中,它工作正常。

但是,每次运行代码时,它似乎在第一次命中断点时打印一个正确的值,但从那时起只返回零:

for (double x = 0; x < 2; x++){
    for (double y = 0; y < 2; y++){
        double tileNoise = PerlinNoise2D(x,y,2,2,1);
    }
}

我尝试了两种不同的实现,目前是c perlin library

断点第一次显示1.88858049852505e-308之类的值,但是当我继续执行时,所有后续断点都显示为“0”。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

对于整数位置,Perlin噪声定义为零。尝试旋转,缩放或翻译你的空间,看看会发生什么:

double u = 0.1;
double v = 0.1;
for (double x = 0; x < 2; x++){
    for (double y = 0; y < 2; y++){
        double tileNoise = PerlinNoise2D(x+u,y+v,2,2,1);
    }
}