p5.js临摹动态图形实现方法详解

使用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));//黑色圆 } }

p5.js临摹动态图形实现方法详解

拓展图形

图形向外扩散的感觉是因为相邻的白色圆相位差为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)); } }

p5.js临摹动态图形实现方法详解

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/2be1e1b90faf4141e49797a779725bea.html