Ich möchte eine ausgefallene Animation erstellen, bei der sich ein Punkt um ein Rechteck bewegt. Ich möchte die Position des Punktes zu einem Zeitpunkt finden t
.
Das Rechteck ist gegeben durch X
, Y
, Width
und Height
.
Gibt es dafür einen Algorithmus?
Ich habe sin
/ cos
für Kreise verwendet. Was ist der äquivalente Ansatz für Rechtecke?
animation
geometry
interpolation
Raildex
quelle
quelle
Antworten:
Ich gehe davon aus, dass Ihr t von 0 auf 1 geht . (Wenn nicht, multiplizieren Sie einfach, um es entsprechend zu skalieren.)
Finden Sie heraus, welcher Anteil ( 0 - 1 ) jede Seite am Umfang hat. ( Seitenlänge / Gesamtumfang )
Um herauszufinden, wie viel von jeder Seite zum Zeitpunkt t „ausgefüllt“ ist , durchlaufen Sie die Seiten und subtrahieren ihre Proportionen, bis t auf einen negativen Wert abgereichert ist. Diese letzte Kante (die dazu führte, dass t negativ wurde) wird mit einem Anteil von (Seitenlänge + verbleibende) / Seitenlänge gefüllt . Der Rest ist nicht gefüllt.
Um die genaue Vektorposition bei t zu erhalten , multiplizieren Sie den Vektor jeder Seite mit dem Anteil der gefüllten Seite und addieren Sie sie.
Dies funktioniert tatsächlich für jedes Polygon!
quelle
Der Sinus und der Cosinus von t sind jeweils die y- und x-Koordinate eines Punktes auf dem Kreis, der mit der x-Achse einen Winkel t bildet. Keine Notwendigkeit dafür in einem Rechteck! Ein Rechteck besteht aus vier Linien. Wenn
t
aus geht erreichen sie den Punkt an und auf der Linie gegeben durch:0
1
(px,py)
t==0
(qx,qy)
t==1
Wenn anstelle von
0
und die1
Zeit vont0
bist1
abläuft, können Sie zuerst die Zeit normalisieren und dann die obige Formel anwenden.Teilen Sie nun für Ihr Rechteck in vier Fälle mit einem
if
für jede Kante, die einen Zeitraum abdeckt, und wenden Sie eine Linienbewegung an.Beachten Sie, dass Sie immer entweder den x-Wert oder den y-Wert haben, wenn Ihr Rechteck achsenausgerichtet ist. Zum Beispiel für t zwischen
0
unda/4
(und angenommen (X, Y) ist unten links),Welches ist auch gleich:
quelle
Ich weiß nicht, ob es dafür einen tatsächlichen Algorithmus gibt, aber ich habe selbst einen erstellt (Java):
Sie sollten die Variablen
x
und transformiereny
, um Ihre Animation so groß oder klein zu machen, wie Sie möchten (durch Multiplizieren) und wo Sie möchten (Hinzufügen zu / Subtrahieren von x und y).Ich habe diesen Code nicht getestet, aber ich denke, er sollte funktionieren. Dies sollte auch für jedes Polygon mit einer beliebigen Anzahl von Punkten funktionieren (Sie können auch einen Teil des Codes zum Generieren des Polygons verwenden).
quelle
Gegeben :
Gegebene Zeit,
T1
wie manP
auf den Umfang kommt (unter der Annahme einer richtigen Position bei 0,0)?jetzt einige einfache primäre Schulgeometrie und Mathematik (die hoffen, dass Sie mich verschonen) zu erhalten
P.x
undP.y
vondistT1
quelle