simplex-noise.js
simplex-noise.js 是 Javascript 中的一种快速的单纯形噪声实现。它可以在浏览器和 nodejs 上运行。
- codepen.io 上的简单 2D 等离子。
- 3D 体素世界生成示例。
- 模拟胶片模拟器中的胶片颗粒。
安装
npm i -S simplex-noise
用法
在默认情况下,simplex-noise.js 将使用 Math.random() 来植入噪声。
// initializing a new simplex instance // do this only once as it is relatively expensive var simplex = new SimplexNoise(), value2d = simplex.noise2D(x, y), value3d = simplex.noise3D(x, y, z), value4d = simplex.noise4D(x, y, z, w);
你也可以传入一个种子字符串,然后用它来初始化在 alea PRNG 中构建的噪音。
var simplex = new SimplexNoise('seed'), value2d = simplex.noise2D(x, y), sameSeed = new SimplexNoise('seed'), differentSeed = new SimplexNoise('different seed'); sameSeed.noise2D(x, y) === value2d differentSeed.noise2D(x, y) !== value2d
您还可以向用于构建置换表的构造函数传递一个可选的随机函数。这可以与自定义伪随机数生成器一起使用。
var random = new Alea(seed), simplex = new SimplexNoise(random), value2d = simplex.noise2D(x, y);
ALEA PRNG 可以在 npm 包 alea 中找到。
Node.js
Node.js 也受支持,您可以使用 npm 安装该软件包。
var SimplexNoise = require('simplex-noise'), simplex = new SimplexNoise(Math.random), value2d = simplex.noise2D(x, y);
基准测试
对于开发,您可以打开 perf/index.html 并查看控制台,或在 shell 中运行 node perf/benchmark.js。还有一个 rake 任务,用于比较您当前的更改,也可以运行 make compare。 该命令使用 git stash 起作用。
测试
这个库有一些简单的单元测试来运行它们。
要求
它需要类型化的数组。如果要在不支持的浏览器中使用它,则需要使用诸如 typedarray.js 之类的 polyfill。
许可
版权所有(c)2015 Jonas Wagner,已根据 MIT 许可获得许可(随附)
致谢
这主要是 Stefan Gustavson 和 Peter Eastman 编写的 Java 实现的直接 javascript 移植。
集成的伪随机发生器基于 JohannesBaagøe 的代码。
typescript 定义由 Neonit 提供。
(The first version translated by vz on 2020.08.08)