文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何从线条艺术到DIY实现一个网状体Net的js库

2023-06-19 10:45

关注

本篇文章给大家分享的是有关如何从线条艺术到DIY实现一个网状体Net的js库,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

今天无意中看到一个可视化作品:

WHAT MADE ME?


INTERACTIVE PUBLIC INSTALLATION

Most Original Exhibit Award at the Birmingham Made Me Design Awards 2012.

如何从线条艺术到DIY实现一个网状体Net的js库

该作品围绕信息可视化的概念,以大型复杂的数据图形式,由游客自己生成的方式进行展示,是一个集信息可视化、交互式体验的展览装置。

通过向游客询问五个简单的问题来探索伯明翰人的画像,这5个问题分别是:

什么让你思考?

什么让你创造?

什么让你生气?

什么让你快乐?

什么让你改变?

每个问题将对应不同的颜色,可以通过连接相关的单词和彩色的线条来回答问题。

如何从线条艺术到DIY实现一个网状体Net的js库

几百个选项在网格中按字母顺序显示,给参与者多种可选的答案。

如何从线条艺术到DIY实现一个网状体Net的js库

这种设计形式是利用彩色直线条,形成疏密变化,达到良好的视觉效果。

直线条这种设计元素,被许多设计师所喜爱,比如用线条串联文字跟图案:

如何从线条艺术到DIY实现一个网状体Net的js库

还有,线描插画:

如何从线条艺术到DIY实现一个网状体Net的js库

更有创意的图标:

如何从线条艺术到DIY实现一个网状体Net的js库

还有ACELAND人工智能设计师,创作的gif图:

如何从线条艺术到DIY实现一个网状体Net的js库

设计师对线条对运用是娴熟、喜爱、富有创造力的。

这种形式也被运用在了网页。

在这里,我们动手实现一个,并稍微拓展下,比如,可以是彩色线条:

如何从线条艺术到DIY实现一个网状体Net的js库

如何从线条艺术到DIY实现一个网状体Net的js库

实现思路:

如何从线条艺术到DIY实现一个网状体Net的js库

动手敲代码:

1 简单设置个css样式及canvas标签:

如何从线条艺术到DIY实现一个网状体Net的js库

在body标签里,写个canvas标签。

如何从线条艺术到DIY实现一个网状体Net的js库

2 封装成JS库

我希望封装成一个Net构造函数,调用的时候,通过传入canvas,以及一些参数配置,即可生成一个Net。

如何从线条艺术到DIY实现一个网状体Net的js库

可配的参数:

粒子的数量,

粒子移动速度,

粒子活动范围,

线条颜色,

粒子颜色,

背景颜色等等。

下面是一些方法的设计:

如何从线条艺术到DIY实现一个网状体Net的js库

整个逻辑分为2大部分,init及move:

如何从线条艺术到DIY实现一个网状体Net的js库

init:

1 通过createPoints,根据传入的option参数,生成粒子群;

2 通过clear,初始化canvas,比如设置背景色,清除画布上的其他元素;

3 通过drawPoints绘制粒子群;

4 connectPoints连接粒子,形成网状结构;

结果如下:

如何从线条艺术到DIY实现一个网状体Net的js库

move:

5 先用clear重设画布

6 通过movePoints移动粒子群;

7 再次通过connectPoints连接粒子,形成网状结构;

连续调用move之后,就可以形成一下效果:

如何从线条艺术到DIY实现一个网状体Net的js库

其中,movePoints有2点需要注意,我们需要通过moveArea及movePoint,两个方法移动每个粒子,并判断粒子的移动方向,更新完粒子的位置之后,再次调用drawPoints绘制出所有粒子。

如何从线条艺术到DIY实现一个网状体Net的js库

moveArea是判断粒子移动方向的:

如何从线条艺术到DIY实现一个网状体Net的js库

movePoint根据移动方向,更新粒子的坐标

如何从线条艺术到DIY实现一个网状体Net的js库

3 升级版本:

  +渐变色  

如何从线条艺术到DIY实现一个网状体Net的js库

修改connectPoints方法里的颜色,如下:

如何从线条艺术到DIY实现一个网状体Net的js库

  +线宽变化  

 同样,修改connectPoints方法,增加一个中点的坐标:

如何从线条艺术到DIY实现一个网状体Net的js库

绘制直线变为绘制一个三角形:

如何从线条艺术到DIY实现一个网状体Net的js库

测试下效果,

new Net(canvas,{num:2});

如下,发现中点偏离连线太远,可以调整mx及my的参数,使其幅度更小。

如何从线条艺术到DIY实现一个网状体Net的js库

调整后,再次试下:

可以达到下面的效果:

如何从线条艺术到DIY实现一个网状体Net的js库

把线改粗点,换几个颜色试试

如何从线条艺术到DIY实现一个网状体Net的js库

如何从线条艺术到DIY实现一个网状体Net的js库

  +鼠标的交互事件  

相当于以鼠标位置的x,y坐标为圆心,固定或随机值为半径重新创建一个粒子,并且push进我们之前创建好的粒子群里。

如何从线条艺术到DIY实现一个网状体Net的js库

给canvas绑定鼠标监听事件:

canvas.addEventListener('click', function(e) {

let x=e.clientX,

     y=e.clientY;

net.addPoint(x,y);

 } );

这样就可以随意增加粒子啦。

如何从线条艺术到DIY实现一个网状体Net的js库

  

  +多种线条颜色   

在createPoints的时候,给不同的point设置不同的线条颜色,然后在connectPoints的时候,根据point的线条颜色,画出线条即可。

如何从线条艺术到DIY实现一个网状体Net的js库

以上就是如何从线条艺术到DIY实现一个网状体Net的js库,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯