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…
, multiple selections available,