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:
- Der Pfad der Animation soll per Mausklick definiert werden
- Der Ball soll sich vorwärts und rückwarts bewegen
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"); } */