背景
在前端开发中,经常需要使用到数字噪声来模拟某些效果,比如火焰、云朵、山脉等等。pf-value-noise 是一个 npm 包,可以生成 PerlinNoise 和 SimplexNoise,用于模拟这些效果。
安装
使用 npm 安装 pf-value-noise:
npm install pf-value-noise
使用
简单使用
下面是一个简单的示例,创建一个 SimplexNoise 并使用它生成数值噪声,然后将结果在控制台输出:
const PF = require('pf-value-noise'); const noise = new PF.SimplexNoise(); const value = noise.get(42, 1337); console.log(value);
这里使用了 SimplexNoise,当然也可以使用 PerlinNoise,只需要将 new PF.SImplexNoise()
换成 new PF.PerlinNoise()
即可。
配置选项
在创建噪声对象时,我们可以传递一些配置选项,来控制数值噪声的生成效果。下面是一个示例,使用配置选项创建一个 SimplexNoise,然后使用它生成数值噪声:
-- -------------------- ---- ------- ----- -- - -------------------------- ----- ----- - --- ----------------- ------- ------------ -------- -- ---------- -- ---------- ---- ------------ ----- --- ----- ----- - --------------- ------ -------------------
这里我们指定了以下配置选项:
random
: 随机数生成器函数。如果不指定,则使用默认的 Math.random。octaves
: 噪声采样次数。默认为 1。frequency
: 噪声频率。默认为 1。amplitude
: 噪声振幅。默认为 1。persistence
: 噪声持续程度。默认为 0.5。
以上所有选项都是可选的,如果不传递这些选项,会使用默认值。
生成不同维度的噪声
pf-value-noise 支持生成不同维度的噪声,包括二维和三维噪声。下面是一个二维噪声的示例,使用 SimplexNoise 生成二维噪声,并将结果绘制到 canvas 上:
-- -------------------- ---- ------- ----- ------ - --------------------------------- ----- --- - ------------------------ ---------------------------------- ------------ - ---- ------------- - ---- ----- ----- - --- ------------------ ----- ---- - --- ------------------ - --------------- --- - - -- --- ---- - - -- - - -------------- ---- - --- ---- - - -- - - ------------- ---- - ------- - ------------- - --- - - ---- ---- - - ----- --------- - --------------------------------- --------------- --- ---- - - -- - - ------------ ---- - ---------------- - -- - ---------------- - - - -- - ---------------- - - - -- - ---------------------------- - ----- ---------------- - - - -- - ---- - --------------------------- -- ---
噪声的应用
使用 pf-value-noise 可以方便地生成各种数字噪声,在前端开发中应用非常广泛,这里只列举一些简单的应用。
火焰效果
火焰效果可以使用 PerlinNoise 来模拟,下面是一个简单的代码示例:
-- -------------------- ---- ------- ----- ------ - --------------------------------- ----- --- - ------------------------ ---------------------------------- ------------ - ---- ------------- - ---- ----- ----- - --- ---------------- -------- -- ---------- ---- --- -------- ------ - ----- --------- - --------------------------------- --------------- --- - - -- --- ---- - - -- - - -------------- ---- - --- ---- - - -- - - ------------- ---- - ----- ----- - ------------- - ------------ - -- - - ------------- - -- - --- - ---- ----- ----- - ----- --- - ----- - ---- --- - ----- - ----- - ---- ----- ---------------- - -- - --------- ---------------- - - - -- - --------- ---------------- - - - -- - --------- ---------------- - - - -- - --------- ---- - - --------------------------- -- --- ---------------------------- - -------
云朵效果
云朵效果也可以使用 PerlinNoise 来模拟,下面是一个简单的代码示例:
-- -------------------- ---- ------- ----- ------ - --------------------------------- ----- --- - ------------------------ ---------------------------------- ------------ - ---- ------------- - ---- ----- ----- - --- ---------------- -------- -- ---------- ----- ---------- ---- ------------ ----- --- -------- ------ - ----- --------- - --------------------------------- --------------- --- - - -- --- ---- - - -- - - -------------- ---- - --- ---- - - -- - - ------------- ---- - ----- ----- - ------------- - ------------- - - --------------- ----- ----- - ---- - ----- - ---- --- - ----- - ---- ----- ---------------- - -- - --------- ---------------- - - - -- - --------- ---------------- - - - -- - --------- ---------------- - - - -- - ---- ---- - - --------------------------- -- --- ---------------------------- - -------
地形效果
地形效果可以使用 SimplexNoise 来模拟,下面是一个简单的代码示例:
-- -------------------- ---- ------- ----- ------ - --------------------------------- ----- --- - ------------------------ ---------------------------------- ------------ - ---- ------------- - ---- ----- ----- - --- ----------------- -------- -- ---------- ------ ---------- ---- ------------ ----- --- -------- ------ - ----- --------- - --------------------------------- --------------- --- - - -- --- ---- - - -- - - -------------- ---- - --- ---- - - -- - - ------------- ---- - ----- ----- - ---------------------- - ------------ - -- - - ------------- - ---- ----- ----- - ------ - ---- ----- - ---- ----- - ----- ---------------- - -- - --------- ---------------- - - - -- - --------- ---------------- - - - -- - --------- ---------------- - - - -- - ---- ---- - - --------------------------- -- --- ---------------------------- - -------
以上代码示例只是简单的效果演示,实际应用中需要根据具体场景进行调整。
总结
pf-value-noise 是一个简单易用的 npm 包,可以方便地生成数字噪声,用于模拟各种效果。它支持多种配置选项,可以生成不同维度、不同参数的数值噪声。通过使用 pf-value-noise,我们可以轻松地实现各种复杂效果,从而提高前端开发效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671a730d092702382267b