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 相关文章推荐
JS控制网页动态生成任意行列数表格的方法
Mar 09 Javascript
angularjs学习笔记之简单介绍
Sep 26 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
Oct 17 Javascript
轻松实现jQuery添加删除按钮Click事件
Mar 13 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
Jun 08 Javascript
帝国cms首页列表页实现点赞功能
Oct 30 Javascript
Vue仿今日头条实例详解
Feb 06 Javascript
解决webpack多页面内存溢出的方法示例
Oct 08 Javascript
解决Antd 里面的select 选择框联动触发的问题
Oct 24 Javascript
vue在图片上传的时候压缩图片
Nov 18 Vue.js
基于JavaScript实现随机点名器
Feb 25 Javascript
js基础语法与maven项目配置教程案例
Jul 15 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
thinkPHP5.0框架开发规范简介
2017/03/25 PHP
详解PHP中的 input属性(隐藏 只读 限制)
2017/08/14 PHP
js AspxButton的客户端操作
2009/06/26 Javascript
extjs 初始化checkboxgroup值的代码
2011/09/21 Javascript
jQuery插件Tmpl的简单使用方法
2015/04/27 Javascript
JavaScript实现基于十进制的四舍五入实例
2015/07/17 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
2016/08/08 Javascript
angularjs 表单密码验证自定义指令实现代码
2016/10/27 Javascript
Javascript 数组去重的方法(四种)详解及实例代码
2016/11/24 Javascript
AngularJS ui-router (嵌套路由)实例
2017/03/10 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
vue的mixins属性详解
2018/03/14 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
微信小程序判断页面是否从其他页面返回的实例代码
2019/07/03 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
2019/08/27 Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
2020/07/19 Javascript
Vue仿百度搜索功能
2020/12/28 Vue.js
[02:32]DOTA2英雄基础教程 美杜莎
2014/01/07 DOTA
Python抓取框架 Scrapy的架构
2016/08/12 Python
python安装Scrapy图文教程
2017/08/14 Python
Python实现压缩和解压缩ZIP文件的方法分析
2017/09/28 Python
使用Python实现微信提醒备忘录功能
2018/12/04 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
2018/12/12 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
2019/01/04 Python
Python3搭建http服务器的实现代码
2020/02/11 Python
django 前端页面如何实现显示前N条数据
2020/03/16 Python
django 实现简单的插入视频
2020/04/07 Python
移动web模拟客户端实现多方框输入密码效果【附代码】
2016/03/25 HTML / CSS
DJI大疆德国官方商城:大疆无人机
2018/09/01 全球购物
初中同学聚会感言
2014/02/11 职场文书
2014入党积极分子批评与自我批评思想汇报
2014/09/20 职场文书
nginx配置proxy_pass中url末尾带/与不带/的区别详解
2021/03/31 Servers
Python+Tkinter打造签名设计工具
2022/04/01 Python