21. September 2012
Heute ging es im speziellen um Bedingungen und Schleifen. Die Theorie dazu habe ich eigentlich gut verstanden. Beim versuch diese dann umzusetzen habe ich schnell mal meine Grenzen gesehen. Es ist für mich im Moment schwierig das gelernte innerhalb der kurzen Zeit und ohne zu verdauen, schnell umzusetzen. Ich muss immer wieder zu den ersten Lektionen zurückkehren um gewisse Sachen besser zu verstehen. Wie ich schon geschrieben habe, ist vieles für mich Neuland und braucht viel Aufmerksamkeit. Teilweise komme ich nur mit Hilfe von Max oder anderer Mitstudenten weiter. Aber ist ja auch Teamwork gefragt. Ich habe im Moment ein bisschen Chaos mit dem Code, daher bin ich nicht so schnell wie ich mir das wünsche. Die Aufgabe heute bestand darin ein Ornament zu kreieren welches sich anschliessend kacheln lässt. Zuerst habe ich mit etwas simplen angefangen. welches ich auch recht schnell gestaltet hatte. Code:void setup() { size(600,600); // def. fenstergroesse smooth(); // aktiviere antialiasing strokeWeight(15); // linienbreite } void draw() { background(255); // def. hintergrundfarbe for(int x = 0; x <= width; x+=30) { for(int y = 0; y <= height; y+=30) { pushMatrix(); translate(x,y); scale(.05); ornament(); // funtions aufruf popMatrix(); } } } void ornament() { smooth(); // aktiviere antialiasing strokeWeight(5); // linienbreite strokeJoin(ROUND); noFill(); stroke(20,120,150,100); // kreis oben ellipse(300,150,200,255); stroke(20,120,150,100); // def. zeichenfarbe ellipse(450,300,200,255); stroke(20,120,150,100); // def. zeichenfarbe ellipse(150,300,200,255); stroke(20,120,150,100); // def. zeichenfarbe ellipse(300,450,200,200); stroke(0,0,0); // def. zeichenfarbe beginShape(); vertex(0,0); vertex(600,600); endShape(); beginShape(); vertex(0,600); vertex(600,0); endShape(); pushStyle(); fill(random(0,125),195,random(0,255),100); stroke(0,0,0); arc(300,0,595,92,radians(0),radians(180)); stroke(0,0,0); arc(600,300,92,595,radians(90),radians(270)); stroke(0,0,0); arc(300,600,595,92,radians(180),radians(360)); stroke(0,0,0); arc(0,300,92,595,radians(270),radians(450)); popStyle(); }Als zweites wollte ich ein Kreisornament, welches sich selbst aufbaut. Ich habe einen ersten Teil geschafft. Die Idee war das der Kreis bis zur Hälfte immer grösser wird und ab der Hälfte kleiner. Ich habe den Code so umgeschrieben das es klappen sollte. Leider funktionierte es nicht. Es stellte sich heraus das eine Bedingung falsch war und daher nicht gezeichnet wurde. Meine Überlegungen an sich waren richtig. Max zeigt mir aber einen eleganteren und einfacheren Weg wie dies bewerkstelligt werden kann mit "IF". So habe ich wieder dazugelernt dass es verschiedene Wege gibt. Es stellt sich einfach die Frage was am effizientesten und elegantesten ist. hier das Resultat. Code:
void setup() { size(600,600); // def. fenstergroesse smooth(); // aktiviere antialiasing strokeWeight(15); // linienbreite } int b = 40; void draw() { background (0,235,90); stroke(0); int dH = 10; for(int x =0; x <= width; x= x + dH) { for(int y = 25; y < height; y+=60) { pushMatrix(); translate(x,y); ornament(dH,40); // funtions aufruf popMatrix(); } if(x < width /2) { dH += 2; } else { dH -= 2; } } } void ornament(int kreisRadiusX,int kreisRadiusY) { smooth(); // aktiviere antialiasing strokeWeight(5); // linienbreite strokeJoin(ROUND); noFill(); stroke(random(0,200),120,150,200); // kreis oben ellipse(0,0,kreisRadiusX,kreisRadiusY); }Ich merke, dass ich viel investieren muss um in kurzer Zeit so viel zu verarbeiten. Die Lernkurve ist ein bisschen am schwanken. Manche Sachen gehen schnell und bei machen stehe ich an. Es ist aber schön zu merken, dass alle hilfsbereit sind und man einander versucht zu helfen. Der Spass ist mir geblieben aber es gibt Momente in welchen ich gewisse resignative Tendenzen habe ;-). Ich freue mich auf Tag 3. Mal schauen was dieser bringt.