4. Oktober 2012
Um Fraktale zu erstellen haben wir in dieser Lektion rekursive Funktionen behandelt. Die Aufgabe (die Funktion grafisch zu modifizieren) war eher simpel, den Code aber wirklich zu verstehen war eine grössere Herausforderung. Hier war hilfreich den Code Zeile für Zeile durchzugehen, um festzustellen, dass zuerst ein Ast bis in die Spitze gezeichnet wird, und erst dann zum nächsten Ast springt. Gelerntes: random, pushStyle/popStyle, eigene Funktionen erstellen und abrufen Aufgabe: Verändere das Beispiel, mach andere Äste, Blüten, etc… Meine Lösung: Durch klicken im Bild wird neu gezeichnet. Die Äste starten in der Mitte und bewegen sich immer im rechten Winkel. Aus den feinen Linien entstehen dunkle Wolken mit kleinen farbigen Punkten.zip-Datei: fractal3void setup() { size(800,800); // def. fenstergroesse randomSeed(millis()); // seed random smooth(); // aktiviere antialiasing // strokeWeight(5); // linienbreite stroke(0,0,0,150); noLoop(); } // int rdm50; void draw() { background(255); pushMatrix(); translate(width/2, height/2); wurzel(9); popMatrix(); } void mousePressed() { redraw(); } // funktion void wurzel(int tiefe) { if(tiefe <=0) // teste ob das ende erreicht worden ist { // zeichen blueten pushStyle(); int clrR = (int)random(100,255); int clrG = (int)random(100,255); int clrB = (int)random(100,255); noStroke(); // stroke(clr,150,150,190); fill(clrR,clrG,clrB,190); ellipse(0,0,10,10); popStyle(); return; } // zeichne zweige int x = 0; int y = 0; int count = (int)random(1,7); for(int i = 0; i < count;i++) { // rdm50 = (int)(random(0,1)+.5); if(x == 0) { x = (int)random(-200,200); } else { x = 0; } if(x == 0) { y = (int)random(-200,200); } else { y = 0; } pushStyle(); int clrR = (int)random(100,255); int clrG = (int)random(100,255); int clrB = (int)random(100,255); // noStroke(); stroke(0); // fill(clrR,clrG,clrB,190); line(0,0,x,y); // ellipse(0,0,20,20); popStyle(); pushMatrix(); translate(x,y); scale(random(.5,1)); wurzel(tiefe-1); popMatrix(); } }