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.

Smileys – Der Moond kreist um den Smiley

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