使用P5.JS进行第一幅“码绘”

运用P5.JS临摹一幅老师给出的GIF图片

原图

在这里插入图片描述

临摹

在这里插入图片描述
虽然颜色上有些差别,但看运动规律什么的都是差不多的,颜色后面也可以自己再调整。

第一步 分析一下原图

这张图片是由很多个运动的小球组成的,看整张图片会觉得很乱,看不出什么规律,所以先把这张动图分帧成为一张张静图,然后仔细看其中的一个,比如第一行的第二颗小球。
第1帧
在这里插入图片描述看第一行第二个小球,就可以看到它从最小的状态放大到最大的状态,且中间的颜色一直在变化,这样一直循环有自己的频率。
看这个小球周围的其他小球,跟这个小球也是同一个频率的循环,全图中有几个会跟它完全保持一样的脚步,但一些存在着时间差,不会同大同小。

第二步 绘制一个可以放大缩小的小球

let d1 = 10 + (sin(angle) * diameter) / 2 + diameter / 2;
ellipse(10,10, d1, d1);
angle += 0.05;

在这里插入图片描述
其中,angle就是放大缩小的速度。

第三步 将小球的量增多

  let d1 = 10 + (sin(angle) * diameter) / 2 + diameter / 2;
  let d2 = 10 + (sin(angle + 2*PI/3) * diameter) / 2 + diameter / 2;
  let d3 = 10 + (sin(angle + PI/3) * diameter) / 2 + diameter / 2;
  let d4 = 10 + (sin(angle + 2*PI/16) * diameter) / 2 + diameter / 2;
  let d5 = 10 + (sin(angle + 3*PI/16) * diameter) / 2 + diameter / 2;
  let d6 = 10 + (sin(angle + PI) * diameter) / 2 + diameter / 2;

 //第一层
  for(x1=10;x1<500;x1=x1+100){
    for(y1=10;y1<400;y1=y1+100){
      ellipse(x1,y1, d1, d1);
    }  
  }
  ......
  for(x5=90;x5<500;x5=x5+100){ 
    for(y5=10;y5<400;y5=y5+100){
      ellipse(x5,y5, d5, d5);
    }
  }

类似于这样通过x和y的for循环将小球扩展到行和列,我的是很简单分组是五行五列,一组中调整缩小扩大的angle大小,即可实现同一组的不同时间差。

第四步 根据小球的运动变换颜色

fill(0.2*d1*9,d1*0.1*145,d1*4.5);
......
fill(0.3*d2,d2*7,5);

就是在这里改变颜色,可以调整数值改变颜色,也就没有和原图一模一样。

拓展作品

将小球改为正方形,类似于老师给的另一个GIF。

  var Millis = millis();
  var s = millis()/200;
  ......
  let d1 = 50 + sin(s) * diameter + diameter;
  let d2 = 50 + sin(100+s) * diameter + diameter;
  let d3 = 50 + sin(200+s) * diameter + diameter;
  let d4 = 50 + sin(300+s) * diameter + diameter;
  let d5 = 50 + sin(400+s) * diameter + diameter;
  let d6 = 50 + sin(500+s) * diameter + diameter;
  let d7 = 50 + sin(600+s) * diameter + diameter;
  ......
  fill(d1*4.2,d1*145,d1*4.5)
  rect(0, 0, d1, d1);
  ......

利用时间来表现延时变换的效果。

rectMode(CENTER);

在这里插入图片描述
我的这个拓展作品是以正方形的左上角为中心缩小,如果加入这句即可实现缩小时以正方形的中心为缩小中心。

体会

这是我的第一幅码绘及其拓展,之前觉得编程蛮枯燥的,但与艺术结合之后,发现自己编程原理也可以创造出很美丽的艺术作品,稍稍改动就会是不一样的美丽,很喜欢这样“艺工交叉”的学习方式,推荐大家尝试。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值