p5.js临摹动态图形实现方法详解


Posted in Javascript onOctober 23, 2019

使用p5.js临摹一个动态图形并作出拓展,供大家参考,具体内容如下

原图形

p5.js临摹动态图形实现方法详解

由内向外,白色圆的半径依次增大,黑色圆的半径不变;
白色圆在上一个白色圆碰到之前就开始增大半径;
图中只能存在一个周期的变化;

临摹图形

使用P5.js,依照上文的规律进行临摹

画12对圆;
相邻圆之间半径差为25;
白色圆半径以周期为60帧的正弦函数的正数值部分变化,变化幅度为22;
相邻白色圆运动函数相位差为13帧;

代码如下:

function setup() {
 createCanvas(400, 400);
 frameRate(30)//图形设为30帧
}

function draw() {
 background(0);
 
 
 for(i=12;i>0;i--)//一共12对圆
 {
 y=22*sin(PI*frameCount/30-13*(i-1));//相邻白色圆运动函数相位差为13帧
 if(y>=0)
 {
  a=y;
 }
 else
 {
  a=0;
 }
 fill(255);
 ellipse(200,200,a+50*i);//白色圆
 fill(0);
 ellipse(200,200,25+50*(i-1));//黑色圆
 }
}

p5.js临摹动态图形实现方法详解

拓展图形

图形向外扩散的感觉是因为相邻的白色圆相位差为13帧,改变相位差可实现改变视觉效果

function setup() {
 createCanvas(400, 400);
 frameRate(30)
}

function draw() {
 background(0);
 
 
 for(i=12;i>0;i--)
 {
 y=22*sin(PI*frameCount/30-12*(i-1));//相位差设为12
 if(y>=0)
 {
  a=y;
 }
 else
 {
  a=0;
 }
 fill(255);
 ellipse(200,200,a+50*i);
 fill(0);
 ellipse(200,200,25+50*(i-1));
 }
}

p5.js临摹动态图形实现方法详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 命名空间以提高代码重用性
Nov 13 Javascript
js注意img图片的onerror事件的分析
Jan 01 Javascript
javascript倒计时功能实现代码
Jun 07 Javascript
js获取location.href的参数实例代码
Aug 02 Javascript
JS获取下拉框显示值和判断单选按钮的方法
Jul 09 Javascript
创建自己的jquery表格插件
Nov 25 Javascript
浅谈Webpack 持久化缓存实践
Mar 22 Javascript
jQuery实现动态加载select下拉列表项功能示例
May 31 jQuery
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
Jan 18 Javascript
Vue中通过Vue.extend动态创建实例的方法
Aug 13 Javascript
结合axios对项目中的api请求进行封装操作
Sep 21 Javascript
Javascript表单序列化原理及实现代码详解
Oct 30 Javascript
jQuery实现轮播图源码
Oct 23 #jQuery
JavaScript实现图片轮播特效
Oct 23 #Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
Oct 23 #jQuery
微信小程序实现多行文字超出部分省略号显示功能
Oct 23 #Javascript
Vue实现数据请求拦截
Oct 23 #Javascript
Vue项目中如何使用Axios封装http请求详解
Oct 23 #Javascript
基于Nuxt.js项目的服务端性能优化与错误检测(容错处理)
Oct 23 #Javascript
You might like
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
php 静态页面中显示动态内容
2009/08/14 PHP
php 静态属性和静态方法区别详解
2017/04/09 PHP
laravel框架中间件简单使用方法示例
2020/01/25 PHP
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
jquery validation验证身份证号,护照,电话号码,email(实例代码)
2013/11/06 Javascript
网站内容禁止复制和粘贴、另存为的js代码
2014/02/26 Javascript
JS小游戏之仙剑翻牌源码详解
2014/09/25 Javascript
jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)
2016/08/25 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
微信小程序 登陆流程详细介绍
2017/01/17 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
2017/06/04 Javascript
vue 自定义 select内置组件
2018/04/10 Javascript
vue v-model实现自定义样式多选与单选功能
2018/07/05 Javascript
bootstrap 路径导航 分页 进度条的实例代码
2018/08/06 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
2019/05/22 Javascript
新手入门带你学习JavaScript引擎运行原理
2019/06/24 Javascript
JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
2020/04/13 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
2021/01/28 Javascript
Python实现的金山快盘的签到程序
2013/01/17 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
Python标准库之collections包的使用教程
2017/04/27 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
2018/07/10 Python
Python解析命令行读取参数之argparse模块
2019/07/26 Python
python实现字典嵌套列表取值
2019/12/16 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
python更新数据库中某个字段的数据(方法详解)
2020/11/18 Python
详解java调用python的几种用法(看这篇就够了)
2020/12/10 Python
html5 Canvas绘制线条 closePath()实例代码
2012/05/10 HTML / CSS
Html5实现首页动态视频背景的示例代码
2019/09/25 HTML / CSS
extern在函数声明中是什么意思
2014/01/19 面试题
音乐教学案例
2014/01/30 职场文书
高考寄语大全
2014/04/08 职场文书
2015年世界粮食日演讲稿
2015/03/20 职场文书
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis