【Processing】曼荼羅 を動かす

94.hatenadiary.jp

 

これを動かす。

 

 

 

int num = 36;
float[] b = new float [num];
float[] c = new float [num]; //主に形のの大きさ
float[] d = new float [num]; //線の太さ
int s = 0;
int max;

void setup() {
  size(800, 800);
  background(255);
  for (int i = 0; i < 36; i++) {
    b[i] = int(random(4));
    c[i] = random(50); //主に形の大きさ
    d[i] = random(5); //線の太さ
    max  =  int(random(2,36));
  }
}

void draw() {
  background(255);
  translate(width/2, height/2);

  float dis = sin(radians(s));

  for (int i = 0; i < max; i++ ) {

    for (int rad = 0; rad < 360; rad += 10) {
      pushMatrix();
      rotate(radians(rad));
      noFill();
      strokeWeight(d[i]);
      if (b[i] == 0) {
        line(i*20*dis, 0, i*dis*20+10, 0);
      } //if文で分岐させる
      if (b[i] == 1) {
        ellipse(i*20*dis, 0, c[i], c[i]);
      }  
      if (b[i] == 2) {
        rect(i*20*dis, 0, c[i], c[i]);
      }  
      if (b[i] == 3) {
        triangle(i*20*dis, 0, i*dis*20+c[i], -i*2, i*dis*20+c[i], i*2);
      }
      popMatrix() ;
    }
  }
  s++;
  
  if (abs(dis) < 0.001) {
    for (int i = 0; i < 36; i++) {
      b[i] = int(random(4));
      c[i] = random(50); //主に形の大きさ
      d[i] = random(5); //線の太さ
      max  =  int(random(2,36));
    }
  }
}