DarkDragon hat geschrieben:Gut möglich. Die Reihenfolge ist aber ja garnicht interessant. Ich wollte damit ja nur klarstellen, dass wenn du weitere Transformationen hast (es muss ja nichtmal Scaling sein, sondern kann auch eine Projektion auf eine Ebene sein o.ä.), ob nun davor oder danach kannst du alles weitere wieder vergessen, die Winkel werden nichtmehr stimmen. Auch mit deiner Reihenfolge funktioniert es nicht, denn es kommt
Ich denke die Problembeschreibung am Anfang des Threads war etwas irreführend.
Das Problem lautete vielmehr:
Gegeben sei eine Matrix, welche als Folge beliebiger Rotationen (ausgeführt auf die Einheitsmatrix) entstanden ist.
Somit handelt es sich bei dem Resultat um ein rotiertes Standard-Koordinatensystem (Spalten-/Zeilenweise gelesen). Durch nachrechnen kommt man dann ebend auf die Winkel für eine Yaw-Pitch-Roll-Rotation.
Ich hoffe das macht das Problem etwas klarer. Du hast schon ein paar Schritte zu weit gedacht, müsste man Projektionen oder Verzerrungen mit reinbringen.... Viel Spaß beim rechnen
DarkDragon hat geschrieben:Doch ob das in der Praxis so immer funktionieren wird bezweifel ich stark. Angenommen du willst dass eine menschliche Figur nach vorne schaut, dann kann der Kopf oben, links, rechts, unten, einfach überall sein und das wählst du mit dieser Methode praktisch willkürlich aus.
Edit: Schon wieder etwas neues, das ging ja fix.
Das Problem der natürlichkeit einer Kopfdrehung habe ich jetzt noch nicht betrachtet, aber du hast natürlich Recht. Allerdings ist es dem Kopf überlassen in eine natürlich ausgerichtet zu sein, dann erhält man das selbe Resultat auch mit der Routine.
Allerdings müsste man dann schauen, welche der beiden Lösungen (theta +pi / +0) die Richtige ist, da Atan2 leider nicht in dieser Anwendung eindeutig ist.