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 相关文章推荐
用tip解决Ext列宽度不够的问题
Dec 13 Javascript
Jquery ThickBox插件使用心得(不建议使用)
Sep 08 Javascript
Javascript面向对象编程
Mar 18 Javascript
使用apply方法处理数组的三个技巧[译]
Sep 20 Javascript
jquery ajax,ashx,json的用法总结
Feb 12 Javascript
SeaJS入门教程系列之SeaJS介绍(一)
Mar 03 Javascript
javascript学习笔记(八)正则表达式
Oct 08 Javascript
JavaScript基础知识及常用方法总结
Jan 10 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
Feb 19 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
May 15 jQuery
redux-saga 初识和使用
Mar 10 Javascript
JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
May 12 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实现异步调用方法研究与分享
2011/10/27 PHP
php模拟ping命令(php exec函数的使用方法)
2013/10/25 PHP
以文件形式缓存php变量的方法
2015/06/26 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
Web层改进II-用xmlhttp 无声息提交复杂表单
2007/01/22 Javascript
?牟┛途W扣了一??效果出?? target=
2007/05/27 Javascript
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
验证手机号码的JS方法分享
2013/09/10 Javascript
require.js深入了解 require.js特性介绍
2014/09/04 Javascript
JQuery.get提交页面不跳转的解决方法
2015/01/13 Javascript
js实现将选中值累加到文本框的方法
2015/08/12 Javascript
JS中数组重排序方法
2016/11/11 Javascript
iview给radio按钮组件加点击事件的实例
2017/09/30 Javascript
完美解决axios跨域请求出错的问题
2018/02/05 Javascript
JS实现常见的查找、排序、去重算法示例
2018/05/21 Javascript
layer父页获取弹出层输入框里面的值方法
2019/09/02 Javascript
layui操作列按钮个数和文字颜色的判断实例
2019/09/11 Javascript
three.js利用卷积法如何实现物体描边效果
2019/11/27 Javascript
JQuery常用简单动画操作方法回顾与总结
2019/12/07 jQuery
使用konva和vue-konva库实现拖拽滑块验证功能
2020/04/27 Javascript
ES5新增数组的实现方法
2020/05/12 Javascript
[02:12]2019完美世界全国高校联赛(春季赛)报名开启
2019/03/01 DOTA
python通过ftplib登录到ftp服务器的方法
2015/05/08 Python
python 信息同时输出到控制台与文件的实例讲解
2018/05/11 Python
python将txt文件读入为np.array的方法
2018/10/30 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
2018/11/14 Python
django使用LDAP验证的方法示例
2018/12/10 Python
Python实现的文轩网爬虫完整示例
2019/05/16 Python
python各类经纬度转换的实例代码
2019/08/08 Python
Python使用uuid库生成唯一标识ID
2020/02/12 Python
SAZAC的动物连体衣和动物睡衣:Kigurumi Shop
2020/03/14 全球购物
机关作风建设剖析材料
2014/10/11 职场文书
2014年文秘工作总结
2014/11/25 职场文书
2015年国际护士节演讲稿
2015/03/18 职场文书
汽车质检员岗位职责
2015/04/08 职场文书
Python中可变和不可变对象的深入讲解
2021/08/02 Python