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跨浏览器获取页面中相同class节点的方法
Mar 03 Javascript
js简单实现竖向tab选项卡的方法
May 04 Javascript
Vue.js原理分析之observer模块详解
Feb 17 Javascript
jquery获取select,option所有的value和text的实例
Mar 06 Javascript
angularjs中回车键触发某一事件的方法
Apr 24 Javascript
一个有意思的鼠标点击文字特效jquery代码
Sep 23 jQuery
Vue v2.5 调整和更新不完全问题
Oct 24 Javascript
React 无状态组件(Stateless Component) 与高阶组件
Aug 14 Javascript
从组件封装看Vue的作用域插槽的实现
Feb 12 Javascript
vue路由跳转传参数的方法
May 06 Javascript
js实现随机div颜色位置 类似满天星效果
Oct 24 Javascript
JS定时器如何实现提交成功提示功能
Jun 12 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
php以fastCGI的方式运行时文件系统权限问题及解决方法
2015/05/11 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
2016/01/07 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
2016/01/11 PHP
php连接oracle数据库的方法(测试成功)
2016/05/26 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
2016/12/24 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
用js来解决ajax读取页面乱码
2010/11/28 Javascript
js时间日期格式化封装函数
2014/12/02 Javascript
JavaScript实现三阶幻方算法谜题解答
2014/12/29 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
2016/04/28 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
2016/07/10 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
2017/04/18 Javascript
Javascript实现倒计时时差效果
2017/05/18 Javascript
JavaScript用二分法查找数据的实例代码
2017/06/17 Javascript
浅谈在不使用ssr的情况下解决Vue单页面SEO问题(2)
2018/11/08 Javascript
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
基于postman获取动态数据过程详解
2020/09/08 Javascript
在Vue中使用Echarts实例图的方法实例
2020/10/10 Javascript
一篇文章让你搞懂JavaScript 原型和原型链
2020/11/23 Javascript
PyMongo安装使用笔记
2015/04/27 Python
关于Python中浮点数精度处理的技巧总结
2017/08/10 Python
python flask实现分页的示例代码
2018/08/02 Python
selenium 安装与chromedriver安装的方法步骤
2019/06/12 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
2020/07/03 Python
python openCV自制绘画板
2020/10/27 Python
使用CSS禁止textarea调整大小功能的方法
2015/03/13 HTML / CSS
英国珠宝钟表和家居礼品精品店:David Shuttle
2018/02/24 全球购物
Shopee新加坡:东南亚与台湾电商平台
2019/01/25 全球购物
印尼网上商店:Alfacart.com
2019/03/11 全球购物
Interrail法国:乘火车探索欧洲,最受欢迎的欧洲铁路通票
2019/08/27 全球购物
新年主持词
2014/03/27 职场文书
春节超市活动方案
2014/08/14 职场文书
2014年财务工作自我评价
2014/09/23 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
详解Python牛顿插值法
2021/05/11 Python