Daily Creative Coding

元「30 min. Processing」。毎日、Creative Codingします。

パーティクル

/**
* Particle System
*
* @author aa_debdeb
* @date 2015/10/01
*/

float PARTICLE_RADIOUS = 3.0;
float PARTICLE_NUM = 1000;
float FORCE = 6.0;

ArrayList<Particle> particles;

void setup(){
  size(500, 500);
  smooth();
  frameRate(24);
  noStroke();
  
  particles = new ArrayList<Particle>();
  for(int i = 0; i < PARTICLE_NUM; i++){
    particles.add(new Particle());
  }
}

void draw(){
  background(0);
  pushMatrix();
  translate(width/2, height/2);
  for(Particle particle : particles){
    particle.draw();
  }
  popMatrix();
  for(Particle particle : particles){
    particle.update();
  }
}

class Particle{
  PVector position;
  PVector velocity;
  color c;
  
  
  Particle(){
    position = new PVector(random(200) - 100, random(200) - 100);
    velocity = new PVector(random(10), random(10));
    c = color(random(255), random(255), random(255));
  }
  
  void draw(){
    fill(c);
    ellipse(position.x, position.y, PARTICLE_RADIOUS * 2, PARTICLE_RADIOUS * 2);
  }
  
  void update(){
    PVector acceleration = new PVector(FORCE * -1.0 * position.x / position.mag(), FORCE * -1.0 * position.y / position.mag());
    velocity.add(acceleration);
    position.add(velocity);
  }
  
  
}