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 相关文章推荐
几个比较经典常用的jQuery小技巧
Mar 01 Javascript
Javascript Throttle &amp; Debounce应用介绍
Mar 19 Javascript
Jquery中扩展方法extend使用技巧
Aug 24 Javascript
基于jQuery实现美观且实用的倒计时实例代码
Dec 30 Javascript
快速掌握Node.js环境的安装与运行方法
Feb 16 Javascript
JS封装通过className获取元素的函数示例
Dec 20 Javascript
原生ajax处理json格式数据的实例代码
Dec 25 Javascript
原生JS实现圣旨卷轴展开效果
Mar 06 Javascript
解决vue中使用swiper插件问题及swiper在vue中的用法
Apr 04 Javascript
JS图片懒加载的优点及实现原理
Jan 10 Javascript
js面试题之异步问题的深入理解
Sep 20 Javascript
JavaScript canvas实现跟随鼠标移动小球
Feb 09 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中$this-&amp;gt;含义分析
2009/11/29 PHP
详解PHP中的PDO类
2015/07/06 PHP
如何使用纯PHP实现定时器任务(Timer)
2015/07/31 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
php+html5+ajax实现上传图片的方法
2016/05/14 PHP
Yii2简单实现给表单添加验证码的方法
2016/07/18 PHP
浅谈php(codeigniter)安全性注意事项
2017/04/06 PHP
基于jquery的图片的切换(以数字的形式)
2011/02/14 Javascript
php基于redis处理session的方法
2016/03/14 Javascript
浅谈关于angularJs中使用$.ajax的注意点
2017/08/12 Javascript
手把手教你使用vue-cli脚手架(图文解析)
2017/11/08 Javascript
微信小程序生成二维码的示例代码
2019/03/29 Javascript
JavaScript实现单图片上传并预览功能
2019/09/30 Javascript
vue如何搭建多页面多系统应用
2020/06/17 Javascript
swiper自定义分页器的样式
2020/09/14 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
微信小程序实现点击页面出现文字
2020/09/21 Javascript
Python遍历目录并批量更换文件名和目录名的方法
2016/09/19 Python
Python计时相关操作详解【time,datetime】
2017/05/26 Python
详解用python写一个抽奖程序
2019/05/10 Python
python getpass实现密文实例详解
2019/09/24 Python
python标准库OS模块函数列表与实例全解
2020/03/10 Python
解决python图像处理图像赋值后变为白色的问题
2020/06/04 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
2020/07/13 Python
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
物流专业大学应届生求职信
2013/11/03 职场文书
开学典礼决心书
2014/03/11 职场文书
岗位说明书范文
2014/05/07 职场文书
教师教学评估方案
2014/05/09 职场文书
2015年学校政教工作总结
2015/07/20 职场文书
电工实训心得体会
2016/01/14 职场文书
简历自我评价范文
2019/04/24 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang
TV动画《间谍过家家》公开PV
2022/03/20 日漫
漫画《催眠麦克风-Dawn Of Divisions》第二卷PV公开
2022/04/05 日漫