int num=0; int maxnum=170; float [][] grid; Circle[] circles; int dimx=500; int dimy=500; float [] angle1; float [] angle2; int start=0; void setup() { randomSeed(22); size(dimx,dimy); grid= new float[dimx][dimy]; circles = new Circle[maxnum]; angle1 = new float[maxnum]; angle2 = new float[maxnum]; for (int i=0; i0) { circles[num-1].drawTangent(); circles[num-1].drawTangent2(); } //println(num); } void makeCircle() { if (num0 && circlex0 && circley0 && x10 && y10) && (x20) && (y250) { line(x2+random(-1.5,1.5),y2+random(-1.5,1.5),x2+random(-1.5,1.5),y2+random(-1.5,1.5)); x2+=cos(angle1[num]-PI/2); y2+=sin(angle1[num]-PI/2); grid[cx2][cy2]=angle1[num]; } else { makeCircle(radius, x2, y2,angle1[num]-PI/2); } } else { makeCircle(); } } } void drawTangent2() { stroke(0,140); fill(0,120); int cx3=int(x3); int cy3=int(y3); if (num0 && x30 && y30 && x40 && y4