1

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

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

然后他给出了图像:

4个伪随机梯度?

我理解这篇文章的其余部分,但我不知道他是如何从每个边界点生成这些随机梯度的。协助将不胜感激。谢谢!

4

1 回答 1

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以运行其余的计算。

于 2012-11-22T14:35:45.183 回答