# ein Auto seinen Weg folgen lassen



## alexey (30. Jul 2009)

Hallo! ich habe ein Auto, das als ein Shape3D dargestellt ist und ein Array von Point3d, der der Weg beshreibt. das Auto soll den Weg fahren und gleichzeitig sich rotieren- dadurch soll  naturliches Eindruck erzeugt werden. Ohne Rotation sieht es ganz schlecht aus. ich weiß, dass man es durch RotPosPathInterpolator machen kann, aber habe leider keine Ahnung von Ding. Könnte mir jemand einen kurzen Codestuck zeigen?
Wenn ich  die  Aufgabe zu schlecht beschrieben habe- hier:
http://www2.hs-fulda.de/caelabor/inhalte/java/j3d/j3d_seminar/11/Verwendete Literatur/07java3d_1.pdf
 in Folie 36 Beispiel mit Lokomotive. ich kann leider die Datei LokoAnimation.zip nicht finden.

Danke im Voraus


----------



## Marco13 (30. Jul 2009)

Das mit der Lokomotive sieht nach dem einfachsten Beispiel aus: Wenn die Lok sich nur im Kreis bewegen soll, braucht man keinen Interpolator. Zum dem RotPosPathInterpolator gibt's hier ein Beispiel Java Tips - Using the subclasses of PathInterpolator


----------



## alexey (30. Jul 2009)

als Erstes->Danke
 das Beispiel habe ich gesehen.
ich denke Array "quats" soll irgendwie aus Array "positions" berechnet werden. Die Frage: wie?  
 das Auto soll ziemlich komplizierten Weg fahren.


----------



## Marco13 (31. Jul 2009)

Ja, vermutet hatte ich sowas schon. Diese Quats vorzugeben wäre ziemlich schwierig, aber für den Interpolator müssen sie glaubich vorgegeben sein. Wenn man davon ausgeht, dass du eine Polylinie hast, wird ein Interpolator auch nicht unbedingt so funktionieren, wie du das willst. 

Ein Auto sollte ja nicht...
- ein Stück geradeaus fahren
- sich dann auf der Stelle(!) drehen
- wieder ein Stück geradeaus fahren.

Es sollte auch NICHT
- Ein Stück fahren, und sich während der gesamten Fahrt so drehen, dass das auf dem nächsten Teilstück am Anfang geradeaus fährt (was der RotPosPathInterpolator machen würde)

Das richtig schön zu machen wäre auch richtig schwierig. Aber eine Lösung, die "ganz OK" ist, würde man wahrscheinlich schon hinkriegen, wenn man es etwa so macht:
Die Folge der Punkte ist gegeben
Das Auto besteht aus zwei Punkten: Dem Punkt für die Vorderräder und dem Punkt für die Hinterräder
Die beiden Punkte fahren (in festem Abstand) hintereinander auf der Polyline lang.
Damit würde sich das Auto an den Übergängen zwischen zwei Linienstücken immer "plausibel" in die Richtung des nächsten Linienstücks drehen. 

Dazu müßte man aber die Drehung des Autos selbst ausrechnen. Einen RotPosPathInterpolator kann man dann nicht mehr verwenden. Vielleicht noch einen PosPathInterpolator, aber das müßte ich mir auch erst genauer überlegen.


----------

