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.

Bilder und Vektoren (Lektion 6 / 21.09.2012)

4. Oktober 2012

Im ersten Teil von Lektion 6 haben wir Bilder (Bitmaps und Vektordateien) importiert und eingesetzt. Im zweiten Teil haben wir mit Vektoren gearbeitet, um Distanz und Winkel besser definieren zu können. Gelerntes: PImage, PShape, PVector... Aufgabe 1: Zeichne einen 4.Planeten(4.jpg) und lass diesen Planeten der Maus folgen. Verändere das Programm und die Daten in der Weise, dass der 4.Planet und nur der 4.Planet dargestellt wird (kein eckiges Bild, sondern nur der Planet). Meine Lösung: das Zentrum des vierten Planeten folgt der Maus.
zip-Datei: codingSpace15

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 < imageList.length -1; i++)
 {
 image(imageList[i],0,0,140,140);
 translate(150,0);
 }
 popMatrix();
 imageMode(CENTER);
 image(imageList[3],mouseX,mouseY,140,140);
 imageMode(CORNER);
}

Aufgabe 2: Veränder das Beispiel nach folgenden Kriterien:
    1. Der Pfad der Animation soll per Mausklick definiert werden
  • Der Ball soll sich vorwärts und rückwarts  bewegen
Meine Lösung: durch erstes Klicken entsteht eine Kugel, durch zweites Klicken bewegt sich diese zwischen den beiden Punkten.
zip-Datei: PVector2

PVector startPos = new PVector();
PVector endPos = new PVector();
int curTime = 0;
int animSpeed = 55;
int animTime = 2000;
boolean drawFlag=false;
boolean click=true;
PVector flip = new PVector();

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

void draw()
{
 background(51);

// calc. the anim time
 curTime += animSpeed;
 if(curTime >= animTime || curTime <= 0)
 {
 animSpeed *= -1;
 }

// 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()
{
 animSpeed = abs(animSpeed);
 drawFlag = true;
 curTime = 0;
 if (click)
 {
 startPos.set(mouseX,mouseY,0);
 endPos = startPos.get();
 click = false;
 }
 else
 {
 endPos.set(mouseX,mouseY,0);
 click = true;
 }
}
/*
void mouseDragged()
{
 endPos.set(mouseX,mouseY,0);
}

void mouseReleased()
{
 drawFlag = false;
 println("released");
}
*/