array_PVector_elipse03

int num = 100;

PVector[] pos;
PVector[] vel;
color[] c;
void setup() {
  size(500, 500);
  colorMode(HSB, 360, 100, 100, 100);
  smooth();
  //noStroke();
  background(0, 0, 100);

  pos = new PVector[num];
  vel = new  PVector[num];
  c = new color[num];
  
  for (int i = 0; i < num; i ++) {
    pos[i] = new PVector(width/2, 10*i);
    vel[i] = new PVector(1, 0);
    c[i] = color(random(360), 100, 100);
  }
}

void draw() {

  int d = 1;

  for (int i = 0; i < num; i ++) {
    pos[i].add(vel[i]);

    if (i%2 == 0) {
      vel[i].x = d;
    } else {
      vel[i].x = -d;
    }
    stroke(c[i]);
    ellipse(pos[i].x, pos[i].y, width/num, height/num);
    
    pos[i].y += 0.001;

    if ( pos[i].x < 0 || pos[i].x>width) {
      d = -d;
    }
  }
}

最初に狙っていた違い近いに逆方向に円を移動させるところまではできた.だけど,両端で跳ね返ってくるところができなかった.もうそろそろ教科書に戻ろう.