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

 更新时间:2019年10月23日 11:46:49   作者:覆盆子酸奶  
这篇文章主要为大家详细介绍了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();

效果图

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

三、拓展

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

//存储鼠标位置,离开的时候,释放当前位置信息
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), 
     ...
     )}

结果图

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

相关文章

  • Javascript之面向对象--方法

    Javascript之面向对象--方法

    本篇文章主要介绍了Javascript的面向对象,对对象方法的调用、私有方法、静态方法、公有方法、特权方法进行了一一介绍,需要的朋友可以看下
    2016-12-12
  • JavaScript打字小游戏代码

    JavaScript打字小游戏代码

    上半年自学了JavaScript,然后就做了个打字小游戏玩玩
    2011-12-12
  • JavaScript设计模式之策略模式实例

    JavaScript设计模式之策略模式实例

    这篇文章主要介绍了JavaScript设计模式之策略模式实例,本文分析了Jquery源码并给出了自己的实现,需要的朋友可以参考下
    2014-10-10
  • JavaScript闭包的简单应用

    JavaScript闭包的简单应用

    这篇文章主要为大家详细介绍了JavaScript闭包的简单应用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • BootStrap中Table分页插件使用详解

    BootStrap中Table分页插件使用详解

    bootstrap-table 是一个轻量级的table插件,使用AJAX获取JSON格式的数据,其分页和数据填充很方便,支持国际化。这篇文章介绍了bootstrap中table分页插件的使用,感兴趣的朋友一起看看吧
    2016-10-10
  • 给Flash加一个超链接(推荐使用透明层)兼容主流浏览器

    给Flash加一个超链接(推荐使用透明层)兼容主流浏览器

    给一个Flash加一个超链接,原想直接在object外直接套一个超链接即可,试了之后却发现不是这么回事
    2013-06-06
  • js css+html实现简单的日历

    js css+html实现简单的日历

    这篇文章主要为大家详细介绍了由html、css、javascript结合实现的简单日历,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • 手把手教你如何排查Javascript内存泄漏

    手把手教你如何排查Javascript内存泄漏

    本文将通过一些常见的FAQ来带大家一起学习一下怎么用工具定位javascript里的内存问题,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-06-06
  • JavaScript仿微博发布信息案例

    JavaScript仿微博发布信息案例

    这篇文章主要为大家详细介绍了JavaScript仿微博发布信息案例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Js实现网页键盘控制翻页的方法

    Js实现网页键盘控制翻页的方法

    这篇文章主要介绍了Js实现网页键盘控制翻页的方法,较为详细的分析了Js实现网页键盘控制翻页的原理与具体实现方法,非常具有实用价值,需要的朋友可以参考下
    2014-10-10

最新评论