24. September 2013
Aufgabe war ein Programm zu schreiben in dem ein Smiley dem Mauszeiger folgt. Dazu soll ein kleineres Smiley um das Grössere in einer Umlaufbahn kreisen.
int Winkel = 0;
void setup()
{
size(400,400); // def. fenstergroesse
smooth(); // aktiviere antialiasing
strokeWeight(15); // linienbreite
}
void draw()
{
background(255); // def. hintergrundfarbe
float radius = dist(mouseX,mouseY,width/2,height/2); // rechne die distanz vom mousecursor zum fensterzentrum aus
radius = map(radius,0,width,1,4); // rechne aus in welchem bereich der radius am schluss sein sollte
pushMatrix();
translate(mouseX,mouseY);
// rotate(calcAngle());
scale(radius);
smiley(); // funtions aufruf
pushMatrix();
rotate(radians(Winkel));
translate(width/4,height/4);
scale(.2);
smiley(); // funtions aufruf
popMatrix();
popMatrix();
Winkel = Winkel + 1;
}
// funktion
void smiley()
{
noFill();
ellipse(0,0,180,180); // kopf
fill(0);
ellipse(0 - 30,0 - 30,20,20); // linkes augen
ellipse(0 + 30,0 - 30,20,20); // rechtes augen
noFill();
arc(0,0,100,100,radians(20),radians(180-20)); // mund
}
// berechne den winkel zur fenstermitter vom mausecursor aus
// die winkel sind in radiant
float calcAngle()
{
return -atan2(mouseX - (width / 2),mouseY - (height / 2));
}
[
]