前へ 上へ 次へ


計算機シミュレーション入門(2)ブラウン運動の応用


ブラウン運動の応用(雪を降らせる)

酔歩の応用問題として、雪がひらひらと舞う様子を表してみよう。雪が風にあおられて揺れる様子を乱数で表現する。酔歩との最大の違いとして、雪は必ず下に落ちるという点がある。そこで、画面の上下方向には酔歩ではなく、毎ステップ必ず下に進み、左右にはランダムに動くものとしよう。

一個

まず、一個の雪が画面最上端の真ん中に出現し、毎時刻、下向きに2ずつ落ち、左右にはブラウン運動するプログラムを書いてみる。ウィンドウ下端に到達したら、再び画面最上端に出現。

 int x,y;
 void setup(){
   size(500,500);
   frameRate(10);
   x=int(random(500));
   y=0;
 }
 void draw(){
   x  += int(random(2))*2-1;
   y  += 2;
   if(y > 500){y=0;}
   background(0);
   rect(x,y,6,6);
 }

たくさん

たくさんの雪を降らせてみよう。次のプログラムでは最初に200個の円をランダムな位置に置き、あとは上のプログラムと同じように進めている。色を雪らしくしてみた。

 int x[]=new int[200];
 int y[]=new int[200];
 int i;
 void setup(){
   size(500,500);
   frameRate(10);
   noStroke();
   for(i=0;i<200;++i){
     x[i]=int(random(500));
     y[i]=int(random(500));
   }
 }
 void draw(){
   for(i=0;i<200;++i){
     x[i]  += int(random(2))*2-1;
     y[i]  += 2;
      if(y[i] > 500){y[i]=0;}
    }
   background(100,100,200);
   for(i=0;i<200;++i){
     ellipse(x[i],y[i],10,10);
   }
 }

練習問題

もっと雪らしくするには、円の大きさをばらつかせたり、風の効果をとりいれたりするとよいだろう。風の効果はたとえば、左右に等確率で動くのではなく、いずれか一方により動きやすくすればよさそうだ。工夫して、雪らしくせよ


前へ 上へ 次へ