Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
柏林噪声:网格单元之间的尖锐轮廓(Matlab)_Matlab_Noise_Perlin Noise - Fatal编程技术网

柏林噪声:网格单元之间的尖锐轮廓(Matlab)

柏林噪声:网格单元之间的尖锐轮廓(Matlab),matlab,noise,perlin-noise,Matlab,Noise,Perlin Noise,我相信这个问题与我无关 我试图在Matlab中实现2D经典柏林噪声。我一直在利用这本书作为参考。然而,我的程序给了我“非平滑”的噪音,正如你在下面看到的。局部插值(在每个网格单元内)工作正常,但网格单元之间存在连续性问题。在我看来,噪音几乎就在那里,除了尖锐度,我无法确定其原因。如果您查看等高线图,网格单元之间存在一些匹配,因此我不会(或者我不相信我会)为噪声计算选择错误的网格点 这是我的密码。在这一点上,我的目标不是速度或效率(速度非常慢) 是什么导致沿网格的不连续性? ========

我相信这个问题与我无关

我试图在Matlab中实现2D经典柏林噪声。我一直在利用这本书作为参考。然而,我的程序给了我“非平滑”的噪音,正如你在下面看到的。局部插值(在每个网格单元内)工作正常,但网格单元之间存在连续性问题。在我看来,噪音几乎就在那里,除了尖锐度,我无法确定其原因。如果您查看等高线图,网格单元之间存在一些匹配,因此我不会(或者我不相信我会)为噪声计算选择错误的网格点

这是我的密码。在这一点上,我的目标不是速度或效率(速度非常慢)

是什么导致沿网格的不连续性? ==============================================

修正码 (感谢MarkV)

应改为
我觉得你好像在这里换了B&C

% calculate influence of gradient vectors by using dot product
s = dot(A, [gradients(xi, yi, 1), gradients(xi, yi, 2)] );
t = dot(C, [gradients(xi, yf, 1), gradients(xi, yf, 2)] ); % use C
u = dot(B, [gradients(xf, yi, 1), gradients(xf, yi, 2)] ); % use B
v = dot(D, [gradients(xf, yf, 1), gradients(xf, yf, 2)] );

你说得对。真不敢相信我自己没找到这个。谢谢我已经在问题中添加了正确的代码。
    % calculate influence of gradient vectors by using dot product
    s = dot(A, [gradients(xi, yi, 1), gradients(xi, yi, 2)] );
    t = dot(B, [gradients(xi, yf, 1), gradients(xi, yf, 2)] );
    u = dot(C, [gradients(xf, yi, 1), gradients(xf, yi, 2)] );
    v = dot(D, [gradients(xf, yf, 1), gradients(xf, yf, 2)] );
    % calculate influence of gradient vectors by using dot product
    s = dot(A, [gradients(xi, yi, 1), gradients(xi, yi, 2)] );
    t = dot(B, [gradients(xf, yi, 1), gradients(xf, yi, 2)] );
    u = dot(C, [gradients(xi, yf, 1), gradients(xi, yf, 2)] );
    v = dot(D, [gradients(xf, yf, 1), gradients(xf, yf, 2)] );
% calculate influence of gradient vectors by using dot product
s = dot(A, [gradients(xi, yi, 1), gradients(xi, yi, 2)] );
t = dot(C, [gradients(xi, yf, 1), gradients(xi, yf, 2)] ); % use C
u = dot(B, [gradients(xf, yi, 1), gradients(xf, yi, 2)] ); % use B
v = dot(D, [gradients(xf, yf, 1), gradients(xf, yf, 2)] );