topical media & game development

talk show tell print

graphic-processing-site-examples-Topics-Fractals-and-L-Systems-Pentigree-PentigreeLSystem.pde / pde



  class PentigreeLSystem extends LSystem {
  
    int steps = 0;
    float somestep = 0.1;
    float xoff = 0.01;
  
    PentigreeLSystem() {
      axiom = "F-F-F-F-F";
      rule = "F-F++F+F-F-F";
      startLength = 60.0;
      theta = radians(72);  
      reset();
    }
  
    void useRule(String r_) {
      rule = r_;
    }
  
    void useAxiom(String a_) {
      axiom = a_;
    }
  
    void useLength(float l_) {
      startLength = l_;
    }
  
    void useTheta(float t_) {
      theta = radians(t_);
    }
  
    void reset() {
      production = axiom;
      drawLength = startLength;
      generations = 0;
    }
  
    int getAge() {
      return generations;
    }
  
    void render() {
      translate(width/4, height/2);
      steps += 3;          
      if (steps > production.length()) {
        steps = production.length();
      }
  
      for (int i = 0; i < steps; i++) {
        char step = production.charAt(i);
        if (step == 'F') {
          noFill();
          stroke(255);
          line(0, 0, 0, -drawLength);
          translate(0, -drawLength);
        } 
        else if (step == '+') {
          rotate(theta);
        } 
        else if (step == '-') {
          rotate(-theta);
        } 
        else if (step == '[') {
          pushMatrix();
        } 
        else if (step == ']') {
          popMatrix();
        }
      }
    }
  
  }
  


(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.