Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Da empfehle ich (wie so oft) das ultimative Matrix (und Quaternionen) FAQ. Dort steht alles wichtige drin, u.a. auch wie man Eulerwinkel aus einer Matrix bekommt.
_14, _24, _34 sind üblicherweise 0. _44 ist üblicherweise 1. Eine Ausnahme sind z.B. Projektionsmatrizen.
Der Punkt (0,0,0) wird auf den Punkt (_41, _42, _43) abgebildet, das ist also schon mal deine Position. Der Punkt (1,0,0) wird auf den Punkt (_11, _12, _13) + (_41, _42, _43) abgebildet. Der Punkt (0,1,0) wird auf den Punkt (_21, _22, _23) + (_41, _42, _43) abgebildet. Der Punkt (0,0,1) wird auf den Punkt (_31, _32, _33) + (_41, _42, _43) abgebildet. Die Skalierung ergibt sich also aus der Länge von (_11, _12, _13), (_21, _22, _23) und (_31, _32, _33)
Von der Verwendung der Euler-Winkel würde ich abraten:
Zur Darstellung von Drehungen haben Eulerwinkel mehrere Nachteile:
Die oben erwähnte Singularität führt dazu, dass eine einzige Drehung durch unterschiedliche Eulerdrehungen ausgedrückt werden kann. Dies führt zu einem Phänomen, das als Gimbal Lock bekannt ist.
Die korrekte Kombination von Drehungen im Euler-System ist nicht intuitiv anzugeben, da sich die Drehachsen verändern.
Andere Möglichkeiten, die Orientierung zu beschreiben und teils diese Nachteile zu umgehen, sind Rotationsmatrizen oder Quaternionen.
Registriert: Di Dez 27, 2005 12:44 Beiträge: 393 Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Hallo Finalspace,
Für die Position : Matrix mit Vektor (0, 0, 0, 1) multiplizieren, das Ergebnis ist die gesuchte Translation ( oder du schaust dir einfach die letzte Spalte der Matrix an )
Für die Skalierung : Matrix mit Vektor ( 1, 1, 1, 1) multiplizieren und du müsstest theoretisch die Skalierungsfaktoren für x, y und z bekommen.
Rotation : Hmm...vielleicht mit Vektor ( 1, 0, 0, 0 ) ( für y, z-Rotation ) und (0, 1, 0, 0) (für x-Rotation) multiplizieren und dann Winkel zwischen diesen und den Ergebnisvektoren berechnen, weiß aber nicht ob dies wirklich funktioniert...
Viele Grüße dj3hut1
_________________ Wenn Gauß heute lebte, wäre er ein Hacker. Peter Sarnak, Professor an der Princeton University
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.