p5.js实现动态图形临摹:旋转矩形与螺旋运动详解

作者:像素漫游时间:2026-10-23 12:52:48浏览:146

本文通过p5.js库演示两种动态图形的实现方法。首先解析由36个四分之三圆形组成的旋转矩形阵列,利用坐标变换与角度控制实现规律运动;其次展示基于时间变量生成的螺旋型色彩渐变效果,通过循环绘制无框圆形形成视觉上的线条流动。

本文分享了利用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);
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

作者最新文章