p5.js临摹动态图形的方法


Posted in Javascript onOctober 23, 2019

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

一、描述所临摹图像的规律

p5.js临摹动态图形的方法

1、图像由多个闪光圆点和圆点之间的连线组成
2、圆点的运动轨迹是随机的
3、圆点之间靠近时会产生连线,并且相互靠近的圆点会颜色加深

二、代码实现

圆点之间产生连线,随机生成线条和运动轨迹:

//随机生成s.n条线位置信息
for (var t = [], p = 0; s.n > p; p++) {
  var h = random() * r, //随机位置
   g = random() * n,
   q = 2 * random() - 1, //随机运动方向
   d = 2 * random() - 1;
  t.push({
   x: h,
   y: g,
   xa: q,
   ya: d,
   max: 6000 //圆点靠近产生线条的距离
  })
 }

绘制闪光圆点:

//由三个透明度不同的圆组成
 context.beginPath();
 context.arc(r.x,r.y,1.7,0*Math.PI,2*Math.PI);
 context.fillStyle="#FF1493";
 context.fill();
   
 context.beginPath();
 context.arc(r.x,r.y,6,0*Math.PI,2*Math.PI);
 context.fillStyle='rgba(255,20,147,0.3)';
 context.fill();
   
 context.beginPath();
 context.arc(r.x,r.y,10,0*Math.PI,2*Math.PI);
 context.fillStyle='rgba(255,20,147,0.1)';
 context.fill();

效果图

p5.js临摹动态图形的方法

因为对于临摹动态图像仍有很多困惑的地方,无法实现多个圆点相互靠近颜色加深,非常遗憾最终不能临摹出完全一样的图像。

三、拓展

增加交互性,使得线条能够附着到鼠标上,跟随鼠标移动。
鼠标靠近圆点时,圆点会加速运动,

//存储鼠标位置,离开的时候,释放当前位置信息
window.onmousemove = function(i) {
  i = i || window.event, f.x = i.clientX, f.y = i.clientY
 },
window.onmouseout = function() {
  f.x = null, f.y = null
 };

for (v = 0; v < w.length; v++) {//从下一个点开始
    x = w[v];
    if (i !== x && null !== x.x && null !== x.y) {
     B = i.x - x.x, z = i.y - x.y, y = B * B + z * z;
     //与鼠标靠近到一定距离的时候圆点加速(x.max/2<y<x.max)
     y < x.max && (x == current_point && y >= x.max / 2 
      && (i.x -= 0.03 * B, i.y -= 0.03 * z), 
     ...
     )}

结果图

p5.js临摹动态图形的方法

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

Javascript 相关文章推荐
js检查页面上有无重复id的实现代码
Jul 17 Javascript
生成二维码方法汇总
Dec 26 Javascript
jQuery实现表格展开与折叠的方法
May 04 Javascript
javascript实现在下拉列表中显示多级树形菜单的方法
Aug 12 Javascript
JavaScript实现的多个图片广告交替显示效果代码
Sep 04 Javascript
javascript实现查找数组中最大值方法汇总
Feb 13 Javascript
JavaScript弹窗基础篇
Apr 27 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
Jan 16 Javascript
javascript实现考勤日历功能
Nov 29 Javascript
vue实现分页组件
Jun 16 Javascript
Vue分页插件的前后端配置与使用
Oct 09 Javascript
jQuery HTML设置内容和属性操作实例分析
May 20 jQuery
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
Oct 23 #Javascript
p5.js实现动态图形临摹
Oct 23 #Javascript
浅析webpack-bundle-analyzer在vue-cli3中的使用
Oct 23 #Javascript
微信小程序 生成携带参数的二维码
Oct 23 #Javascript
使用p5.js临摹动态图形
Oct 23 #Javascript
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
Oct 23 #Javascript
p5.js临摹动态图形实现方法详解
Oct 23 #Javascript
You might like
php中$this-&amp;gt;含义分析
2009/11/29 PHP
PHP使用mkdir创建多级目录的方法
2015/12/22 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
juqery 学习之三 选择器 子元素与表单
2010/11/25 Javascript
基于jquery的大众点评,分类导航实现代码
2011/08/23 Javascript
javascript之Boolean类型对象
2016/06/07 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
概述jQuery的元素筛选
2016/11/23 Javascript
AngularJS实现tab选项卡的方法详解
2017/07/05 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
2018/04/01 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
2018/08/06 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
2019/04/29 Javascript
基于vue+axios+lrz.js微信端图片压缩上传方法
2019/06/25 Javascript
vue实现表格过滤功能
2019/09/27 Javascript
nodemon实现Typescript项目热更新的示例代码
2019/11/19 Javascript
Vue跨域请求问题解决方案过程解析
2020/08/07 Javascript
解决Mint-ui 框架Popup和Datetime Picker组件滚动穿透的问题
2020/11/04 Javascript
[03:27]最受玩家喜爱奖提名:PZH_Element 致玩家寄语
2016/12/20 DOTA
[01:52]DOTA2完美大师赛Vega战队趣味视频——kpii老师小课堂
2017/11/25 DOTA
python使用chardet判断字符串编码的方法
2015/03/13 Python
Python 基础知识之字符串处理
2017/01/06 Python
Python 对象中的数据类型
2017/05/13 Python
python切片的步进、添加、连接简单操作示例
2019/07/11 Python
详解Python是如何实现issubclass的
2019/07/24 Python
使用Python进行中文繁简转换的实现代码
2019/10/18 Python
Numpy 理解ndarray对象的示例代码
2020/04/03 Python
深入了解Python 变量作用域
2020/07/24 Python
详解numpy.ndarray.reshape()函数的参数问题
2020/10/13 Python
css3的transition属性详解
2014/12/15 HTML / CSS
HTML5 Canvas实现烟花绽放特效
2016/03/02 HTML / CSS
大学生党课思想汇报
2013/12/29 职场文书
领导班子遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
2014年就业工作总结
2014/11/26 职场文书
幼儿园大班个人总结
2015/02/28 职场文书
部门2015年度工作总结
2015/04/29 职场文书
详解MySQL事务的隔离级别与MVCC
2021/04/22 MySQL