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 相关文章推荐
javaScript - 如何引入js代码
Mar 09 Javascript
jquery validate.js表单验证的基本用法入门
May 13 Javascript
jQuery EasyUI API 中文文档 搜索框
Sep 29 Javascript
Javascript玩转继承(三)
May 08 Javascript
js动态添加onclick事件可传参数与不传参数
Jul 29 Javascript
原生js和jQuery随意改变div属性style的名称和值
Oct 22 Javascript
jQuery中:checkbox选择器用法实例
Jan 03 Javascript
jQuery实现的向下图文信息滚动效果
May 03 Javascript
实例解析jQuery中如何取消后续执行内容
Dec 01 Javascript
vue组件的写法汇总
Apr 12 Javascript
node.js express捕获全局异常的三种方法实例分析
Dec 27 Javascript
js实现点击生成随机div
Jan 16 Javascript
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+javascript实现二级级联菜单的制作
2008/05/06 PHP
如何使用php判断服务器是否是HTTPS连接
2013/07/05 PHP
PHP中使用imagick实现把PDF转成图片
2015/01/26 PHP
Yii2设置默认控制器的两种方法
2017/05/19 PHP
JavaScript异步调用定时方法并停止该方法实现代码
2012/03/16 Javascript
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
JS网页图片按比例自适应缩放实现方法
2014/01/15 Javascript
深入分析js的冒泡事件
2014/12/05 Javascript
JavaScript jquery及AJAX小结
2016/01/24 Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
2017/02/10 Javascript
利用canvas实现的加载动画效果实例代码
2017/07/05 Javascript
Vue2.0子同级组件之间数据交互方法
2018/02/28 Javascript
理解 JavaScript EventEmitter
2018/03/29 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
2018/11/25 Javascript
详解vuex中action何时完成以及如何正确调用dispatch的思考
2019/01/21 Javascript
详解node.js创建一个web服务器(Server)的详细步骤
2021/01/15 Javascript
Vue中的nextTick作用和几个简单的使用场景
2021/01/25 Vue.js
JS实现点击掉落特效
2021/01/29 Javascript
[36:19]2018DOTA2亚洲邀请赛 小组赛 A组加赛 Newbee vs LGD
2018/04/03 DOTA
浅析Python中return和finally共同挖的坑
2017/08/18 Python
Python设置在shell脚本中自动补全功能的方法
2018/06/25 Python
python实现kmp算法的实例代码
2019/04/03 Python
python matplotlib库的基本使用
2020/09/23 Python
HTML5在a标签内放置块级元素示例代码
2013/08/23 HTML / CSS
html5唤起app的方法
2017/11/30 HTML / CSS
.NET面试题:什么是值类型和引用类型
2016/01/12 面试题
行政专员岗位职责
2014/01/02 职场文书
读书活动总结范文
2014/04/26 职场文书
网络营销策划方案
2014/06/04 职场文书
爱护公共设施标语
2014/06/24 职场文书
行政专员岗位职责范本
2014/08/26 职场文书
教师旷工检讨书
2015/08/15 职场文书
2016年教师党员承诺书范文
2016/03/24 职场文书
创业计划书之便利店
2019/09/05 职场文书
室外天线与收音机天线杆接合方法
2022/04/05 无线电
MySQ InnoDB和MyISAM存储引擎介绍
2022/04/26 MySQL