落書きノート

ふと自分が気になった事を書いてます

ProcessingでCGシミュレーションと問題を解く

Nature of Code -Processingではじめる自然現象のシミュレーション-

Nature of Code -Processingではじめる自然現象のシミュレーション-

// Exercise 1.6 カスタムの確率分布を使ったランダムウォーク 数値によってはノイズフィルタ
float montecarlo() {
  while(true) {
    float r1 = random(1);
    float p = r1 * r1;
    float r2 = random(1);
    if(r2 < p)
      return r1;
  }
}

class Walker {
  int x;
  int y;
  Walker() {
   x = width/2;
   y = height/2;
  }
  void display() {
   stroke(0);
   point(x,y);
  }
  void step() {
    float stepsize = montecarlo()*30;
    float stepx = random(-stepsize,stepsize);
    float stepy = random(-stepsize,stepsize);
    x += stepx;
    y += stepy;
    x = constrain(x, 0, width-1);
    y = constrain(y, 0, height-1);
  }
}

Walker w;

void setup() {
  size(640,360);
  w = new Walker();
  background(255);
}

void draw() {
  w.step();
  w.display();
}

f:id:kh2n:20171009204526p:plain

あー、全然分からないですけど、適当にやっても様になってますね…。