Berechnung von Animationen

renwal

Aktives Mitglied
Hallo,

ich bräuchte mal eure Hilfe, und zwar bei folgendem Problem: Ich möchte eine Animation einer Komponente entlang einer Linie ausführen, von der ich nur zwei Punkte p1 und p2 kenne. Diese Linie kann in jedem beliebigen Winkel zur Horizontalen liegen.
Wenn ich mich jetzt aber an der x-Achse orientiere und, vereinfacht gesagt, einfach immer x++ mache und dann mit
Java:
double y = x * (p2.getY() - p1.getY()) / (p2.getX() - p1.getX());
y berechne, wird die Animation immer ruckeliger, je höher die Steigung der Strecke ist, wenn ich die Animationsgeschwindigkeit einhalten will, denn von Start bis Ziel habe ich dann weniger Punkte auf der x-Achse. Wenn ich von der y-Achse ausgehe, dann ist es anders herum.
Also dachte ich mir, dass ich die größte Genauigkeit erhalte, wenn ich an der Strecke selbst entlang gehe und dann die x- und y-Werte dazu ermittele. Jetzt fehlt mir aber jede Idee, wie ich das angehen könnte. Hat irgendjemand einen Vorschlag für mich, wie ich das angehen könnte?
 

Michael...

Top Contributor
Eine Bewegung ist konstant wenn pro Zeiteinheit die selbe Entfernung zurückgelegt wird. Also nix mit x++ oder y++ pro Schritt, die Komponente muss sich ja konstant entlang der Linie bewegen und nicht entlang der Achsen.

Ein paar der vielen Möglichkeiten:

Wenn man die Geschwindigkeit oder Schrittweite vorgibt, kann man ja bestimmen wie weit sich das Objekt nach einer bestimmten Zeit oder Anzahl von Schritten, vom Ursprung der Linie entfernt hat. Bei einer winklig angeordneten Linie kann man mittels Sinus oder Kosinus den x-Wert bzw. y-Wert der Koordinate bestimmen.

Oder man nimmt Steigung der Linie als Vektor bestimmt daraus den Einheitsvektor und multipliziert diesem mit den zurückgelegten "Schritten" und erhält so die Koordinate.
 

Marco13

Top Contributor
Jup, kurz: "Mit Mathe".

Nur schnell hingehackt:
Java:
Point2D p0 = startpunkt
Point2D p1 = endpunkt

int steps = 10;
double dx = (p1.getX()-p0.getX())/steps;
double dy = (p1.getY()-p0.getY())/steps;
for (int i=0; i<=steps; i++)
{
    double x = p0.getX() + i * dx;
    double y = p0.getY() + i * dy;
    
    // ....

}
 

renwal

Aktives Mitglied
Das Codebeispiel klingt ganz gut, die Sache mit Sinus, etc. ist für mich ein wenig unverständlich, das haben wir in der Schule noch nicht gemacht. dx und dy sind dann wohl Δx und Δy.

Was meine Klasse ComplexAnimation.java (ich habe auch eine SimpleAnimation.java, die kann nur horizontal oder vertikal) jetzt als Eingabe bekommt, ist eine Komponente, die bewegt wird, die beiden Punkte und eine Zeitvorgabe, in der die Animation abläuft sowie die Anzahl an Frames/Sekunde.
Die Variable steps muss ich dann auf den aus Zeit/fps errechneten Wert Millisekunden pro Frame setzen, oder?
 

renwal

Aktives Mitglied
Hm, ich hänge gerade mit dem Point2D fest. Da es sich dabei ja um eine abstrakte Klasse handelt, weiß ich gerade nicht wirklich, wie ich ein solches Objekt erzeugen soll. Ist folgendes korrekt?

Java:
Point2D p = new Point(x,y);

EDIT: Oder das hier?

Java:
Point2D p = new Point2D.Double(x,y);
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
H JTabel - RowFilter Daten für Berechnung filtern AWT, Swing, JavaFX & SWT 6
S Event Handling Neu zeichnen nur wenn Berechnung fertig ist AWT, Swing, JavaFX & SWT 4
M Graphics2D: drawString Berechnung AWT, Swing, JavaFX & SWT 1
D Swing Bestimmte Berechnung von Spalten durchführen und dann die Zeilen nach bestimmten Kriterien einfärben AWT, Swing, JavaFX & SWT 5
B ProgressBar während Berechnung AWT, Swing, JavaFX & SWT 4
E Buttons während einer Berechnung deaktivieren AWT, Swing, JavaFX & SWT 6
S Berechnung abbrechen mit Button AWT, Swing, JavaFX & SWT 6
P Berechnung Kurvendiskussion AWT, Swing, JavaFX & SWT 6
S int-berechnung des RGB-Wertes ohne neue Instanz? AWT, Swing, JavaFX & SWT 9
G Status der Berechnung per JProgress anzeigen lassen AWT, Swing, JavaFX & SWT 6
W Können Animationen in JavaFX "verschluckt" werden? AWT, Swing, JavaFX & SWT 8
T Timer und GIF Animationen pausieren während Maus sich bewegt AWT, Swing, JavaFX & SWT 4
A JavaFX Zeitversetzte Animationen AWT, Swing, JavaFX & SWT 3
H Gif Animationen zentrieren AWT, Swing, JavaFX & SWT 9
Maxim6394 Java 3d - Animationen importen AWT, Swing, JavaFX & SWT 6
Weiti Swing Animationen - Drehung aller Komponenten auf Knopfdruck AWT, Swing, JavaFX & SWT 12
J Balkendiagramm und Gif animationen AWT, Swing, JavaFX & SWT 4
J 3D-Animationen in Swing-Fenster AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben