Hatena::ブログ(Diary)

--もじ表現練習--

2011-04-01

processingでクラス入門

00:45

みなさんいかがお過ごしでしょうか?震災で世間は忙しいですね。

東北の方々が一刻も早く日常を取り戻せることを願います。


 春休み暇すぎたので3年前期以来のprocessing(proce55ing)で遊びながらプログラミング

 そのプログラミングでは基本的な知識である「クラス」というものを使って実際に作ってみた。こういうものだったのね。

f:id:linkg1:20110402001034p:image

水滴20こ。

f:id:linkg1:20110402001035p:image

水滴200こ。

f:id:linkg1:20110402001033p:image

水滴20こ。波紋の描写座標を画面幅くらいまででランダム化。

●テーマは「水滴」です。

 アニメとかでよくある雨が水たまりに雨が落ちて波紋が広がるやつを再現しました。今回はその1滴をクラス化して何個も描写しています。

クラスの中にはいくつか役割を決めて

   ・angle()…描写が炎上になるように座標軸の角度を変えるもの

   ・col()……ランダムに色を生成するもの

   ・lin()……線もしくは楕円を描写するもの

の3つになりました。

色は分ける意味無いかも。

ソース下に置いときます。

suiteki[] sui =new suiteki[20];//この数が大きいと線と丸の数が増える

void setup() {

size(680, 680, P2D);

for(int i=0;i<sui.length;i++) {

sui[i] = new suiteki(1 + 0.1 * random(1,10),random(20,250),1.4);

//(線の速さ(等比級数),線の開始座標,円の広がりの速さ(等比級数))

}

for(int i=0;i<sui.length;i++) {

sui[i].col();

}

}

void draw() {

delay(40);

fill(255,255,255,80);

rect(0,0,width,height);

translate(340,340);

for(int i=0;i<sui.length;i++) {

sui[i].angle();//線の動く向き

sui[i].lin();//線の描写

}

}

class suiteki {

float r,g,b;//RGB色の変数

float v0;//初期速度とそれに対応した座標

float ac;//加速度(2乗するもの)

float v;//線の速さ

float wave, wave0;//波紋,拡散定数

float a;//角度

float q=1;//線から楕円までの描写が共通の座標軸で行われるためのスイッチ

suiteki(float acce,float vel,float w0) {//(加速度,初速,拡散定数)

ac = acce;

v = vel;

wave0 = w0;

wave = w0;

}

void col() {

r = random(255);

g = random(255);

b = random(255);

}

void angle() {//新たな座標軸生成

if(wave!=wave0) {

if(q==1) {

a = (random(200)*PI)/256;

if(a==0) {

a= random(21)+random(43)+80;

}

}

rotate(a);

q=0;

}

}

void lin() {//線と楕円の描写

if(v<250) {

v=v*ac;

stroke(r,g,b);

line(v,0,v+50,0);

q=1;

}

else {

wave = wave * wave0;

stroke(r,g,b);

ellipse(320, 0, wave, wave * 4 );

//波紋の出る位置を線が消える位置までの範囲で、ランダム描写。固定すれば波紋になる

if(wave>50) {

v=ac;

wave=wave0;

r = random(255);

g = random(255);

b = random(255);

}

}

}

}

参考サイト http://yoppa.org/proga10/1190.html

http://gooddays1.blog37.fc2.com/blog-entry-325.html

      http://tetraleaf.com/p5_reference_alpha/index.html

トラックバック - http://d.hatena.ne.jp/linkg1/20110401/1301672736
リンク元