topical media & game development

talk show tell print

#javascript-processing-example-basic-structure-recursion2.htm / htm



  <!DOCTYPE html>
  <html><head>
  <script src="javascript-processing-example-processing.js"></script>
  <script src="javascript-processing-example-init.js"></script>
  <link rel="stylesheet" href="javascript-processing-example-style.css">
  </head><body><h1><a href="http://ejohn.org/blog/processingjs/">Processing.js</a></h1>
  <h2>Recursion2</h2>
  
  <p>A demonstration of recursion, which means functions call themselves. 
  Notice how the drawCircle() function calls itself at the end of its block. 
  It continues to do this until the variable "level" is equal to 1.</p>
  
  <p><a href="http://processing.org/learning/basics/recursion2.html"><b>Original Processing.org Example:</b> Recursion2</a><br>
  <script type="application/processing">
  void setup() 
  {
    size(200, 200);
    noStroke();
    smooth();
    drawCircle(100, 100, 80, 8);
  }
  
  void drawCircle(float x, float y, int radius, int level) 
  {                    
    float tt = 126 * level/6.0;
    fill(tt, 153);
    ellipse(x, y, radius*2, radius*2);      
    if(level > 1) {
      level = level - 1;
      int num = int(random(2, 6));
      for(int i=0; i<num; i++) {
        float a = random(0, TWO_PI);
        float nx = x + cos(a) * 6.0 * level;
        float ny = y + sin(a) * 6.0 * level;
        drawCircle(nx, ny, radius/2, level);
      }
    }
  }
  </script><canvas width="200" height="200"></canvas></p>
  <div style="overflow: hidden; height: 0px; width: 0px;"></div>
  
  <pre><b>// All Examples Written by <a href="http://reas.com/">Casey Reas</a> and <a href="http://benfry.com/">Ben Fry</a>
  // unless otherwise stated.</b>
  void setup() 
  {
    size(200, 200);
    noStroke();
    smooth();
    drawCircle(100, 100, 80, 8);
  }
  
  void drawCircle(float x, float y, int radius, int level) 
  {                    
    float tt = 126 * level/6.0;
    fill(tt, 153);
    ellipse(x, y, radius*2, radius*2);      
    if(level &gt; 1) {
      level = level - 1;
      int num = int(random(2, 6));
      for(int i=0; i&lt;num; i++) {
        float a = random(0, TWO_PI);
        float nx = x + cos(a) * 6.0 * level;
        float ny = y + sin(a) * 6.0 * level;
        drawCircle(nx, ny, radius/2, level);
      }
    }
  }</pre>
  </body></html>
  


(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.