Matrizen vs Quaternionen

Einstiegsfragen, Mathematik, Physik, künstliche Intelligenz, Engine Design
Antworten
Benutzeravatar
Zudomon
Establishment
Beiträge: 2254
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Matrizen vs Quaternionen

Beitrag von Zudomon »

Hallo!

Ich habe bei mir Rotationen über Quaternionen implementiert. Da ich allerdings mehrere Objekte um ein Zentrum drehen möchte, halte ich es für sinnvoller, die komplette Translation doch lieber über eine Matrix darzustellen. Nun habe ich das probiert, hatte aber den Fehler, dass die Rotation "taumelt". Bin nun doch erstmal auf den sicheren Stand der Quaternionen zurück.
Meine Frage ist nun, habe ich da nur einen Fehler gehabt oder ist es nicht möglich, relativ exakt über Matrizen zu arbeiten, weil ja sonst alles geht. Soweit ich weiß, sind Quaternionen nur besser, weil sie interpoliert werden können, was bei Matrizen ja nicht geht. Gibt es noch mehr Vorteile, die Quaternione bieten?
Und falls ich bei den Quaternionen bleiben muss, wie kann man um ein beliebiges Zentrum drehen?

Danke für eure Antworten! :D
Matthias Gubisch
Establishment
Beiträge: 470
Registriert: 01.03.2009, 19:09

Re: Matrizen vs Quaternionen

Beitrag von Matthias Gubisch »

Hallo

der Hauptvorteil von Quaternionen liegt eher darin dass damit der sogenannte Gimbal Lock vermieden wird.
http://de.wikipedia.org/wiki/Gimbal_Lock
http://en.wikipedia.org/wiki/Gimbal_lock

Ansonsten solltest du jede Rotation die du mit Quaternionen durchführen kannst auch mit Matrizen machen können (zumindest habe ich das immer geschafft)
wie du damit um eine beliebiges Zentrum bzw um eine Beliebige Achse drehst kann ich dir auf anhieb nicht sagen da ich meine Rotationen normal mit Matrizen ausführe

Allerdings gibt es durchaus die Möglichkeit dein Quaternion in eine Matrix umzurechen, vielleicht probierst du das einfach mal uns schaust ob dann immer noch das gleiche Problem auftritt.
Bevor man den Kopf schüttelt, sollte man sich vergewissern einen zu haben
Benutzeravatar
dowhilefor
Moderator
Beiträge: 173
Registriert: 27.02.2009, 15:44
Alter Benutzername: 6SidedDice
Echter Name: Nico Probst
Wohnort: Bochum
Kontaktdaten:

Re: Matrizen vs Quaternionen

Beitrag von dowhilefor »

Sollte doch möglich sein in dem du die Rotation im Quaternion in eine Matrix zurückrechnest. Oder täusche ich mich da? Ich meine das so gemacht zu haben. Rotationen um die jeweiligen Achsen festgehalten, dann in eine Matrix umgewandelt, Translationsmatrix für den Ursprung (Die Achsen ändern sich dadurch ja nicht) rotiert (Mit der Matrix aus dem Quaternion) und wieder zurück bewegt. Hoffe ich liege da jetzt nicht total daneben, ist schon was her.
Mein Gehirn besteht nur noch aus einem hash-index, ich weiss was ich kenn aber kenn nicht was ich weiss
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: Matrizen vs Quaternionen

Beitrag von eXile »

Das Problem ist folgendes:
Es gibt keine injektive stetige Abbildung des R^3 nach SO(3). Deswegen nimmt man als Abbildung eine Einschränkung des R^4 nach SO(3). Alles klar?

Das heißt auf gut Deutsch: Man kann zwar mit Eulerwinkeln jede Orientierung eines Objekts im Raum angeben, aber man keine Abbildung definieren, welche die Eulerwinkel als Rotationsmatrix aufschreibt, und dabei gewünschte Eigenschaften einhält, z.b. dass keine Singularitäten auftreten (wie beim Gimbal Lock). Dafür geht man eine Dimension höher, in die Quaternionen.
Dort nimmt man nur bestimmte Elemente (Einheitsquaternionen), und kann eine fast-injektive stetige Abbildung von Quaternionen nach Rotationsmatrizen aufstellen (da zwei Quaternionen q und -q dieselbe Rotation aufweisen). Die Umkehrabbildung ist auch (bis auf das Vorzeichen) definierbar.
Im Grunde geht es nur um das Problem des Kartenmalens: Man kann eine Kugeloberfläche nicht "diffeomorph" in einer Ebene darstellen.
Benutzeravatar
dv
Beiträge: 51
Registriert: 15.09.2002, 17:46
Benutzertext: Ugauga.
Alter Benutzername: dv
Wohnort: Südamerikanischer Dschungel
Kontaktdaten:

Re: Matrizen vs Quaternionen

Beitrag von dv »

Quaternionen beinhalten 4 Skalare, zusammen mit einem Positionsvektor ergeben sich 7 Skalare. Das ist nicht uninteressant für skeletale Animation, da man weniger Daten zu speichern braucht, sei es über Uniforms, Texturen o.ä. Für Instancing ist das ebenfalls interessant (da bei Instancing oft nur die Lage zwischen den Instanzen variiert und sonst nichts).
Benutzeravatar
Zudomon
Establishment
Beiträge: 2254
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: Matrizen vs Quaternionen

Beitrag von Zudomon »

Hi! Danke für eure Bemühungen! :)
Hab auf jeden Fall was dazu gelernt.

Letztlich war es allerdings wieder eigenes Verschulden mit der taumelnden Drehung! Hab mich da auf falsche Variablen bezogen. Also vom Prinzip her funktioniert beides jetzt absolut Identisch. Das ist gut, weil ich denke, das in meinem Fall Matrizen besser sind, da ich ebend um beliebige Drehpunkte rotieren will und da gehts über Matrix einfacher.

Also danke nochmal!
Und Frohe Ostern :D

Zudomon
Antworten