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 相关文章推荐
Javacript实现颜色梯度变化和渐变的效果代码
May 31 Javascript
jquery判断元素的子元素是否存在的示例代码
Feb 04 Javascript
JavaScript删除指定子元素代码实例
Jan 13 Javascript
js实现跨域访问的三种方法
Dec 09 Javascript
JQuery点击事件回到页面顶部效果的实现代码
May 24 Javascript
JavaScript toUpperCase()方法使用详解
Aug 26 Javascript
vue addRoutes实现动态权限路由菜单的示例
May 15 Javascript
react 国际化的实现代码示例
Sep 14 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
Jul 25 Javascript
vue实现短信验证码登录功能(流程详解)
Dec 10 Javascript
vue中实现点击变成全屏的多种方法
Sep 27 Javascript
了不起的11个JavaScript代码重构最佳实践小结
Jan 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
虫族 Zerg 魔法科技
2020/03/14 星际争霸
PHP 的几个配置文件函数
2006/12/21 PHP
php中如何判断一个网页请求是ajax请求还是普通请求
2013/08/10 PHP
PHP中可以自动分割查询字符的Parse_str函数使用示例
2014/07/25 PHP
PHP积分兑换接口实例
2015/02/09 PHP
php模拟post提交数据的方法
2015/02/12 PHP
Yii框架上传图片用法总结
2016/03/28 PHP
PHP实现多级分类生成树的方法示例
2017/02/07 PHP
PHP实现的简单操作SQLite数据库类与用法示例
2017/06/19 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
javascript 命名空间以提高代码重用性
2008/11/13 Javascript
Javascript技巧之不要用for in语句对数组进行遍历
2010/10/20 Javascript
jquery.Jwin.js 基于jquery的弹出层插件代码
2012/05/23 Javascript
js交换排序 冒泡排序算法(Javascript版)
2014/10/04 Javascript
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
使用Python神器对付12306变态验证码
2016/01/05 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
2019/02/01 Python
对python中基于tcp协议的通信(数据传输)实例讲解
2019/07/22 Python
python点击鼠标获取坐标(Graphics)
2019/08/10 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
2019/10/11 Python
Python中if有多个条件处理方法
2020/02/26 Python
详解如何在css3打包后自动追加前缀插件:autoprefixer
2018/12/18 HTML / CSS
施华洛世奇德国官网:SWAROVSKI德国
2017/02/01 全球购物
全球速卖通西班牙站:AliExpress西班牙
2017/10/30 全球购物
UML设计模式笔试题
2014/06/07 面试题
技术副厂长岗位职责
2013/12/26 职场文书
护理工作感言
2014/01/16 职场文书
面试后的英文感谢信
2014/02/01 职场文书
食堂采购员岗位职责
2014/03/17 职场文书
大学三年计划书范文
2014/04/30 职场文书
无财产无子女离婚协议书范文
2014/09/14 职场文书
个人借款协议书范本
2014/11/17 职场文书
巴黎圣母院读书笔记
2015/06/26 职场文书
Java的Object类的九种方法
2022/04/13 Java/Android