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实现类似java中getClass()得到对象类名的方法
Jul 27 Javascript
Javascript字符串拼接小技巧(推荐)
Jun 02 Javascript
ECMAScript6快速入手攻略
Jul 18 Javascript
js实现数字递增特效【仿支付宝我的财富】
May 05 Javascript
vue+webpack中配置ESLint
Nov 07 Javascript
Vue+axios+WebApi+NPOI导出Excel文件实例方法
Jun 05 Javascript
layui-table获得当前行的上/下一行数据的例子
Sep 24 Javascript
vue实现手机端省市区区域选择
Sep 27 Javascript
详解Node.JS模块 process
Aug 31 Javascript
Vue如何循环提取对象数组中的值
Nov 18 Vue.js
vue从后台渲染文章列表以及根据id跳转文章详情详解
Dec 14 Vue.js
vue实现同时设置多个倒计时
May 20 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
php5.5中类级别的常量使用介绍
2013/10/02 PHP
php中Y2K38的漏洞解决方法实例分析
2014/09/22 PHP
PHP向socket服务器收发数据的方法
2015/01/24 PHP
PHP7.0安装笔记整理
2015/08/28 PHP
PHP yield关键字功能与用法分析
2019/01/03 PHP
JavaScript 入门·JavaScript 具有全范围的运算符
2007/10/01 Javascript
jqeury eval将字符串转换json的方法
2011/01/20 Javascript
Extjs 继承Ext.data.Store不起作用原因分析及解决
2013/04/15 Javascript
判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
2013/11/07 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
JS对象与json字符串格式转换实例
2014/10/28 Javascript
检测一个函数是否是JavaScript原生函数的小技巧
2015/03/13 Javascript
Bootstrap每天必学之栅格系统(布局)
2015/11/25 Javascript
js+canvas简单绘制圆圈的方法
2016/01/28 Javascript
js和jq使用submit方法无法提交表单的快速解决方法
2016/05/17 Javascript
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
vue中设置height:100%无效的问题及解决方法
2018/07/27 Javascript
JS实现电脑虚拟键盘的操作
2020/06/24 Javascript
在antd中setFieldsValue和defaultVal的用法
2020/10/29 Javascript
用 Python 爬了爬自己的微信朋友(实例讲解)
2017/08/25 Python
基于Python闭包及其作用域详解
2017/08/28 Python
python3处理含有中文的url方法
2018/05/10 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
2019/04/25 Python
Python中拆分字符串的操作方法
2019/07/23 Python
Python中xml和dict格式转换的示例代码
2019/11/07 Python
基于python实现数组格式参数加密计算
2020/04/21 Python
div或img图片高度随宽度自适应的方法
2020/02/06 HTML / CSS
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
工业学校毕业生自荐书
2014/01/03 职场文书
策划总监岗位职责
2014/02/16 职场文书
《闻一多先生的说和做》教学反思
2014/04/28 职场文书
销售岗位职责范本
2014/06/12 职场文书
计划生育汇报材料
2014/12/26 职场文书
人才市场接收函
2015/01/30 职场文书
清空 Oracle 安装记录并重新安装
2022/04/26 Oracle