ArrayList circles = new ArrayList(); float start = 130; void setup() { size( 512, 512 ); frameRate(10); background(0x222222); circles.add( new Circle(new PVector( random( 0, width), random( 0, height )), random( 10, 100 ) )); } void draw() { Circle cNew = new Circle(new PVector( random( 0, width), random( 0, height )), random( 1, start ) ); int positive = 0; for( int i = 0; i < circles.size(); i++ ) { Circle cOld = (Circle)circles.get( i ); float delta = cNew.getCenter().dist( cOld.getCenter() ); float radiSum = cNew.getRadius() + cOld.getRadius(); if( delta >= radiSum ) { positive++; } } if( positive == circles.size()) { start = random( 5, 130 ); circles.add( cNew ); cNew.drawMe( start ); //start *= 0.99; } }