使用p5.js临摹动态图片


Posted in Javascript onNovember 04, 2019

本文实例为大家分享了p5.js临摹动态图片的具体代码,供大家参考,具体内容如下

1、临摹图片

使用p5.js临摹动态图片

2、图像运动规律

原图中一共有36个等大的四分之三圆形,按照一定的规律转动,可以等效为圆形不动,每个圆上有以其半径为边长的矩形在绕圆形的原点转动,每四个为一组,其他部分都是在重复这四个的转动规律

3、完整代码

function setup() 
{ 
 createCanvas(402,402); 
}
function draw()
{
 background(0); 
 var dx=0; 
 dx+=PI/180;
 var t=(millis()/5)*sin(dx);//返回自程序开始的毫秒数
 if(dx==PI) 
 { 
  dx=0;
 } 
 
 for(var i=0;i<6;i++)//每行每列六个圆形
 {  
  for(var j=0;j<6;j++)
  { 
   fill(255); 
   ellipse(i*66+36, j*66+36, 60, 60);//绘制半径30的圆形,间隔6
   fill(0); 
   translate(i*66+36, j*66+36);//矩形的移动,共四种运动状态
   if(i%2==0&&j%2==0) 
   {  
    rotate(-t); //逆时针旋转
    rect(0,0,30,30);//旋转的边长30黑色矩形
   }  
   else if(i%2==1&&j%2==0)
   { 
    rotate(t);//顺时针旋转
    rect(-30,0,30,30); 
   }  
   else if(i%2==1&&j%2==1) 
   {  
    rotate(-t); 
    rect(-30,-30,30,30); 
   }  
   else if(i%2==0&&j%2==1)
   {  
    rotate(t);
    rect(0,-30,30,30); 
   }  
   resetMatrix(); 
  } 
 }
}

4、临摹结果

使用p5.js临摹动态图片

5、拓展图像

使用p5.js临摹动态图片

运动规律:

一段螺旋型的运动弧线,中心颜色较深,越向外颜色越浅,形成一种线在向中心运动的趋势。绘制时是由无数个没有边框的圆形一起按照规律运动,形成线。

完整代码:

function setup()
{
 createCanvas(500, 500);
 noStroke(); 
}
function draw() {
 background(0); 
 for (var i =1;i <3000; i++)
 {
  drawcircle(255-0.1*i,255-0.1*i,255-0.1*i, i); 
  i++;
 }
}
function drawcircle( r, g, b, interval){
 fill(r, g, b);
 var x = 250; 
 var y = 250; 
 var t = millis() /3+ interval *0.5;
 var xi;
 var yi;i
 var radius = interval *15;
 xi = 0.01*radius * Math.cos(t * Math.PI/180);
 yi = 0.01*radius * Math.sin(t * Math.PI/180); 
 x += xi;
 y += yi;
 ellipse(x, y, 20,20);
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Riot.js 快速的JavaScript单元测试框架
Nov 09 Javascript
JavaScript中各种编码解码函数的区别和注意事项
Aug 19 Javascript
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
Dec 25 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
Apr 20 Javascript
bootstrap css样式之表单
Jan 19 Javascript
Vue学习笔记进阶篇之过渡状态详解
Jul 14 Javascript
JavaScript canvas实现围绕旋转动画
Nov 18 Javascript
webpack源码之loader机制详解
Apr 06 Javascript
JS实现同一DOM元素上onClick事件与onDblClick事件并存的解决方法
Jun 07 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
Jun 10 Javascript
ES6的异步终极解决方案分享
Jul 11 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
Jul 28 Javascript
p5.js绘制创意自画像
Nov 04 #Javascript
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
Nov 04 #Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
Nov 04 #Javascript
vue中使用GraphQL的实例代码
Nov 04 #Javascript
Vue项目中Api的组织和返回数据处理的操作
Nov 04 #Javascript
JS+CSS实现随机点名(实例代码)
Nov 04 #Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
Nov 04 #Javascript
You might like
php生成数字字母的验证码图片
2015/07/14 PHP
ThinkPHP中limit()使用方法详解
2016/04/19 PHP
php实现微信模拟登陆、获取用户列表及群发消息功能示例
2017/06/28 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
ThinkPHP5分页paginate代码实例解析
2020/11/10 PHP
JQuery this 和 $(this) 的区别
2009/08/23 Javascript
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
前后台交互过程中json格式如何解析以及如何生成
2012/12/26 Javascript
有关javascript的性能优化 (repaint和reflow)
2013/04/12 Javascript
jQuery源码解读之addClass()方法分析
2015/02/20 Javascript
详谈DOM简介及节点、属性、查找节点的方法
2017/11/16 Javascript
Vue中div contenteditable 的光标定位方法
2018/08/25 Javascript
angular 实时监听input框value值的变化触发函数方法
2018/08/31 Javascript
基于Nuxt.js项目的服务端性能优化与错误检测(容错处理)
2019/10/23 Javascript
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
2019/12/21 Javascript
js实现鼠标点击页面弹出自定义文字效果
2019/12/24 Javascript
js实现浏览器打印功能的示例代码
2020/07/15 Javascript
利用Python脚本实现ping百度和google的方法
2017/01/24 Python
python+opencv实现的简单人脸识别代码示例
2017/11/14 Python
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
Python tkinter label 更新方法
2018/10/11 Python
详解django的serializer序列化model几种方法
2018/10/16 Python
Selenium python时间控件输入问题解决方案
2020/07/22 Python
Java爬虫技术框架之Heritrix框架详解
2020/07/22 Python
如何基于python实现年会抽奖工具
2020/10/20 Python
CSS3绘制有活力的链接下划线
2016/07/14 HTML / CSS
浅谈Html5中视频 音频标签 进度条的问题
2016/07/26 HTML / CSS
Fresh馥蕾诗英国官网:法国LVMH集团旗下高端天然护肤品牌
2018/11/01 全球购物
美国传奇滑手Paul Rodriguez创办的街头滑板品牌:Primitive Skateboarding
2019/10/29 全球购物
就业推荐表自我鉴定
2013/10/29 职场文书
信息技术专业大学生职业生涯规划书
2014/01/24 职场文书
普通简短的个人自我评价
2014/02/15 职场文书
公司搬迁通知
2015/04/20 职场文书
行政二审代理词
2015/05/25 职场文书
浅谈redis五大数据结构和使用场景
2021/04/12 Redis
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
2021/05/14 Python