Ich benutze die Funktion lerp(), um meinen Kreis über eine Linie zu bewegen, aber es funktioniert nicht. Der Kreis endet immer irgendwo auf der Linie, abhängig davon, was mein amt-Parameter für die Funktion lerp() ist. Wenn ich 0,5 für das Amt setze, wird der Kreis auf halber Strecke der Linie platziert, aber ich kann weder sehen, dass er sich bewegt, noch dass der Kreis sich über die Länge des Kreises bewegt. Kann mir also jemand helfen, den Kreis entlang der Linie zu bewegen?Animieren von Kreisen über die Linie
float x1,y1,x2,y2;
float cx,cy;
float x4,y4;
void setup() {
size(600,600);
x1 = 200;
y1 = 150;
x2 = 300;
y2 = 250;
cx = 450;
cy = 200;
}
void draw() {
background(60);
stroke(220);
line(x1,y1,x2,y2);
noFill();
noStroke();
// calculate the point
float k = ((y2-y1) * (cx-x1) - (x2-x1) * (cy-y1))
/((y2-y1)*(y2-y1) + (x2-x1)*(x2-x1));
float x4 = cx - k * (y2-y1);
float y4 = cy + k * (x2-x1);
stroke(0);
line(cx,cy,x4,y4); //line connecting circle and point on line
float x = lerp(cx, x4, .1);
float y = lerp(cy, y4, .1);
fill(255, 0, 175);
ellipse(x4,y4, 8,8);
fill(175, 0, 255);
ellipse(x, y, 50, 50);
}
Ich bin mir nicht sicher, Ihre Frage zu verstehen, aber bin ich richtig, dass Sie den Kreis entlang der schwarzen Linie animieren möchten? Ist dies der Fall, müssen Sie den Wert für den Parameter amt in der Zeichenfunktion ändern. Verwenden Sie einfach eine Variable dafür mit Inkrementen jeder Iteration. – michaPau
Danke! Ich habe es zur Arbeit gebracht! –