/** Draw a fractal tree. */ import javax.media.opengl.*; import javax.media.opengl.glu.*; public class FractalTree{ public static void tree(GL gl, int level){ //draw trunk GLU glu = new GLU(); GLUquadric qobj = glu.gluNewQuadric(); glu.gluQuadricDrawStyle(qobj, GLU.GLU_FILL); glu.gluQuadricTexture(qobj, true); gl.glPushMatrix(); gl.glRotated(-90,1,0,0); glu.gluCylinder(qobj, 0.4, 0.2, 5.0, 8, 4); gl.glPopMatrix(); if (level<=0) return; //draw limbs gl.glPushMatrix(); gl.glTranslated(0,1,0); gl.glRotated(40,0,0,1); gl.glScaled(0.5,0.5,0.5); tree(gl, level - 1); gl.glPopMatrix(); gl.glPushMatrix(); gl.glTranslated(0,2,0); gl.glRotated(30,1,0,0); gl.glScaled(0.5,0.5,0.5); tree(gl, level - 1); gl.glPopMatrix(); gl.glPushMatrix(); gl.glTranslated(0,3,0); gl.glRotated(-25,0,0,1); gl.glScaled(0.5,0.5,0.5); tree(gl, level - 1); gl.glPopMatrix(); gl.glPushMatrix(); gl.glTranslated(0,4,0); gl.glRotated(-20,1,0,0); gl.glScaled(0.5,0.5,0.5); tree(gl, level - 1); gl.glPopMatrix(); gl.glPushMatrix(); gl.glTranslated(0,5,0); gl.glScaled(0.5,0.5,0.5); tree(gl, level - 1); gl.glPopMatrix(); } }