24. September 2013
Von einem Code ausgehend sollte eine Linie per Mausklick gezeichnet werden. Ein Ball bewegt sich auf der Linie, wobei wir das Beispiel so anpassen sollten, dass er sich vorwärts und rückwärts auf der Linie bewegt.
PVector startPos = new PVector();
PVector endPos = new PVector();
int curTime = 0;
int animSpeed = 50;
int animTime = 2000;
boolean drawFlag=false;
int click_number = 0;
void setup()
{
size(640, 480);
smooth();
}
void draw()
{
background(51);
curTime += animSpeed; // Definition der aktuellen Position
float normTime = curTime * 1.0 / animTime;
if(drawFlag)
{
stroke(255);
line(startPos.x,startPos.y,
endPos.x,endPos.y);
PVector dir = PVector.sub(endPos,startPos); // calculate the position of the circle on the line
PVector pos = PVector.add( startPos , PVector.mult(dir,(sin(normTime)+1)/2));
ellipse(pos.x,pos.y, 20,20);
}
}
void mouseClicked()
{
click_number += 1;
if (drawFlag = true
&& click_number % 2 == 1) // falls Klickrate ungerade
{
println("start");
curTime = 0;
startPos.set(mouseX,mouseY);
endPos = startPos.get();
}
else if (drawFlag = true
&& click_number % 2 == 0) // falls Klickrate gerade
{
println("end");
curTime = 1;
//endPos = startPos.get();
endPos.set(mouseX,mouseY);
}
}
</code>