更为自然的随机行为,Perlin Noise柏林噪音 | p5.js系列

news/2024/7/19 12:59:24 标签: 数据可视化, js, 人工智能, c++11, webrtc
js_content">

先看两张动图的对比,一张是简单的随机取值,另一张是使用perlin noise产生的随机值。

具体代码示例可以参考nature-of-code的p5.js示例。

值得学习的几个要点:


不同的参数写法是如何做到的?

在使用p5.js的时候,最大的感受就是传参方式多种多样,比如fill的传参:

fill(v1, v2, v3, [alpha])
fill(value)
fill(gray, [alpha])
fill(values)
fill(color)

查看源码发现:

p5.Renderer2D.prototype.fill = function(...args) {
     //关键是这行代码,把参数传到color来进行计算
     const color = this._pInst.color(...args);
     this._setFill(color.toString());
};


原来是通过判断color的传参数量来实现的:

const numArgs = arguments.length;

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.`);
}


如何把一个值从一个范围内映射到另一个范围内?

p5.js主要通过map方法来实现,内部的实现主要是按照比例进行转化:

//map(value, start1, stop1, start2, stop2, [withinBounds])

const newval = (n - start1) / (stop1 - start1) * (stop2 - start2) + start2;


多尝试下各种范围的映射:

n=random()
//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噪声。

柏林噪声是个用来生成比 random() 所能生成更自然及更谐波的随机数字系列。柏林噪声至今常被用在图形应用程序中生成程序纹理、自然运动、形状、地形等等。

主要原理是随机产生一些点,然后选取合适的插值函数进行插值计算。比如采用一种更为平滑,非线性的插值函数:fade函数,通常也被称为ease curve。这样插值变化不再是单调的线性变化,而是非线性的过程:初始变化慢,中间变化快,结尾变化又慢下来。

p5.js里使用非常简单:

noise(x)

练习可参考官方示例:

更多的可能,

欢迎加入mixlab无界社区继续探索~~

一个人的探索很孤独,

一群人的探索更有意思。


http://www.niftyadmin.cn/n/1248733.html

相关文章

如何快速找到外观或气质相似的图片?| MixLab 智能工具

#人工智能##图像搜索引擎#shutterstock美股上市公司 Shutterstock 作为全球第一大微利图库公司,是全球最大的以会员订阅模式下载图片的图库公司,目前公司市值16.49亿美元!Shutterstock 四项创新功能:- 细化搜索,然后选…

「蚂蚁呀哈哈」说火就火了,说下架就下架了 | Mixlab 智能工具

#智能工具# #变脸软件#AvatarifyAI Face Animator这款软件于去年上架苹果手机App store,半年后,登顶 App Store 总榜第一。在 “摄影与录像” 种类中,下载量很快超越了微信、拼多多、抖音。Avatarify的介绍栏是这样描述的:“能让你…

仅需 3 行代码,文科生都能上手的百度飞桨Model Hub | Shadow 组队 AI 创造营

飞桨 PaddlePaddle百度家的飞桨 PaddlePaddle 是首款开源开放的产业级深度学习平台,可以很方便搭建模型。在这之前,可能用户们最常见的选择是等大佬搭完了丢出来再接,PaddlePaddle官方团队呢,就贴心地先实现一些经典和先进的模型&…

人脸识别技术已经很成熟了,但「猴脸识别」是什么鬼?| MixLab 论文解读

#人脸识别#、#猴脸识别#、#动物面部识别#人脸识别,是基于人的脸部特征信息,进行身份识别的一种生物识别技术,主要用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸…

抖音用户们的新奇道具特效都是怎么来的?工具箱模式 | Mixlab 智能产品

#智能设计#、#人体分割#字节跳动 -工具箱: 人体分割算法。抖音有一种岗位叫交互工程师,他们主要的工作是测试算法的适用场景,比如人体分割算法(以谷歌bodypix为例),当模型部署在手机后,交互工程…

查看磁盘信息命令和查看目录以及文件占用空间大小命令

记录:313 场景:在CentOS 7.9操作系统,查看磁盘信息命令、查看目录以及文件占用空间大小命令。主要是df、du、lsblk、fdisk、parted、pvdisplay、vgdisplay、lvdisplay、free等命令。 版本: 操作系统:CentOS 7.9 1.…

AI让照片里的内容都「活动起来」| Mixlab 智能工具

#Deepfake 技术#、 #AI 动图生成器#建筑学家 林徽因Deep NostalgiaAI驱动,由静态照片进行动画处理。在线家谱服务公司 MyHeritage 提供的 Deep Nostalgia 服务,可以为静态照片创建最佳的运动效果。公司称该技术能够为旧照片中的人物创建数秒的短片&#…

隔空取人

技术进化的本质是以往众多技术的分解和重新组合,而设计的过程也是一种分解与重组的过程,设计思维和技术思维有非常多的相通之处。在我早期的职业生涯,我是一名空间设计师,从事主题乐园设计、用户体验设计和互联网产品设计&#xf…