Perlin Noise:计算网格点的伪随机梯度

时间:2012-11-22 14:24:04

标签: random vector gradient noise perlin-noise

我似乎在理解this Perlin Noise文章时遇到了一些问题。我需要一些帮助来理解如何计算每个边界点的伪随机梯度。作者给出了函数:

g(xgrid, ygrid) = (gx, gy)

然后他给出了图像:

4 pseudorandom gradients?

我理解文章的其余部分,但我不知道他是如何从每个边界点生成这些随机渐变的。非常感谢协助。谢谢!

1 个答案:

答案 0 :(得分:2)

  

但我不知道他是如何从每个边界点生成这些随机渐变的。

从文章中,它使用伪随机数生成器,始终使用相同的种子,并始终在同一网格上计算它,以便

  

我们的意思是g具有随机性的外观,但需要考虑重要因素   它总是为每个相同的网格点返回相同的渐变   计算。同样重要的是,每个方向都有平等的机会   拾取。

所以它可能会像

那样
srand(CONSTANT_VALUE);

for (y = 0; y < GridHeight; y++)
{
    for (x = 0; x < GridWidth; x++)
    {
        r1 = rand();
        r2 = rand();
        gradient[y][x] = some_function(r1, r2);
    }
}

因此,在每个点中,渐变是伪随机的,对于相同的x和y,它总是相同的,并且均匀分布。然后它访问矩阵gradient以运行其余的计算。