import java.applet.*; 
import java.awt.*; 
import java.awt.image.*; 
import java.awt.event.*; 
import java.io.*; 
import java.net.*; 
import java.text.*; 
import java.util.*; 
import java.util.zip.*; 

public class arbor_2 extends BApplet {

float ymag,xmag=0;
float  newYmag,newXmag=0;
int mod=0;
void setup() 
{
  size(600, 400);
  //background(0);
  
  colorMode(RGB, 255);
  background(230, 230, 230);
   

}

void loop(){
  translate(width/2, height/2);

  newXmag = mouseX/(float)(width) * TWO_PI;
  newYmag = mouseY/(float)(height) * TWO_PI;
  
  float diff = xmag-newXmag;
  if (abs(diff) >  0.01f) { 
    xmag -= diff/4.0f; 
  }
  
  diff = ymag-newYmag;
  if (abs(diff) >  0.01f) {
    ymag -= diff/4.0f;
  }
  
  rotateX(ymag);
  rotateY(xmag);
 
  mod=height-mouseY;
   translate(0,-mod);
  float dd=((mouseX-width/2)*0.0005f);
 drawL(mod,true,1-dd);

}

void drawL (int lung, boolean start,float coef){
    
     if (start){
     
    push();
    line(0,0,0,lung);
    pop();
    lung=(int)(lung/2);
    drawL(lung,false,coef);
    } else {
     
     push();
     translate(0,lung*2);
     
     push();
     rotateZ(TWO_PI/coef);
      line(0,0,0,lung);
          if(lung>5){
          drawL(lung/2,false,coef);
     }
    pop();
    
    push();
    rotateZ(TWO_PI/-coef);
     line(0,0,0,lung);
      if(lung>5){
    
      drawL(lung/2,false,coef);
     }
    pop();
         push();
     rotateX(TWO_PI/coef);
      line(0,0,0,lung);
          if(lung>5){
          drawL(lung/2,false,coef);
     }
    pop();
    
    push();
    
    rotateX(TWO_PI/-coef);
     line(0,0,0,lung);
      if(lung>5){
    
      drawL(lung/2,false,coef);
     }
    pop();
    pop();


    }

    
  

}


}