Atlassian uses cookies to improve your browsing experience, perform analytics and research, and conduct advertising. Accept all cookies to indicate that you agree to our use of cookies on your device. Atlassian cookies and tracking notice, (opens new window)
Confluence
For you

Programming
Results will update as you type.
  • Tiling and Repetition
  • Reactors
  • Programming Basics: Parametric and Generative Graphic Design 2016
  • Archive
    • End Exercise 2014
    • End Exercise 2015
    • Ext. Lektion 1 (Force Fields)
    • Ext.Lektionen 2 (Rekursive Funktionen / Fraktale)
    • How Computers Think
    • End Exercise 2016 - Asteroids
  • High Scores
  • Artificial Neural Network
  • Alternatives to the Processing IDE
  • p5.js Programming
  • Programming in Processing (java)

/
Ext.Lektionen 2 (Rekursive Funktionen / Fraktale)

Ext.Lektionen 2 (Rekursive Funktionen / Fraktale)

Oct 19, 2015

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…

 

 

, multiple selections available,
{"serverDuration": 11, "requestCorrelationId": "f0024944b60146d19698bde549ba2612"}