互动媒体技术-用p5.js临摹动态图片

1,临摹图片
在这里插入图片描述
2,图像运动规律

原图中一共有36个等大的四分之三圆形,按照一定的规律转动,可以等效为圆形不动,每个圆上有以其半径为边长的矩形在绕圆形的原点转动,每四个为一组,其他部分都是在重复这四个的转动规律

3,完整代码

function setup() 
{  
  createCanvas(402,402); 
}
function draw()
{
  background(0); 
  var dx=0; 
  dx+=PI/180;
  var t=(millis()/5)*sin(dx);//返回自程序开始的毫秒数
  if(dx==PI) 
  {  
    dx=0;
  } 
  
  for(var i=0;i<6;i++)//每行每列六个圆形
  {   
    for(var j=0;j<6;j++)
    { 
      fill(255); 
      ellipse(i*66+36, j*66+36, 60, 60);//绘制半径30的圆形,间隔6
      fill(0); 
      translate(i*66+36, j*66+36);//矩形的移动,共四种运动状态
      if(i%2==0&&j%2==0) 
      {    
        rotate(-t); //逆时针旋转
        rect(0,0,30,30);//旋转的边长30黑色矩形
      }    
      else if(i%2==1&&j%2==0)
      { 
        rotate(t);//顺时针旋转
        rect(-30,0,30,30); 
      }    
      else if(i%2==1&&j%2==1)  
      {   
        rotate(-t); 
        rect(-30,-30,30,30); 
      }    
      else if(i%2==0&&j%2==1)
      {   
        rotate(t);
        rect(0,-30,30,30);  
      }   
      resetMatrix(); 
    }  
  }
}

4,临摹结果
在这里插入图片描述

5,拓展图像
在这里插入图片描述
运动规律:
一段螺旋型的运动弧线,中心颜色较深,越向外颜色越浅,形成一种线在向中心运动的趋势。绘制时是由无数个没有边框的圆形一起按照规律运动,形成线。

完整代码:

function setup()
{
  createCanvas(500, 500);
  noStroke(); 
}
function draw() {
  background(0);  
  for (var i =1;i <3000; i++)
  {
    drawcircle(255-0.1*i,255-0.1*i,255-0.1*i, i); 
    i++;
  }
}
function drawcircle( r, g, b, interval){
  fill(r, g, b);
  var x = 250; 
  var y = 250; 
  var t = millis() /3+ interval *0.5;
  var xi;
  var yi;i
  var radius = interval *15;
  xi = 0.01*radius * Math.cos(t * Math.PI/180);
  yi = 0.01*radius * Math.sin(t * Math.PI/180); 
  x += xi;
  y += yi;
  ellipse(x, y, 20,20);
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值