实验要求:编程语言与工具:编程可以用p5,processing,若想用其他语言或工具,提前向老师说明情况;
作品: 一件编程创意作品,必须实现动态效果或交互效果;作品录制一段一分钟内的视频;作品可以是具象化地描绘自己的形象,也可以是任何形式表现自己的兴趣、追求、特色、经历等;
报告:写一篇文章,发表为博文/推文等形式,描述运用的规律,若用到了数学/物理/化学等学科中的知识,要用平实易懂的语言介绍原理,尝试运用凝练的数学语言表达(公式、方程、推导等),特别要描述出这些原理如何在作品中呈现的。
实验主要代码:float theta, step;
int num=5, frames = 1200;
Layer[] layers = new Layer[num]; //
class Layer {
float start, noize, speed;
float yOff, yOff2;
Layer(float _start, float _noize, float _speed) {
start = _start;
noize = _noize;
speed = _speed;
}
void display() {
yOff = yOff2;
noStroke();
for (int x=0; x<width; x+=1) {
float y = start + noise(noize+sin(yOff)3)step3.5;
rect(x, height, 1, -height+y);
yOff+=TWO_PI/(width);
}
yOff2=thetaspeed;
}
}
void setup() {
size(1000, 1000);
background(255, 255, 255);
step = (height-120)/num;
for (int i=0; i<num; i++) {
layers[i] = new Layer(-20+istep, random(1000), i+1);
}
}
void draw() {
background(#ffffff);
for (int i=0; i<layers.length; i++) {
color col = lerpColor(color(184,186,255), color(37,41,180), 0.8-0.8/numi);
fill(col);
layers[i].display();
}
theta += TWO_PI/frames;
//if (frameCount%2==0 && frameCount<=frames) saveFrame(“image-###.gif”);
myDisplay();
}
这个主要是动态背景的代码,中间的团子描点过于单一就不予呈现了。
实验效果:
实验总结:整体来说不是特别困难,可能是自己画的简笔画不是很复杂吧,但是觉得挺符合自己的性格啥的,动态背景参考了网上动态图的制作教程仿了一个。