Ext.Lektionen 2 (Rekursive Funktionen / Fraktale)

Rekursive Funktionen / Fraktale

In diesem Bespiel nutzen wir Rekursive-Funktionen und Zufallszahlen.
Eine Rekursive-Funktion ist eine Funktion die sich selbst wieder aufruft. Die Nutzung von Rekursion kann für verschiedene Probleme verwendet werden, wie z.B.

  • Suchen von Files durch die File-Hierarchie
  • Zeichnen von fraktalen Objekten

Bei Rekursionen muss man speziell auf die Abbruchbedingung achten, sonst führt dies schnell zu Endlosschleifen.

void setup()
{
  size(600,600);      // def. fenstergroesse
 
  randomSeed(millis());  // seed random
 
  smooth();           // aktiviere antialiasing
  strokeWeight(5);    // linienbreite
  stroke(0,0,0,150);
 
  noLoop();
}
 
void draw()
{
  background(255);
 
  pushMatrix();
    translate(width *.5,height - 20);
    wurzel(7);
  popMatrix();
}
 
void mousePressed()
{
   redraw();
}
 
// funktion
void wurzel(int tiefe)
{
   if(tiefe <= 0)    // teste ob das ende erreicht worden ist
   {
     // zeichen blueten
     pushStyle();
       int clr = (int)random(100,255);
       stroke(clr,0,0,190);
       fill(clr,0,0,190);
       ellipse(0,0,50,50);
     popStyle();
 
     return;
   }
 
  // zeichne zweige
  int x;
  int y;
  int count = (int)random(1,8);
  for(int i = 0; i < count;i++)
  {
    x = (int)random(-100,100);
    y = -(int)random(10,150);
 
    line(0,0,x,y);
 
    pushMatrix();
      translate(x,y);
      scale(random(.3,.95));
      wurzel(tiefe-1);
     popMatrix();
  }
}

Aufgabe:

  • Verändere das Beispiel, mach andere Äste, Blüten, etc…