Dub*_*Dot 8 c# algorithm perlin-noise
尽我所能努力,我找不到任何有关1D Perlin\Samplex Noise的真实教程.
我在互联网上搜索过但却找不到任何东西.我发现任何提到1D perlin噪音的网站通常都很不清楚,或只是显示代码
小智 7
迟到了,但事实证明,像下面这样的函数永远不会是周期性的。
sin (2 * x) + sin(pi * x)
Run Code Online (Sandbox Code Playgroud)
您可以采用一般的函数,例如将 2 更改为 3,在 y 方向上压缩图形,缩放单个正弦的 x 频率/周期,您还可以将单个周期移动x。很多东西,我在 geogebra 下面的链接中做了一个游乐场,所以你可以玩配置,看看什么看起来最好,等等。绿色图是结果,紫色图是如果你想要整个函数增长到理论无穷大,橙色虚线图是我们在上面看到的红色函数的恒定配置,黄色线图是没有缩放的一切。享受!
提示:非周期函数不需要两个无理数。例如,您还可以使用二的平方根。
https://www.geogebra.org/graphing/yzgxvd8q
我知道这是一个老问题,但这是构成1d Perlin噪声的固定点之间插值的最清晰的解释之一http://webstaff.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf
插值函数是所有编程中最有用的最重要的知识之一...
http://paulbourke.net/miscellaneous/interpolation/
一旦您具有带有平滑步长插值的随机点,便拥有了一种平滑一维噪声函数。
参见wiki上的“平滑步骤”。通过谷歌的很多话题。https://zh.wikipedia.org/wiki/平稳步伐
显然,超链接是不稳定的,这里又是:
单纯噪声消除神秘感
肯·佩林(Ken Perlin)提出了“简单噪声”,以替代其经典噪声算法。经典的“ Perlin噪声”为他赢得了一项学术大奖,并且多年来已经成为计算机图形学无处不在的程序原语,但事后看来,它有很多局限性。肯·佩林(Ken Perlin)本人专门设计了单面噪声来克服这些限制,并且他为此花了很多心思。因此,这是一个比他原来的算法更好的主意。
一些比较突出的优点是:
•单工噪声具有较低的计算复杂度,并且需要较少的乘法运算。
•单工噪声可以以更低的计算成本扩展到更高的尺寸(4D,5D及更高尺寸),而复杂度是针对尺寸的,而不是经典噪声的尺寸。
•单工噪声没有明显的定向伪像。
•单面噪声在任何地方都具有定义明确且连续的渐变,可以很便宜地计算出它。
•单工噪声易于在硬件中实现。
令人遗憾的是,即使在2005年初的今天,似乎只有很少的人了解单形噪声,而几乎没有人使用它,这就是我写这篇文章的原因。我将尝试比Ken Perlin在Siggraph 2001和2002的课程笔记中更详尽地解释该算法,并希望清楚地表明它并不像初看起来那样难掌握。从我所学到的东西中,最令人困惑的是Ken Perlin在Java中的参考实现的坚不可摧的本质。他提供了非常紧凑且没有注释的代码来演示该原理,但显然该代码不应作为教程阅读。经过几次尝试,我放弃了代码,转而阅读他的论文,这更加清楚了。
不过,这还不是很清楚,因为他主要以单词和代码片段介绍了该算法。我将不胜感激一些图形和数字以及一些有用的方程式,这就是我在这里尝试提供的内容,以使其他人更容易理解单纯形噪声的伟大和美丽。我还将首先以一维和二维方式进行解释,以使图形和图像更易于解释,然后再扩展至三维和四个维度。经典噪声为了解释单纯形噪声,对经典Perlin噪声有很好的理解是有帮助的。在这方面,我已经看到了很多错误和误导的解释,因此为确保您已完成必要的基础工作,我将首先介绍经典的Perlin噪声。
Perlin噪声是所谓的梯度噪声,这意味着您可以在空间中规则间隔的点上设置伪随机梯度,并在这些点之间插入平滑函数。要在一维生成Perlin噪声,请将噪声函数的伪随机梯度(或斜率)与每个整数坐标相关联,并将每个整数坐标处的函数值设置为零。
对于两个整数点之间某点的给定点,该值将在两个值之间进行插值,即,如果从左和从右开始的最接近线性斜率已被外推到所讨论的点,则该值将为结果。这种插值是一种平滑算法。
| 归档时间: |
|
| 查看次数: |
10250 次 |
| 最近记录: |