Animation 2
PVector startPos = new PVector(); PVector endPos = new PVector(); int curTime = 0; int animSpeed = 5; int animDuration = 2000; boolean drawFlag=false; void setup() { size(640, 480); smooth(); } void draw() { background(51); // calc. the anim time curTime += animSpeed; if(curTime >= animDuration) { curTime = 0; } // calc. the proportion of completion in the animation float normTime = curTime * 1.0 / animDuration; 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 = false; println("released"); }
Exercise 11
Modified the example to do the following:
- The start and end point of the the animation path is to be defined by mouse click
- The ellipse should move forward and backwards endlessly