つよくなりたいなあ

地に足をつけず世界を生きぬくブログです

#Coding Challenge Metaball

shiffman先生の動画、わかりやすい説明(英語だけど)とエラーとか間違いもその場で訂正してくれるのでありがたい。動画だと全部のコード確認できなくて間違いを探すのに手間取るときもある。

Blob[] blobs = new Blob[10];

void setup() {
  size(800, 600);
  colorMode(RGB);
  for (int i = 0; i < blobs.length; i++) {
    blobs[i] = new Blob(random(width), random(height));
  }

  
}

void draw() {
  background(250);

  loadPixels();
  for (int x = 0; x < width; x++) {
    for (int y = 0; y < height; y++) {
      int index = x + y * width;

      float sum = 100;
      for (Blob b : blobs) {
        float d = dist(x, y, b.pos.x, b.pos.y);
        sum += 150 * blobs[0].r / d;
      } 

      pixels[index] = color(sum,random(175, 200), 255);
    }
  }
  updatePixels();
  for (Blob b : blobs) {
    b.update();
    b.show();
  }
class Blob {
  PVector pos;
  float r;
  PVector vel;

  Blob(float x, float y) {
    pos = new PVector(x, y);
    vel = PVector.random2D();
    vel.mult(random(5, 10));
    r = random(8,15);
  }
  void update() {
    pos.add(vel);

    if (pos.x > width || pos.x < 0) {
      vel.x *= -1;
    }
    if (pos.y > height || pos.y < 0) {
      vel.y *= -1;
    }
  }
  void show() {
    noFill();
    noStroke();;
    ellipse(pos.x, pos.y, r*2, r*2);
  }
}