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中的标签语句用法分析
Feb 10 Javascript
JavaScript控制按钮可用或不可用的方法
Apr 03 Javascript
浅谈javascript中replace()方法
Nov 10 Javascript
Angular 路由route实例代码
Jul 12 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
Aug 04 jQuery
weebox弹出窗口不居中显示的解决方法
Nov 27 Javascript
canvas轨迹回放功能实现
Dec 20 Javascript
vue权限路由实现的方法示例总结
Jul 29 Javascript
微信小程序页面缩放式侧滑效果的实现代码
Nov 15 Javascript
VUE前后端学习tab写法实例
Aug 06 Javascript
javascript的delete运算符知识点总结
Nov 19 Javascript
详解Vue3 Teleport 的实践及原理
Dec 02 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遍历文件目录与清除目录中文件的实现详解
2013/06/24 PHP
PHP借助phpmailer发送邮件
2015/05/11 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
Javscript调用iframe框架页面中函数的方法
2014/11/01 Javascript
JavaScript中DOM详解
2015/04/13 Javascript
Javascript中replace()小结
2015/09/30 Javascript
jquery实现的伪分页效果代码
2015/10/29 Javascript
纯javascript响应式树形菜单效果
2015/11/10 Javascript
jQuery提示插件qTip2用法分析(支持ajax及多种样式)
2016/06/08 Javascript
jquery mobile 实现自定义confirm确认框效果的简单实例
2016/06/17 Javascript
如何利用JSHint减少JavaScript的错误
2016/08/23 Javascript
ASP.NET jquery ajax传递参数的实例
2016/11/02 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
2016/12/09 Javascript
angularjs ui-router中路由的二级嵌套
2017/03/10 Javascript
vue中的非父子间的通讯问题简单的实例代码
2017/07/19 Javascript
vue 插值 v-once,v-text, v-html详解
2018/01/19 Javascript
vue实现div拖拽互换位置
2020/07/29 Javascript
如何从0开始用node写一个自己的命令行程序
2018/12/29 Javascript
Vue实现根据hash高亮选项卡
2019/05/27 Javascript
微信小程序基础教程之worker线程的使用方法
2019/07/15 Javascript
Python反射和内置方法重写操作详解
2018/08/27 Python
Python小进度条显示代码
2019/03/05 Python
对Django 转发和重定向的实例详解
2019/08/06 Python
余弦相似性计算及python代码实现过程解析
2019/09/18 Python
python将数组n等分的实例
2019/12/02 Python
python3实现elasticsearch批量更新数据
2019/12/03 Python
以SQLite和PySqlite为例来学习Python DB API
2020/02/05 Python
Python性能分析工具py-spy原理用法解析
2020/07/27 Python
HTML5 声明兼容IE的写法
2011/05/16 HTML / CSS
应聘医药代表职位求职信
2013/10/21 职场文书
大学生见习报告总结
2014/11/04 职场文书
项目技术负责人岗位职责
2015/04/13 职场文书
Vue实现tab导航栏并支持左右滑动功能
2021/06/28 Vue.js
SQL Server删除表中的重复数据
2022/05/25 SQL Server
vue router 动态路由清除方式
2022/05/25 Vue.js