p5.js临摹动态图形

动态图形临摹

使用p5.js临摹一个动态图形并作出拓展

原图形

原始图片
由内向外,白色圆的半径依次增大,黑色圆的半径不变;
白色圆在上一个白色圆碰到之前就开始增大半径;
图中只能存在一个周期的变化;

临摹图形

使用P5.js,依照上文的规律进行临摹

画12对圆;
相邻圆之间半径差为25;
白色圆半径以周期为60帧的正弦函数的正数值部分变化,变化幅度为22;
相邻白色圆运动函数相位差为13帧;
代码如下:

function setup() {
  createCanvas(400, 400);
  frameRate(30)//图形设为30帧
}

function draw() {
  background(0);
  
  
  for(i=12;i>0;i--)//一共12对圆
  {
    y=22*sin(PI*frameCount/30-13*(i-1));//相邻白色圆运动函数相位差为13帧
    if(y>=0)
    {
      a=y;
    }
    else
    {
      a=0;
    }
    fill(255);
    ellipse(200,200,a+50*i);//白色圆
    fill(0);
    ellipse(200,200,25+50*(i-1));//黑色圆
  }
}

放

拓展图形

图形向外扩散的感觉是因为相邻的白色圆相位差为13帧,改变相位差可实现改变视觉效果

function setup() {
  createCanvas(400, 400);
  frameRate(30)
}

function draw() {
  background(0);
  
  
  for(i=12;i>0;i--)
  {
    y=22*sin(PI*frameCount/30-12*(i-1));//相位差设为12
    if(y>=0)
    {
      a=y;
    }
    else
    {
      a=0;
    }
    fill(255);
    ellipse(200,200,a+50*i);
    fill(0);
    ellipse(200,200,25+50*(i-1));
  }
}

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值