ArrayList circles = new ArrayList(); int _amount = 10; int _index = 0; CircleMath calcCirc; void setup() { size( 512, 512 ); frameRate(40); background(0x222222); calcCirc = new CircleMath(); for( int i = 0; i < _amount ; i++ ) { Circle c = new Circle(new PVector( random( 0, width), random( 0, height )), random( 15, 100 ) ); circles.add( c ); c.update( true ); } } void draw() { _index = 1; while( _index < _amount ) { Circle c0 = (Circle)circles.get( _index - 1 ); c0.update( true ); for( int i = _index; i < _amount; i++ ) { //println( _index + " " + i ); Circle c1 = (Circle)circles.get( i ); if( calcCirc.intersection( c0, c1 )) { drawIntersection( calcCirc.getFirstIntersection(), calcCirc.getSecondIntersection() ); } } _index++; } //filter( BLUR ); //noLoop(); } void drawIntersection(PVector p0, PVector p1 ) { ellipseMode( CENTER ); smooth(); noFill(); //stroke( 0x44009900 ); stroke( 0x77FFFFFF); ellipse( p0.x, p0.y, 0.1, 0.1 ); ellipse( p1.x, p1.y, 0.1, 0.1 ); }