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失效的解决方法
Jun 26 Javascript
枚举的实现求得1-1000所有出现1的数字并计算出现1的个数
Sep 10 Javascript
js动态添加事件并可传参数示例代码
Oct 21 Javascript
JavaScript基础教程之alert弹出提示框实例
Oct 16 Javascript
JQuery查找DOM节点的方法
Jun 11 Javascript
Javascript BOM学习小结(六)
Nov 26 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
Nov 23 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
Jan 13 Javascript
使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
Mar 15 Javascript
Flask中获取小程序Request数据的两种方法
May 12 Javascript
vue实现a标签点击高亮方法
Mar 17 Javascript
webpack4 入门最简单的例子介绍
Sep 05 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 获取文件权限函数介绍
2013/07/11 PHP
php中Y2K38的漏洞解决方法实例分析
2014/09/22 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
PHP addcslashes()函数讲解
2019/02/03 PHP
Javascript 遍历对象中的子对象
2009/07/03 Javascript
javascript中onclick(this)用法介绍
2013/04/19 Javascript
jquery parent和parents的区别分析
2013/10/02 Javascript
jQuery获取对象简单实现方法小结
2014/10/30 Javascript
jQuery中bind()方法用法实例
2015/01/19 Javascript
jQuery树形下拉菜单特效代码分享
2015/08/15 Javascript
javascript url几种编码方式详解
2016/06/06 Javascript
jQuery+ajax读取并解析XML文件的方法
2016/09/09 Javascript
JavaScript生成验证码并实现验证功能
2016/09/24 Javascript
利用jQuery实现一个简单的表格上下翻页效果
2017/03/14 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
2017/10/25 Javascript
Vue按需加载的具体实现
2017/12/02 Javascript
对Angular中单向数据流的深入理解
2018/03/31 Javascript
Node.js学习教程之Module模块
2019/09/03 Javascript
JS实现百度搜索框
2021/02/25 Javascript
[49:43]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python2.x利用commands模块执行Linux shell命令
2016/03/11 Python
Python+tkinter模拟“记住我”自动登录实例代码
2018/01/16 Python
pyqt 实现为长内容添加滑轮 scrollArea
2019/06/19 Python
python傅里叶变换FFT绘制频谱图
2019/07/19 Python
Python @property及getter setter原理详解
2020/03/31 Python
浅析Python 多行匹配模式
2020/07/24 Python
深入分析python 排序
2020/08/24 Python
4款Python 类型检查工具,你选择哪个呢?
2020/10/30 Python
完美解决IE8下不兼容rgba()的问题
2017/03/31 HTML / CSS
艺术专业大学生自我评价
2013/09/22 职场文书
大学生入党自我鉴定
2013/10/31 职场文书
小学庆六一活动方案
2014/02/28 职场文书
幼儿园中班上学期评语
2014/04/18 职场文书
篮球比赛拉拉队口号
2014/06/10 职场文书
离职信范文
2015/06/23 职场文书
springboot新建项目pom.xml文件第一行报错的解决
2022/01/18 Java/Android