18. November 2010
Diese Aufgabe bestand einerseits darin einen Vector zu zeichnen, indem man zwei mal mit der Maus auf das Feld klickt und auf dem sich anschliessend eine Kugel hin und her bewegt. Anderseits, als Abänderung des Programms, sollte man mit der Maus auf das Feld klicken, ziehen, die Maus wieder loslassen,sodass man auf diese Weise einen Vector zeichnen kann. Die Kugel wanderet auch hier wieder hin und her.PVector startPos = new PVector(); PVector endPos = new PVector(); int curTime = 0; int animSpeed = 10; int animTime = 2000; boolean drawFlag=false; void setup() { size(640, 480); smooth(); } void draw() { background(51); // calc. the anim time curTime += animSpeed; if(curTime >= animTime || curTime < 0) //curTime = 0; animSpeed=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() { drawFlag = true; curTime = 0; startPos.set(mouseX,mouseY,0); endPos = startPos.get(); } void mouseDragged() { endPos.set(mouseX,mouseY,0); } void mouseReleased() { drawFlag = true; println("released"); }
PVector startPos = new PVector(); PVector endPos = new PVector(); int curTime = 0; int animSpeed = 10; int animTime = 2000; boolean drawFlag=false; boolean secondClick=false; void setup() { size(640, 480); smooth(); } void draw() { background(51); // calc. the anim time curTime += animSpeed; if(curTime >= animTime || curTime < 0) //curTime = 0; animSpeed=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() { if(!secondClick) { startPos.set(mouseX,mouseY,0); secondClick=true; drawFlag = false; } else { endPos.set(mouseX,mouseY,0); secondClick=false; drawFlag = true; } curTime = 0; } /*void mouseDragged() { endPos.set(mouseX,mouseY,0); } void mouseReleased() { drawFlag = true; println("released"); } */