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的new操作符(一)
Dec 25 Javascript
javascript获取url上某个参数的方法
Nov 08 Javascript
alert出数组中的随即值代码
Sep 25 Javascript
json定义及jquery操作json的方法
Sep 29 Javascript
浅谈jQuery中事情的动态绑定
Feb 12 Javascript
vue.js select下拉框绑定和取值方法
Mar 03 Javascript
js实现简单模态框实例
Nov 16 Javascript
webpack-mvc 传统多页面组件化开发详解
May 07 Javascript
vue.js实现备忘录demo
Jun 26 Javascript
如何在wxml中直接写js代码(wxs)
Nov 14 Javascript
微信小程序个人中心的列表控件实现代码
Apr 26 Javascript
vue3中provide && inject的使用
Jul 01 Vue.js
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函数)
2006/10/09 PHP
PHP调用三种数据库的方法(1)
2006/10/09 PHP
php 防止单引号,双引号在接受页面转义
2008/07/10 PHP
php url地址栏传中文乱码解决方法集合
2010/06/25 PHP
php使用strtotime和date函数判断日期是否有效代码分享
2013/12/25 PHP
PHP判断变量是否为0的方法
2014/02/08 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
javascript 控制 html元素 显示/隐藏实现代码
2009/09/01 Javascript
JQuery Tips(2) 关于$()包装集你不知道的
2009/12/14 Javascript
时间戳转换为时间 年月日时间的JS函数
2013/08/19 Javascript
Json和Jsonp理论实例代码详解
2013/11/15 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
2015/02/26 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
详解JavaScript中基于原型prototype的继承特性
2016/05/05 Javascript
Bootstrap实现带暂停功能的轮播组件(推荐)
2016/11/25 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
2017/12/18 Javascript
vue.js打包之后可能会遇到的坑!
2018/06/03 Javascript
JavaScript实现封闭区域布尔运算的示例代码
2018/06/25 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
微信小程序时间戳转日期的详解
2019/04/30 Javascript
微信小程序版本自动更新的方法
2019/06/14 Javascript
解决vue组件销毁之后计时器继续执行的问题
2020/07/21 Javascript
Vue实现穿梭框效果
2020/09/30 Javascript
[06:15]2016国际邀请赛中国区预选赛单车采访:我顶WINGS
2016/06/27 DOTA
[50:15]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
2018/05/04 Python
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
python快排算法详解
2019/03/04 Python
python 计算数据偏差和峰度的方法
2019/06/29 Python
CSS3线性渐变简单实现以及该属性在浏览器中的不同
2012/12/12 HTML / CSS
副总经理党的群众路线教育实践活动个人对照检查材料思想汇报
2014/10/06 职场文书
高中校园广播稿
2014/10/21 职场文书
2015年平安创建工作总结
2015/04/29 职场文书
2015初中团支部工作总结
2015/07/21 职场文书
2016年社区“6.26”禁毒日宣传活动总结
2016/04/05 职场文书