Willkommen auf unserem Seminar-Blog

Immer auf dem aktuellen Stand bleiben

Dieser Seminar-Blog befindet sich noch im Aufbau und wird in den kommenden Tagen entsprechend verfeinert.

Member Login

Lost your password?

Registration is closed

Sorry, you are not allowed to register by yourself on this site!

You must either be invited by one of our team member or request an invitation by email at viad.info {at} zhdk {dot} ch.

lineare Wolken / Fraktale (Lektion 5 / 21.09.2012)

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: fractal3

void 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();
 }
}