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 showModalDialog 内跳转页面的问题
Nov 25 Javascript
javascript中onmouse事件在div中失效问题的解决方法
Jan 09 Javascript
javascript作用域容易记错的两个地方分析
Jun 22 Javascript
在新窗口打开超链接的方法小结
Apr 14 Javascript
jquery 关于event.target使用的几点说明介绍
Apr 26 Javascript
javascript正则表达式使用replace()替换手机号的方法
Jan 19 Javascript
jquery实现页面关键词高亮显示的方法
Mar 12 Javascript
Bootstrap Validator 表单验证
Jul 25 Javascript
webpack引入eslint配置详解
Jan 22 Javascript
vue计算属性get和set用法示例
Feb 08 Javascript
详解JavaScript作用域 闭包
Jul 29 Javascript
微信小程序onShareTimeline()实现分享朋友圈
Jan 07 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
法压式咖啡之制作法
2021/03/03 冲泡冲煮
php Smarty 字符比较代码
2011/02/27 PHP
php分页示例分享
2014/04/30 PHP
thinkphp3.2.2实现生成多张缩略图的方法
2014/12/19 PHP
数据结构之利用PHP实现二分搜索树
2020/10/25 PHP
JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
2010/04/13 Javascript
动态载入/删除/更新外部 JavaScript/Css 文件的代码
2010/07/03 Javascript
jQuery动态添加删除select项(实现代码)
2013/09/03 Javascript
javascript简单性能问题及学习笔记
2014/02/04 Javascript
JavaScript程序开发之JS代码放置的位置
2016/01/15 Javascript
jQuery简单实现仿京东分类导航层效果
2016/06/07 Javascript
轻松5句话解决JavaScript的作用域
2016/07/15 Javascript
Bootstrap CSS布局之表单
2016/12/17 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
2017/02/14 Javascript
vue-resource 拦截器使用详解
2017/02/21 Javascript
基于JavaScript实现的顺序查找算法示例
2017/04/14 Javascript
通过vue-cli来学习修改Webpack多环境配置和发布问题
2017/12/22 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
2018/01/23 Javascript
详解使用React进行组件库开发
2018/02/06 Javascript
使用svg实现动态时钟效果
2018/07/17 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
2018/08/24 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
2019/09/11 Javascript
Python os模块介绍
2014/11/30 Python
python连接字符串的方法小结
2015/07/13 Python
解读python logging模块的使用方法
2018/04/17 Python
使用selenium模拟登录解决滑块验证问题的实现
2019/05/10 Python
css3 pointer-events 介绍详解
2017/09/18 HTML / CSS
FLIR美国官网:热成像, 夜视和红外摄像系统
2018/07/13 全球购物
感恩老师的演讲稿
2014/05/06 职场文书
课内比教学心得体会
2014/09/09 职场文书
公路局群众路线教育实践活动第一阶段工作汇报
2014/10/25 职场文书
统计工作个人总结
2015/03/03 职场文书
2015年行政助理工作总结
2015/04/30 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers
MySQL 重命名表的操作方法及注意事项
2021/05/21 MySQL