Objekt entlang eines Pfad

hallo,

Wie kann ich in Java ein Objekt entlang eines Pfades laufen lassen ?
Beispiel: ich hab 5 Punkte und der soll alle Punkte abfahren in festgelegter Geschwindigkeit. Die Fahrt soll nicht Feld zu Feld sein sondern es müssen zwischen Positionen berechnet werden damit die Animation flüßig läuft.
Wie könnte man so etwas umsetzen ?

mfg
Bluescreen

Moien

Wie kann ich in Java ein Objekt entlang eines Pfades laufen
lassen ?

Gegenfrage: Wie gut kannst du mit AWT und java.awt.Canvas umgehen ?

Beispiel: ich hab 5 Punkte und der soll alle Punkte abfahren
in festgelegter Geschwindigkeit. Die Fahrt soll nicht Feld zu
Feld sein sondern es müssen zwischen Positionen berechnet
werden damit die Animation flüßig läuft.
Wie könnte man so etwas umsetzen ?

Zuerst braucht man Interpolatoren zwischen den Punkten. Die baut man selbst (x_aktuell = (x_start * (1-prozent)) + (prozent * x_stop)) oder man kuckt in java.awt.geom nach.

Die prozent macht man abhängig von der Zeit: also Zeit die seitdem Start vergangen ist und Zeit die die Animation dauern soll. (System.currentTimeMills…)

Dann braucht man einen Thread der von Zeit zu Zeit repaint() (oder wenn man’s ein bisschen hacken will paint()) aufruft.

Und nun braucht man noch einen Stück Code der das Objekt in abhängigkeit von prozent (also der Zeit) zeichen kann.

cu

Gegenfrage: Wie gut kannst du mit AWT und java.awt.Canvas
umgehen ?

Also was awt.Canvas angeht keine Ahnung. AWT ansich bin ich noch Anfänger.Einfache Zeichenfunktionen sind eigentlich kein Problem.

Also das Ziel des ganzen Projektes ist einen Roboter(Grafikobjekt) entlang eines durch einen A Stern algorithmus berechneten Pfad (Vector mit
awt.points) durch einen Raum mit Hindernissen zu fahren und allen Hindernissen auszuweichen.
Das Problem an an der Sache ist eigentlich nur die Koordinaten der Zwischenpunkte zu bestimmen und die der Reihe nach abzufahren.

mfg
Bluescreen

Hallo.

Also das Ziel des ganzen Projektes ist einen
Roboter(Grafikobjekt) entlang eines durch einen A Stern
algorithmus berechneten Pfad (Vector mit
awt.points) durch einen Raum mit Hindernissen zu fahren und
allen Hindernissen auszuweichen.
Das Problem an an der Sache ist eigentlich nur die Koordinaten
der Zwischenpunkte zu bestimmen und die der Reihe nach
abzufahren.

Das könnte man auch mit ‚Java3D‘ und seinen Interpolatoren erledigen.
Allerdings ist eine sog. ‚Kamerafahrt‘ mit Java3D nicht ohne weiteres möglich.
Java3D verlangt übrigens nach zusätzlich zu installierenden Bibliotheken in der Java Runtime oder SDK von z.B. http://java3d.j3d.org/ oder http://www.grafikprogrammierung.de/downloads.php

HTH
mfg M.L.

so ich hab das jetzt mal mit 10 Interpolatoren probiert.
Aber irgendwie wird trotzdem nicht neu gezeichnet obwohl ich repainte.

public void MoveAlongPath(Path p)
 {
 int x\_aktuell = 0;
 int y\_aktuell = 0;
 int x\_start = 0;
 int y\_start = 0;
 int x\_stop = 0;
 int y\_stop = 0;

 float prozent;

 for(int i = 0;i

Moien

> prozent =(float)b/10;

Das wird so nix. Wenn du 2 Integerzahlen dividierst machst du eine Integerdivision. D.h. da kommt 9x 0 und 1x 1 raus. Das muss so:

> prozent =((float)b)/((float)10);

resp so:

> prozent =((float)b)/10f;

Hab nicht weiter gelesen, kann noch öfter drin sein.

> try {  
> Thread.sleep(100);  
> } catch (InterruptedException e) {  
> // TODO Auto-generated catch block  
> e.printStackTrace();  
> }  
> zeichne.repaint();

Mach an der Stelle zeichne.repaint(0) und Thread.yield(). Das hilft ein bisschen gegen das ruckeln.

Ansonsten zeichne.paint(zeichne.getGraphics()); Allerdings bricht das einige Regeln des arbeiten mit AWT und kann Artefakte auf dem Bildschirm produzieren.

cu