Aus einer Matrix Rotationswerte in Grad berechnen
-
Ich möchte anhand von zwei 3D Matrizen die Differenz der X,Y,Z Rotationen (in Grad) berechnen. Wie kann ich aber aus einer Matrix diese Werte berechnen?
-
Das ist nicht so einfach. Wofür genau brauchst du das dennn!? Im allgemeinen macht man nämlich praktisch immer was falsch wenn man mit irgendwelchen Winkeln rummachen will...
-
das kann man machen indem man die inverse der einen matrix mit der anderen multipliziert und aus der resultierenden die winkel errechnet (das kann man ergooglen
).
@dot
das braucht man oefters, z.b. bei manchen physics implementierungen, wenn man matritzen sparsamer ablegen will z.b. von animationen...
-
Dieser Thread wurde von Moderator/in rapso aus dem Forum Spiele-/Grafikprogrammierung in das Forum Mathematik und Physik verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
rapso schrieb:
@dot
das braucht man oefters, z.b. bei manchen physics implementierungen, wenn man matritzen sparsamer ablegen will z.b. von animationen...Da verwendet man wenn Quaternionen, da braucht man keine Winkel anzufassen, erst recht keine Eulerwinkel, die bringen von allen noch am wenigsten Glück...
Und die meisten die diese Fragen stellen denken meiner Erfahrung nach einfach nur sie bräuchten Winkel weil sie es nicht besser wissen. Eben nicht für einen der sehr wenigen Spezialfälle wo es unter Umständen wirklich sinnvoll sein könnte mit Winkeln zu arbeiten, sondern für so Dinge wie: Ein Objekt zu einem anderen hin ausrichten. Und sowas geht direkt ohne irgendwelche Winkel viel einfacher, effizienter, besser, ... Darum frag ich lieber erstmal nach was er denn genau mit diesen Winkeln anstellen will angenommen dass er sie denn hätte
-
Ich habe eine 3D-Anwendung und erhalte bei jedem update des Systems eine Liste von Matrizen (3x4). Diese verwende ich um später 3D Objekte zu rendern.
Auf Basis der List möchte ich zB prüfen, ob die Rotation eines Objektes um die X-Achse um mehr als 50° der eines anderen abweicht um eine Animation zu starten.
-
Dazu musst du zuerst einmal definieren was genau für dich die Rotation um die x-Achse ist. Je nachdem was für eine Rotationssequenz du nimmst gibts da einen riesen Haufen an Möglichkeiten. Und muss es wirklich die Rotation um die x-Achse sein (wie auch immer du die dann definieren magst) oder willst du nicht vielleicht einfach nur testen wie groß der Winkel zwischen zwei Richtungen ist (also wie weit die Eine von der Anderen wegschaut)?