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 相关文章推荐
NiftyCube——轻松实现圆角边框
Feb 20 Javascript
javascript算法学习(直接插入排序)
Apr 12 Javascript
JQuery中DOM加载与事件执行实例分析
Jun 13 Javascript
多种js图片预加载实现方式分享
Feb 19 Javascript
原生javascript实现分页效果
Apr 21 Javascript
jQuery使用ajax_动力节点Java学院整理
Jul 05 jQuery
Angular模版驱动表单的使用总结
May 05 Javascript
使用vue-router为每个路由配置各自的title
Jul 30 Javascript
jQuery 操作 HTML 元素和属性的方法
Nov 12 jQuery
layui--js控制switch的切换方法
Sep 03 Javascript
在Vue.js中使用TypeScript的方法
Mar 19 Javascript
JavaScript实现答题评分功能页面
Jun 24 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
oracle资料库函式库
2006/10/09 PHP
php中smarty区域循环的方法
2015/06/11 PHP
php数据结构之顺序链表与链式线性表示例
2018/01/22 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
javascript 不间断的图片滚动并可点击
2010/01/15 Javascript
Jquery数独游戏解析(一)-页面布局
2010/11/05 Javascript
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
jquery获取table中的某行全部td的内容方法
2013/03/08 Javascript
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
jQuery 实现侧边浮动导航菜单效果
2014/12/26 Javascript
Bootstrap自定义文件上传下载样式
2016/05/26 Javascript
JavaScript读二进制文件并用ajax传输二进制流的方法
2016/07/18 Javascript
js实现倒计时及时间对象
2016/11/15 Javascript
js document.getElementsByClassName的使用介绍与自定义函数
2016/11/25 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
2018/02/27 Javascript
基于jquery实现左右上下移动效果
2018/05/02 jQuery
Vue中JS动画与Velocity.js的结合使用
2019/02/13 Javascript
[02:24]DOTA2痛苦女王 英雄基础教程
2013/11/26 DOTA
在Django同1个页面中的多表单处理详解
2017/01/25 Python
python的格式化输出(format,%)实例详解
2018/06/01 Python
python自动化生成IOS的图标
2018/11/13 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
2020/04/24 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
2020/05/12 Python
Java如何基于wsimport调用wcf接口
2020/06/17 Python
Stylenanda中文站:韩国一线网络服装品牌
2016/12/22 全球购物
劳力士官方珠宝商:J.R. Dunn Jewelers
2018/09/29 全球购物
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
新加坡鲜花速递/新加坡网上花店:Ferns N Petals
2020/08/29 全球购物
旅游安全协议书
2014/04/21 职场文书
三八妇女节标语
2014/10/09 职场文书
2014年初一班主任工作总结
2014/11/08 职场文书
2014年劳动部工作总结
2014/12/11 职场文书
单身证明格式样本
2015/06/15 职场文书
2016年“抗战胜利纪念日”71周年校园广播稿
2015/12/18 职场文书
学习心得体会
2019/06/20 职场文书
Python OpenCV 图像平移的实现示例
2021/06/04 Python