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 中的事件教程
Apr 05 Javascript
基于jQuery的可用于选项卡及幻灯的切换插件
Mar 28 Javascript
JS给Textarea文本框添加行号的方法
Aug 20 Javascript
JavaScript小技巧整理篇(非常全)
Jan 26 Javascript
JavaScript实现弹出模态窗体并接受传值的方法
Feb 12 Javascript
jQuery计算文本框字数及限制文本框字数的方法
Mar 01 Javascript
javascript基本语法
May 31 Javascript
Angularjs实现分页和分页算法的示例代码
Dec 23 Javascript
使用vue-router设置每个页面的title方法
Feb 11 Javascript
利用Dectorator分模块存储Vuex状态的实现
Feb 05 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
Jul 22 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
Aug 14 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+Ajax检测用户名或邮件注册时是否已经存在实例教程
2014/08/23 PHP
浅谈php和.net的区别
2014/09/28 PHP
php实现的任意进制互转类分享
2015/07/07 PHP
鼠标焦点离开文本框时验证的js代码
2013/07/19 Javascript
利用JQuery和Servlet实现跨域提交请求示例分享
2014/02/12 Javascript
jQuery 实现侧边浮动导航菜单效果
2014/12/26 Javascript
JavaScript实现添加、查找、删除元素
2015/07/02 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
JS选取DOM元素的简单方法
2016/07/08 Javascript
JavaScript动态数量的文件上传控件
2016/11/18 Javascript
教你一步步用jQyery实现轮播器
2016/12/18 Javascript
Vue 2.0 服务端渲染入门介绍
2017/03/29 Javascript
Express + Session 实现登录验证功能
2017/09/08 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
2017/12/13 Javascript
在vue项目中引入highcharts图表的方法(详解)
2018/03/05 Javascript
vue内置组件transition简单原理图文详解(小结)
2018/07/12 Javascript
浅谈Webpack多页应用HMR卡住问题
2019/04/24 Javascript
js实现转动骰子模型
2019/10/24 Javascript
vue-element-admin 菜单标签失效的解决方式
2019/11/12 Javascript
vue移动端写的拖拽功能示例代码
2020/09/09 Javascript
[00:35]可解锁地面特效
2018/12/20 DOTA
跟老齐学Python之从格式化表达式到方法
2014/09/28 Python
编写Python脚本来实现最简单的FTP下载的教程
2015/05/04 Python
python 读文件,然后转化为矩阵的实例
2018/04/23 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
2018/05/30 Python
详解Python最长公共子串和最长公共子序列的实现
2018/07/07 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
2019/09/16 Python
Python爬虫HTPP请求方法有哪些
2020/06/03 Python
python redis存入字典序列化存储教程
2020/07/16 Python
Python常用类型转换实现代码实例
2020/07/28 Python
FC-Moto瑞典:欧洲最大的摩托车服装和头盔商店之一
2018/11/27 全球购物
syb养殖创业计划书
2014/01/09 职场文书
企业形象策划方案
2014/05/29 职场文书
新郎父亲婚礼致辞
2015/07/27 职场文书
优秀创业计划书分享
2019/07/19 职场文书
python解析照片拍摄时间进行图片整理
2022/07/23 Python