void setup() {
   //size(800, 800);
   fullScreen();
   noLoop();
   }
   float branchRatio = 0.7;
void draw() {
   background(255);
   stroke(0);
   noFill();
   drawTree(0, width/2, height, radians(-90), height/4);
   } // draw()
void drawTree(int n, float x, float y, float theta, float len) {
   float cx = x + len*cos(theta);
   float cy = y + len*sin(theta);
   stroke(0);
   strokeWeight(0.5*n*n);
   line(x, y, cx, cy);
 if (n == 0) {
   noStroke();
   fill(0, random(100, 200), 0);
   circle(cx, cy, 5);
   return;
   }
   float branchAngle = radians(-30);
   float bendAngle = radians(random(-15, 15));
   drawTree(n-1, cx, cy, theta+branchAngle+bendAngle, len*branchRatio);
   drawTree(n-1, cx, cy, theta-branchAngle+bendAngle, len*branchRatio);
   drawTree(n-1, cx, cy, theta+bendAngle, len*branchRatio);
   }