我似乎在理解this Perlin Noise文章时遇到了一些问题。我需要一些帮助来理解如何计算每个边界点的伪随机梯度。作者给出了函数:
g(xgrid, ygrid) = (gx, gy)
然后他给出了图像:
我理解文章的其余部分,但我不知道他是如何从每个边界点生成这些随机渐变的。非常感谢协助。谢谢!
答案 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
以运行其余的计算。