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 相关文章推荐
清空上传控件input file的值
Jul 03 Javascript
用jquery设置按钮的disabled属性的实现代码
Nov 28 Javascript
javascript 利用Image对象实现的埋点(某处的点击数)统计
Dec 28 Javascript
JQuery实现用户名无刷新验证的小例子
Mar 22 Javascript
node.js中的fs.writeSync方法使用说明
Dec 15 Javascript
检测一个函数是否是JavaScript原生函数的小技巧
Mar 13 Javascript
浅谈javascript函数式编程
Sep 06 Javascript
jQuery 1.9.1源码分析系列(十三)之位置大小操作
Dec 02 Javascript
JS构造函数与原型prototype的区别介绍
Jul 04 Javascript
mint-ui在vue中的使用示例
Apr 05 Javascript
深入理解vue-class-component源码阅读
Feb 18 Javascript
如何检查一个对象是否为空
Apr 11 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引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
php安全开发 添加随机字符串验证,防止伪造跨站请求
2013/02/14 PHP
PHP跨平台获取服务器IP地址自定义函数分享
2014/12/29 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
2016/05/26 PHP
JavaScript与函数式编程解释
2007/04/27 Javascript
Microsoft Ajax Minifier 压缩javascript的方法
2010/03/05 Javascript
JS+ACTIVEX实现网页选择本地目录路径对话框
2013/03/18 Javascript
javascript标签在页面中的位置探讨
2013/04/11 Javascript
jquery监听div内容的变化具体实现思路
2013/11/04 Javascript
Javascript 赋值机制详解
2014/11/23 Javascript
javascript+canvas制作九宫格小程序
2014/12/28 Javascript
JS继承用法实例分析
2015/02/05 Javascript
JavaScript中window.open用法实例详解
2015/04/15 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
详解Bootstrap插件
2016/04/25 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
深入了解javascript 数组的sort方法
2018/06/01 Javascript
小程序视频或音频自定义可拖拽进度条的示例代码
2018/09/30 Javascript
SSM+layUI 根据登录信息显示不同的页面方法
2019/09/20 Javascript
Nuxt配置Element-UI按需引入的操作方法
2020/07/06 Javascript
[51:06]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第二场 1月26日
2021/03/11 DOTA
python中使用序列的方法
2015/08/03 Python
Python 使用类写装饰器的小技巧
2018/09/30 Python
Python 中导入csv数据的三种方法
2018/11/01 Python
Gauss-Seidel迭代算法的Python实现详解
2019/06/29 Python
在Python中append以及extend返回None的例子
2019/07/20 Python
python tornado修改log输出方式
2019/11/18 Python
CSS 说明横向进度条最后显示文字的实现代码
2020/11/10 HTML / CSS
英国网上购买门:Direct Doors
2018/06/07 全球购物
如何提高MySql的安全性
2014/06/19 面试题
人事助理岗位职责
2013/11/18 职场文书
美术教师求职信范文
2015/03/20 职场文书
会计主管岗位职责
2015/04/02 职场文书
开除通知书范本
2015/04/25 职场文书
mysql insert 存在即不插入语法说明
2022/03/25 MySQL
使用CSS实现按钮边缘跑马灯动画
2023/05/07 HTML / CSS