更为自然的随机行为,Perlin Noise柏林噪音 | p5.js系列
先看两张动图的对比,一张是简单的随机取值,另一张是使用perlin noise产生的随机值。


具体代码示例可以参考nature-of-code的p5.js示例。
值得学习的几个要点:
不同的参数写法是如何做到的?
在使用p5.js的时候,最大的感受就是传参方式多种多样,比如fill的传参:
fill(value)
fill(gray, [alpha])
fill(values)
fill(color)
//关键是这行代码,把参数传到color来进行计算
const color = this._pInst.color(...args);
this._setFill(color.toString());
};
if (numArgs >= 3) {
// Argument is a list of component values.
} else if (numArgs === 1
&& typeof r === 'string') {
//...
} else if ((numArgs === 1
|| numArgs === 2)
&& typeof r === 'number') {
// 'Grayscale' mode.
}else {
throw new Error(
`${arguments}is not a valid color representation.`);
}
如何把一个值从一个范围内映射到另一个范围内?
const newval = (n - start1) / (stop1 - start1) * (stop2 - start2) + start2;
//0.6659798731369693
map(n,0,1,-1,0)
//-0.33402012686303073
map(n,0,1,8,10)
//9.331959746273938
map(n,0,1,0,100)
//66.59798731369693
柏林噪声
PERLIN NOISE,译作柏林噪声,是指KEN PERLIN发明的噪声算法。KEN PERLIN早在1983年就提出了PERLIN NOISE,当时他正在参与制作迪士尼的动画电影《电子世界争霸战》(TRON),但是他不满足于当时计算机产生的那种非常不自然的纹理效果,因此提出了PERLIN噪声。


欢迎与我交流~