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.

Tag 2 – Ornamente

20. September 2012

Programming Basics, Tag 2 Übung, Ornamente zeichnen Das heutige Thema war Schleifen und Bedingungen. Die Theorie hörte sich noch einigermassen verständlich an. Als ich aber dann mit Hilfe von dieser Ornamente bauen sollte, hatte ich so meine Schwierigkeiten. Ich habe zuerst mit den Parametern rum gespielt und verschiedene Sachen ausprobiert. Unten habe ich davon einen Screenshot angehängt. Am Nachmittag hatte es aber plötzlich klick gemacht und ich konnte mein  abgeändertes Ornament bauen. Der eigentliche Auftrag  war es ein klassisches Ornamente zu bauen. Ich begann auch mit kreisen eine Fläche zu decken. Plötzlich sahen diese wie Uhren aus. Darum habe ich in die Ornamente Zeiger eingebaut. Jede dieser Uhren zeigt eine andere Zeit an. Der Hintergrund meiner Uhr ist im Ornamenten Stiel gemacht. Der Minuten- und Stundenzeiger bewegen sich von Uhr zu Uhr immer weiter. In der Mitte ist eine grosse Uhr zu sehen die auf den Mauszeiger reagiert. Das heisst, je nach dem wie nah der Mauszeiger ist, umso mehr kann der User die Uhrzeit verändern. Screenshots:                Hier der Code:

int winkel = 0; //Winkel Variable definiert

void setup()
{
 frameRate(60); //frames per second
 size (600,600); //Fläche
 smooth(); //antialiasing
 strokeWeight(15); //linienbreite
}

void draw()
{
 background(0,0,0); //BG Colour
 int winkel1 = 0;
 for(int x = 0; x <= width; x+=60) //For Schleife damit die Figur um 60 nach rechts gezählt wird
 {
 for(int y = 0; y <= height; y+=60) //For Schleife damit die Figuer 60 nach unten verschoben wird
 {
 stroke(0); //Strichfarbe schwarz
 pushMatrix(); //damit der Normalzustand von der Fläche wieder hergestellt wird
 translate(x,y); //Verschiebe die Figur mit den Werten x und y die in der Schleife definiert wurden
 scale(.4); // mit Scale rechne ich die Figur * 0.4
 kreis(); // funktionsaufruf von der Funktion kreis

 winkel1 = winkel1 + 1; //der winkel1 wird definiert
 rotate (radians(winkel1));
 zeiger(); //funktionsaufruf von zeiger

 winkel1 = winkel1 + 20; //Ich sage das der Winkel + 20 zählen soll
 rotate (radians(winkel1)); // ich weise der Rotation den winkel zu
 zeiger2(); // funktionsaufruf von zeiger 2

 popMatrix(); //schliesse die aufgerufenen Daten von pushMatrix ab
 }
 }
 float radius = dist(mouseX,mouseY,width/2,height/2); // rechne die distanz vom mousecursor zum fensterzentrum aus
 radius = map(radius,0,width,1,2); // rechne aus in welchem bereich der radius am schluss sein sollte

 translate (300,300);
 strokeWeight(5);
 kreis();

 rotate(calcAngle());
 winkel = winkel + 1;
 rotate (radians(winkel));
 zeiger(); //funktionsaufruf von zeiger

 winkel = winkel + 5; //Ich sage das der Winkel + 20 zählen soll
 rotate (radians(winkel)); // ich weise der Rotation den winkel zu
 zeiger2(); // funktionsaufruf von zeiger 2
 strokeWeight(15); //Stroke sträke wieder hergestellt

}

//Funktionen

void kreis()
{
 fill (random(230,255),0,0); //Ein Random soll die Farben zwischen 240 und 255 von rot wechseln
 ellipse(0,0,200,200); //Ein Kreis mit einer Höhe von 200 und einer Breite von 200 mit x und y am 0 Punkt
 fill(255,250); // Füllfarbe ist 255 = weiss und eine Transparänz von 200
 ellipse(0,0,100,100); // Der Kreis befindet sich an der 0 Stelle
}

void zeiger()
{
 fill (0);
 line (0,0,20,20);
}

void zeiger2()
{
 fill(0,0,0,80);
 line(0,0,-20,20);
}

// berechne den winkel zur fenstermitter vom mausecursor aus
// die winkel sind in radiant
float calcAngle()
{
 return -atan2(mouseX - (width / 2),mouseY - (height / 2));
}