我似乎在理解这篇Perlin Noise 文章时遇到了一些问题。我需要一些帮助来理解计算每个边界点的伪随机梯度是如何工作的。作者给出了函数:
g(xgrid, ygrid) = (gx, gy)
然后他给出了图像:
我理解这篇文章的其余部分,但我不知道他是如何从每个边界点生成这些随机梯度的。协助将不胜感激。谢谢!
但我不知道他是如何从每个边界点生成这些随机梯度的。
从文章中,它使用了一个始终具有相同种子的伪随机数生成器,并始终在同一个网格上计算它,因此
我们的意思是 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
以运行其余的计算。