RotPosPathInterpolator

c0s4n0str4

Mitglied
Hi all.

Habe wieder mal eine Frage zu den Interpolatoren.

Möchte gerne den RotPothPathInterpolator benutzen, um meine Kamera anzusteuern bzw. eine kleine Animation dafür zu produzieren.

Komme jedoch mit den Quat4f nicht klar. Was machen die genau? Wie steuer ich die Animation.

Möchte gerne so eine Bewung darstellen:
Meine Kamera befindet sich im Punkt (0,0,-20)
Möchte Kamera bewegen zum Punkt (0,0,20);

Also genau auf die gegenüberliegende Seite. Dabei soll meine Kamera eine Drehung von 180 machen,
so dass sie sich währen der Bewegung auch umdreht und das Objekt, das auf dem Punkt (0,0,0) platziert ist, wieder sieht.

Was machen genau diese Quat4f?
In der specifikation steht nur: x,y,z,w. Toll bringt mich nicht viel weiter.
 

Marco13

Top Contributor
Die Quat4fs sind Quaternionen, also 4dimensionale komplexe Zahlen mit 3 imaginären Einheiten. Klingt geil, in diesem Fall ist das aber alles ziemlich wurscht: Die beschreiben eine Drehung um eine Achse, nicht mehr und nicht weniger. Am "anschaulichsten" kann man sie aus einem AxisAngle4f erzeugen.
 

c0s4n0str4

Mitglied
Hi.

Danke für die Antwort. Das Problem liegt daran, weil bei 180 Grad die zahl PI im Radiant geliefert wird, daher braucht man die komplexe Zahlen. Kan ich es irgendwie umgehen? Ich möchte meien Kamera immer um 180 grad drehen.

Also wenn ich die folgende funktion aufrufe:

Math.toradiant(180) liefert es mir die zahl PI. Das ist das gleiche wie Math.toradiant(0) = 0.
Wenn ich so meine Kamera rotieren möchte, klappt es nicht. Sobald ich Math.toradiant(181) eingebe, klappt wunderbar.

Wie kann man es lösen? Ohne die KOmplexen Zahlen also.
 

c0s4n0str4

Mitglied
Hi ich bins nochmal.

Ich habe es jetzt so gemacht, dass ich mit erst die Matrix der TransformGroup hole, dann die Matrix den Quats übergen.

Man kann sagen Quat3f.set(Matrix3f). Wenn ich die Kamera um 180 grad rotiere und die Matrix dann dem Quat überge, steht im quat (0,0,0,1)

Wenn ich die Kamera um 180.5° rotiere, steht da
(-7.57712E-4, -0.9847984, -0.17364654, 0.0042969612)

Wie kann ich jetzt berechnen, dass diese werte genau bei 180.5 grad da stehen. Also wie kommt man auf diese Werte?

Oder wie kann ich den quat, dass die Werte (0,0,0,1) hat, so einstelle, dass die kamera sich auch dreht?
 

Marco13

Top Contributor
Irgendwie kapier' ich's grad nicht. Der Interpolator interpoliert zwischen den Orientierungen, die durch die Quaternionen gegeben sind. Und da kann man reinschreiben, was man will. Ob PI oder 0 ist egal.
 
Ähnliche Java Themen

Ähnliche Java Themen


Oben