Perl   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了算法 – 包裹2D perlin噪声大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Perlin Noise进行高度图生成算法,我想让它包围边缘,以便它被视为连续的.有没有一个简单的方法或技巧呢?我想我需要像球面噪音那样的水平和垂直的包裹.我也会快乐只有1个包装轴,但两个会更好.

现在我使用经典的算法,您可以在其中设置要添加多少个八度音阶,以及用于在每个连续八度音阶之间改变波形的幅度和频率的乘法器.

提前致谢!

解决方法

获得Perlin噪声作为波形总和.通过内插随机值获得波形,较高的八度波形具有较小的缩放因子,而内插的随机值彼此更接近.为了使其环绕,您只需要以通常的环形方式正确地插入y轴和x轴,即,如果X轴从x_min跨越到x_max,最左边的随机点(正被插值)是在x0处和最右侧的x1(x_min X)处,通过从x1到x0(围绕边缘包围)内插,插值到x1并从x0左侧的内插像素的值被获得.="" 这里使用线性插值对八度中的一个进行伪代码.这假设一个256×256矩阵,其中perlin噪声网格大小是两个像素的强度…只是为了使其可读.想象一下大小="=" 16:="" <="">
wrappable_perlin_octave(grid,sizE):
   for (x=0;x<256;x+=sizE):
     for (y=0;y<256;y+=sizE):
       grid[x][y] = random()
   for (x=0;x<256;x+=sizE):
     for (y=0;y<256;y+=sizE):
       if (x % size != 0 || y % size != 0): # interpolate
         ax = x - x % size
         bx = (ax + sizE) % 256 # wrap-around
         ay = y - y % size
         by = (ay + sizE) % 256 # wrap-around
         h = (x % sizE) / size # horizontal balance,floaTing-point calculation
         v = (y % sizE) / size # vertical balance,floaTing-point calculation
         grid[x][y] = grid[ax][ay] * (1-h) * (1-v) +
                      grid[bx][ay] * h * (1-v) +
                      grid[ax][by] * (1-h) * v +
                      grid[bx][by] * h * v

大佬总结

以上是大佬教程为你收集整理的算法 – 包裹2D perlin噪声全部内容,希望文章能够帮你解决算法 – 包裹2D perlin噪声所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。