PVector startPos = new PVector();
PVector endPos = new PVector();
int curTime = 0;
int animSpeed = 25;
int animTime = 2000;
boolean pFlag1=false;
boolean pFlag2=false;
boolean animDir = true;
void setup()
{
size(640, 480);
smooth();
}
void draw()
{
background(51);
// calc. the anim time
if(animDir)
curTime += animSpeed;
else
curTime -= animSpeed;
if(curTime >= animTime)
animDir = false;
else if(curTime <= 0)
animDir = true;
// calc. the current time in the animation
float normTime = curTime * 1.0 / animTime;
if(pFlag1 && pFlag2)
{
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);
}
else if(pFlag1)
{
stroke(255,0,0);
line(startPos.x,startPos.y,
mouseX,mouseY);
}
}
void mousePressed()
{
if(pFlag1 == false)
{
pFlag1 = true;
startPos.set(mouseX,mouseY,0);
}
else if(pFlag2 == false)
{
pFlag2 = true;
endPos.set(mouseX,mouseY,0);
}
else
{
pFlag1 = pFlag2 = false;
}
}
General
Content
Integrations