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.

Lektion 6: Planeten und Kugel

7. November 2010

Aufgabe 6a In dieser Lektion mussten wir zwei Aufgaben lösen. Zum Einen mussten wir zu den drei bestehenden Planeten die Erde hinzufügen. Diese sollte aber freigestellt sein (keine weissen Ränder mehr) und sollte an der Maus hängen / somit verschiebbar sein. Hier schnitt ich zuerst im Photoshop die Erde aus ihrem bestehenden File aus und speicherte es als PNG mit transparentem Hintergrund. Nun baute ich es in den Code ein. Ausgangslage: Meine Lösung: Code:

PImage[] imageList = null;    // variable sauber initialisieren

void setup()
{
size(600,600);      // def. fenstergroesse

imageList = new PImage[4];
imageList[0] = loadImage("./images/1.jpg");
imageList[1] = loadImage("./images/2.jpg");
imageList[2] = loadImage("./images/3.jpg");
imageList[3] = loadImage("./images/4.png");
}

void draw()
{
background(255);

pushMatrix();
translate(10,100);
for(int i=0;i < 3; i++)
{
image(imageList[i],0,0,140,140);
translate(150,0);
}
popMatrix();
image(imageList[3],mouseX -60, mouseY -50,120,120);
}
________________________________________ Aufgabe 6b Dies ist die zweite Aufgabe in dieser Lektion. Wir sollten aus dem bestehenden File (Kugel die einem Pfad folgt, den man mit der Maus zieht). Das Ziel war es, dass wir einen festen Pfad mit zwei Mausklicks bestimmen sollten auf welchem die Kugel hin und her fahren sollte. Diese Aufgabe war nicht sehr einfach. Ich musste mich zuerst mit dem bestehenden Code auseinandersetzen um zu verstehen, wo welche Funktionen programmiert wurden. Schlussendlich hat es dann aber doch geklappt : Hier der Code:

PVector     startPos = new PVector();
PVector     endPos = new PVector();
int         curTime = 0;
int         animSpeed = 10;
int         animTime = 2000;
boolean     drawFlag=false;
boolean     mausklick1=false;  // festgelegte Variable 

void setup()
{
  size(640, 480);
  smooth();
}

void draw()
{
  background(51);

  // calc. the anim time
  curTime += animSpeed;
  if((curTime >= animTime) || (curTime <= 0)) // wenn curTime grösser als animTime ODER curTime kleiner als 0 ist füre dies aus:
  {
     animSpeed = animSpeed * -1;  // wird zum Umdrehen gebraucht
  }
  
  // calc. the current time in the animation
  float normTime = curTime * 1.0 / animTime;

  if(drawFlag)
  {
    stroke(255);
    line(startPos.x,startPos.y,
         endPos.x,endPos.y);

    // calculate the position of the circle on the line
    PVector dir = PVector.sub(endPos,startPos);

    PVector pos = PVector.add( startPos , PVector.mult(dir,normTime));
    ellipse(pos.x,pos.y, 20,20);
  }

}

void mousePressed()
{
  if(mausklick1 == false)  // wird überprüft ob die Maus noch nicht gedrückt wurde
  {
  mausklick1 = true;  // setzt die Variable auf "true"; Maus wurde gedrückt
  drawFlag = true;    // Drawflag fird auf "true" gesetzt;
  curTime = 0;        // curTime wird auf 0 gesetzt
  startPos.set(mouseX,mouseY,0);  // speichert die Koordinaten der Maus
  endPos = startPos.get(); // endPos wird durch startPos ersetzt resp. der Wert übernehmen.
  }
  else {            // wenn mausklick1 bereits "true" ist, wird es hier wieder auf "false" gesetzt
  mausklick1 = false;
  endPos.set(mouseX,mouseY,0);
  }
}