/* tree Created with Processing 68 alpha on Octover 13 , 2004 http://www.harukit.com/ */ float leng; float rad=40; int level=6; float gain=0.545; void setup(){ size(500,500); background(0); stroke(0,255,100,70); leng=height*gain*gain; } void loop(){ background(0); translate(width/2,leng+50,-100); rotateY(radians((mouseX-width/2)*0.6)); rad=mouseY*0.1; line(0,150,0,300); drawLine(rad,leng,level); drawLine(-rad,leng,level); } void keyPressed(){ switch(key){ case '1': level=6; break; case '2': level=7; break; case '3': level=8; break; case '4': level=9; break; case '5': level=10; break; } } void drawLine(float rad,float leng,int level){ push(); translate(0,leng); push(); rotate(radians(rad)); line(0,0,0,-leng); pop(); rotate(radians(-rad)); line(0,0,0,-leng); translate(0,-leng*(1+gain)); level-=1; if(level>1){ drawLine(rad,leng*gain,level); drawLine(-rad,leng*gain,level); } pop(); push(); rotateY(radians(45)); translate(0,leng); push(); rotate(radians(rad)); line(0,0,0,-leng); pop(); rotate(radians(-rad)); line(0,0,0,-leng); translate(0,-leng*(1+gain)); level-=1; if(level>1){ drawLine(rad,leng*gain,level); drawLine(-rad,leng*gain,level); } pop(); push(); rotateY(radians(90)); translate(0,leng); push(); rotate(radians(rad)); line(0,0,0,-leng); pop(); rotate(radians(-rad)); line(0,0,0,-leng); translate(0,-leng*(1+gain)); level-=1; if(level>1){ drawLine(rad,leng*gain,level); drawLine(-rad,leng*gain,level); } pop(); push(); rotateY(radians(135)); translate(0,leng); push(); rotate(radians(rad)); line(0,0,0,-leng); pop(); rotate(radians(-rad)); line(0,0,0,-leng); translate(0,-leng*(1+gain)); level-=1; if(level>1){ drawLine(rad,leng*gain,level); drawLine(-rad,leng*gain,level); } pop(); }