/* Circle packing demo using the algorithm described here: http://en.wiki.mcneel.com/default.aspx/McNeel/2DCirclePacking Sean McCullough banksean at gmail June 17, 2007 */ import noc.*; ArrayList circles; long iterationCounter = 0; void setup() { size( 600, 600 ); smooth(); fill( 0 ); frameRate( 20 ); circles = createRandomCircles(50); background(255); } void draw() { background( 255 ); for (int i=0; i b.distanceToCenter()) return -1; else return 0; } }; void iterateLayout(int iterationCounter) { Object circs[] = circles.toArray(); Arrays.sort(circs, comp); //fix overlaps Circle ci, cj; Vector3D v = new Vector3D(); for (int i=0; i 0) { Circle c = new Circle(random(width), random(height), random(n)+10); c.myColor = color(random(255), 128, 200, 128); circles.add(c); } colorMode(RGB,255); return circles; } Circle getCircle(int i) { return (Circle)circles.get(i); } Circle dragCircle = null; void keyPressed() { circles = createRandomCircles(50); } void mousePressed() { dragCircle = null; for(int i=0; i