Random 柏林噪声:计算网格点的伪随机梯度

Random 柏林噪声:计算网格点的伪随机梯度,random,vector,gradient,noise,perlin-noise,Random,Vector,Gradient,Noise,Perlin Noise,我似乎在理解柏林噪声文章时遇到了一些问题。我需要一些帮助来理解如何计算每个边界点的伪随机梯度。作者给出了函数: g(xgrid, ygrid) = (gx, gy) 然后他给出了一个图像: 我理解文章的其余部分,但我不知道他是如何从每个边界点生成这些随机梯度的。我们将不胜感激。谢谢 但我不知道他是如何从每个边界点生成这些随机梯度的 从文章中可以看出,它使用的伪随机数生成器总是具有相同的种子,并且总是在相同的网格上计算它,因此 我们的意思是,g具有随机性的外观,但是有重要的考虑 它总是为相同的

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

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);
    }
}
srand(恒定值);
对于(y=0;y

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

答案不错,但在我所看到的柏林噪声的所有实现中,没有使用过类似的方法。”“渐变”似乎不是真正的渐变。但我不确定。我同意他们看起来不太像梯度——我称他们为向量。或者甚至是经文,它们看起来像是固定长度的。不过,他是这么说的:-我认为它们是梯度,在某种意义上,它们代表了噪声在那个点上的变化率,就像一个“法线”向量。固定长度有助于噪音的最大值保持一致。如果它们真的是随机的,噪音就会有暗点。我想。