p5.js动态同心圆动画实现与相位差拓展

作者:小圆点时间:2026-10-23 12:11:48浏览:74

本文详解使用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));
 }
}

动态同心圆动画实现与相位差拓展

以上内容为本文全部介绍,希望能对读者的学习提供有益帮助,同时也感谢大家的支持。

作者最新文章