1. SIS Lab
  2. >
  3. Blog
  4. >
  5. processingによる可視化

processingによる可視化

更新日:2019.09.20 作成日:2008.11.28

Simulation

http://www7b.biglobe.ne.jp/meganii/java/simulation/index.html

processingによる可視化 https://cdn-ak.f.st-hatena.com/images/fotolife/m/meganii/20081128/20081128210419.jpg

今度の授業は、この前のjavaのモデリングをprocessingというプログラミング言語によって可視化するというもの。一つ一つの円は、要素の数を表し、円の大きさは、要素の数によって変動する。中盤から緑の勢力が強いですね(^_^;)

んー、衝突して変化させるにはどうすればいいんだろう?

//global variable
int MAX = 200;
int [] v ={70,40,30,50,100};
int [][] Rule ={ {-1,1,1,-1,0},{1,-1,-1,1,0},{0,1,1,-1,-1},{1,0,-1,1,-1} };
int [][] x = new int[4][MAX];
int [][] y = new int[4][MAX];
int [][] r = new int[4][MAX];
int[][] xspeed = new int[4][MAX];
int[][] yspeed = new int[4][MAX];
float k1 = 0.3;
float k2 = 0.8;
float k3 = 0.9;
float k4 = 0.9;
float Pr;
float rlt;


void setup(){
  size(600,600);
  colorMode(HSB,100);
  frameRate(30);
  noStroke();
  smooth();
  //setup position
  for(int i=0;i<4;i++){
    for(int j=0;j<MAX;j++){
      x[i][j] = int(random(width));
      y[i][j] = int(random(height));
      r[i][j] = int(random(10,40));
    }
  }
}

void draw(){
  background(0);
  float r1 = v[0]*v[3];  //docomo*price
  float r2 = v[1]*v[2];  //softbank*trust
  float r3 = v[4]*v[3];  //user*price
  float r4 = v[4]*v[2];  //user*trust

  //calculation of possibility
  float Pr1 = (r1/(r1+r2+r3+r4))*k1;
  float Pr2 = (r2/(r1+r2+r3+r4))*k2;
  float Pr3 = (r3/(r1+r2+r3+r4))*k3;
  float Pr4 = (r4/(r1+r2+r3+r4))*k4;

  //make roulette
  float rlt = random(0,1);

  //adopt rules
  if(rlt<=Pr1){
    for(int i=0;i<4;i++){
      v[i] += Rule[0][i];
    }
  }else if(rlt<=Pr1+Pr2){
    for(int i=0;i<=4;i++){
      v[i] += Rule[1][i];
    }
  }else if(rlt<=Pr1+Pr2+Pr3){
    for(int i=0;i<=4;i++){
      v[i] += Rule[2][i];
    }
  }

  //draw bubbles & setup of speeds
  for(int i=0;i<4;i++){
    for(int j=0;j<=v[i];j++){
        xspeed[i][j] = int(random(-4,4));
        yspeed[i][j] = int(random(-4,4));
        fill(30+30i,70,100,60);
        ellipse(x[i][j],y[i][j],r[i][j]0.015v[i],r[i][j]0.015*v[i]);
        //rect(x[1][j],y[1][j],r[1][j]*0.015*v[i],r[i][j]*0.015*v[i]);
        x[i][j] = x[i][j] + xspeed[i][j];
        y[i][j] = y[i][j] + yspeed[i][j];
        if ((x[i][j] < width) || (x[i][j] >; 0)) {
            xspeed[i][j] = xspeed[i][j] * -1;
        }
        if ((y[i][j] < height) || (y[i][j] >; 0)) {
            yspeed[i][j] = yspeed[i][j] * -1;
        }
    }
  }
}
B! Pocket
スポンサーリンク

Related contents

TECH

2008.10.12

施設引き継ぎ資料

TECH

2008.08.30

文系的IT業と理系的IT業

TECH

2008.06.30

プログラム

TECH

2008.06.06

数理情報学4 pivot 枢軸選択つきガウスの消去法

TECH

2008.06.03

シュレディンガーの猫

TECH

2008.05.31

Java 今の時間を表示させる

TECH

2010.01.22

Scalaスケーラブルプログラミング

TECH

2010.01.20

Flexでウェブアルバムが作りたい!!(5)