Processing Visualization Library Example

by dandiebolt

HTML

<script src="http://processingjs.org/js/pjs/processing.min.js"></script>
<script src="http://processingjs.org/js/pjs/init.js"></script>
<script type="application/processing">

// amoebaAbstract_01_formatik

// Copyright 2003 Marius Watz

// http://www.evolutionzone.com/

//

// Variation on abstract computational animation for the exhibition 

// "Abstraction Now", K�nstlerhaus Vienna, 29.08-28.09 2003.

//

// You are allowed to play with this code as much as you like, but

// you may not publish pieces based directly on it. The Vec2D class 

// can be used freely in any context.

//



int num,cnt,px,py,fadeInterval;

Particle[] particles;

boolean initialised=false,doClear=false;

float lastRelease=-1,scMod,fadeAmount;



void setup() {

  size(500,600);

  background(255);

  smooth();

  rectMode(CENTER_DIAMETER);

  ellipseMode(CENTER_DIAMETER);

    

  cnt=0;

  num=150;

  particles=new Particle[num];

  for(int i=0; i<num; i++) particles[i]=new Particle();



  reinit();

  px=-1;

  py=-1;

}



void draw() {

  if(doClear) {

    background(255);

    doClear=false;

  }



  noStroke();



  if(frameCount%fadeInterval==0) {

    fill(255,255,255, fadeAmount);

    rect(width/2,height/2, width,height);

  }  

  

  updateAuto();

  

  for(int i=0; i<num; i++) 

    if(particles[i].age>0) particles[i].update();

}



void reinit() {

  doClear=true;

  scMod=random(1,1.4);

  fadeInterval=(int)random(220,300);

  fadeAmount=random(30,60);

//  println("fadeInterval "+fadeInterval+" scMod "+nf(scMod,0,3)+

//    " fadeAmount "+nf(fadeAmount,0,3));

  for(int i=0; i<num; i++) particles[i].age=-1;

  initAuto();

}



void mousePressed() {

  reinit();

}



AutoMover auto[];

int autoN;



void initAuto() {

  autoN=(int)random(3,6);

//  println("initAuto "+autoN);

  auto=new AutoMover[autoN];

  for(int i=0; i<autoN; i++) auto[i]=new AutoMover();

  

}



void updateAuto() {

  for(int i=0; i<autoN; i++) auto[i].update();

}



class AutoMover {

 ...