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 相关文章推荐
判断是否输入完毕再激活提交按钮
Jun 26 Javascript
JavaScript 解析读取XML文档 实例代码
Jul 07 Javascript
Yii2使用Bootbox插件实现自定义弹窗
Apr 02 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
Jun 25 Javascript
简单谈谈node.js 版本控制 nvm和 n
Oct 15 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
Jul 07 Javascript
layui弹出层效果实现代码
May 19 Javascript
vue loadmore组件上拉加载更多功能示例代码
Jul 19 Javascript
jquery 给动态生成的标签绑定事件的几种方法总结
Feb 24 jQuery
element-ui如何防止重复提交的方法步骤
Dec 09 Javascript
Vue解析剪切板图片并实现发送功能
Feb 04 Javascript
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
Apr 21 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
ftp类(myftp.php)
2006/10/09 PHP
使用Xdebug调试和优化PHP程序之[1]
2007/04/17 PHP
PHP实现动态创建XML文档的方法
2018/03/30 PHP
PHP实现函数内修改外部变量值的方法示例
2018/12/28 PHP
php生成微信红包数组的方法
2019/09/05 PHP
优化网页之快速的呈现我们的网页
2007/06/29 Javascript
使用javascript做的一个随机点名程序
2014/02/13 Javascript
js身份证判断方法支持15位和18位
2014/03/18 Javascript
javascript使用smipleChart实现简单图表
2015/01/02 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
jquery实现键盘左右翻页特效
2015/04/30 Javascript
Javascript实现字数统计
2015/07/03 Javascript
基于jquery实现的仿优酷图片轮播特效代码
2016/01/13 Javascript
JQuery解析XML的方法小结
2016/04/02 Javascript
基于bootstrap插件实现autocomplete自动完成表单
2016/05/07 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
移动端点击图片放大特效PhotoSwipe.js插件实现
2016/08/25 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
nodejs搭建本地服务器轻松解决跨域问题
2018/03/21 NodeJs
微信小程序登录对接Django后端实现JWT方式验证登录详解
2019/07/29 Javascript
Node.js开发之套接字(socket)编程入门示例
2019/11/05 Javascript
[07:01]DOTA2-DPC中国联赛正赛 Aster vs Magma 3月5日 赛后选手采访
2021/03/11 DOTA
Python中的map()函数和reduce()函数的用法
2015/04/27 Python
Python实现批量修改文件名实例
2015/07/08 Python
python通过pip更新所有已安装的包实现方法
2017/05/19 Python
django中静态文件配置static的方法
2018/05/20 Python
对Xpath 获取子标签下所有文本的方法详解
2019/01/02 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
2019/02/12 Python
Python合并2个字典成1个新字典的方法(9种)
2019/12/19 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
2020/05/22 Python
css3实现背景动态渐变效果
2019/12/10 HTML / CSS
HTML5 Canvas实现图片缩放、翻转、颜色渐变的代码示例
2016/02/28 HTML / CSS
世界上最大的糖果店:Dylan’s Candy Bar
2017/11/07 全球购物
比利时家具购买网站:Home24
2019/01/03 全球购物
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
2022/02/12 Servers