9. November 2010
Konzept Ein kleiner Smiley soll um einen grossen Smiley kreisen... Ich habe den kleinen Smiley in der Matrix versetzt gezeichnet damit sich der kleine Smiley sich nicht um seine eigene Axe dreht... Anschliessend habe ich die Achse der Matrix verschoben und die Matrix rotieren lassen... et Voilà:float moonAngle = 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(200,200); rotate(calcAngle()); scale(0.9); smiley(0, 0); // funtions aufruf popMatrix(); pushMatrix(); translate(200,200); scale(.2); rotate(moonAngle*0.1 + calcAngle()); moonAngle++; smiley(400, 400); // funtions aufruf popMatrix(); } // funktion void smiley(float offsetX, float offsetY) { noFill(); ellipse(0+offsetX,0+offsetY,180,180); // kopf fill(0); ellipse(0 - 30 + offsetX,0 - 30 + offsetY,20,20); // linkes augen ellipse(0 + 30 + offsetX,0 - 30 + offsetY,20,20); // rechtes augen noFill(); arc(0+offsetX,0+offsetY,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)); }