四角いフレームを回す
様々な色の四角いフレームを回転させると、かっこいいアニメーションが出来ます。
1.前提知識
前提として、下記の知識が必要となります。
- オブジェクト指向プログラミング(クラス)
- 繰り返し
- マウスイベント
- translate(), rotate()
- ArrayList
2. クラスを作成する
今回のプログラムでは、回転する四角いフレームを沢山生成するため、 Rect
クラスを作成します。
class Rect{ // sizeは四角形の大きさ、growUpSpeedは大きくなるスピード float size,growUpSpeed;
// 四角いフレームの色 color c;
// agnleは角度、rotationSpeedは回転するスピード float angle,rotationSpeed;
// コンストラクタ Rect(){ size = 0; grouUpSpeed = random(3); c = color(random(255),random(255),random(255)); angle = 0; rotationSpeed = random(-3,3); }
// 四角いフレームを描画 void display(){ stroke(c); pushMatrix(); rotate(radians(angle)); rect(0,0,size,size); popMatrix(); }
// 四角いフレームの大きさ、角度を更新 void update(){ size += growUpSpeed; angle += rotationSpeed; }
}
3.
4. プログラム全体
ArrayList<Rect> rects = new ArrayList();
int loop = 1;
void setup(){ size(400,400); rectMode(CENTER); noFill();
}
void draw(){ background(0); // 20フレームごとに四角形が増えるのです if(frameCount%20 == 0){ Rect r = new Rect(); rects.add(r); }
// 原点をウィンドウの中心にして四角形を描画 translate(width/2,height/2); for(int i = 0, l = rects.size();i<l ;){ Rect r = rects.get(i); r.display(); r.update(); if(r.s > width){ rects.remove(r); l = rects.size(); }else i++; }}
void mouseClicked(){ if(loop == 1) noLoop(); else loop();
loop = 1 - loop;}
class Rect{ float s,ss; // sはsizeのs, ssはsizeが大きくなるspeedってことでssなのだと思う color c; float r,rs; // rはrotation(回転)の角度、rsはrotationするspeedなのでしょう
Rect(){ s = 0; ss = random(3); c = color(random(255),random(255),random(255)); r = 0; rs = random(-3,3); }
void display(){ stroke(c); pushMatrix(); rotate(radians(r)); // 回転だあああああああああああ rect(0,0,s,s); popMatrix(); }
void update(){ r += rs; s += ss; }
}