Yaw-Pitch-Roll-Rotations Berechnung einer Einheitsmatrix

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: 3 Winkel einer Linie im 3D Raum

Beitrag von DarkDragon »

mpz hat geschrieben:Hi Darkdragon,

im Detail muss ich mich geschlagen geben. Ich habe "Dein Scaling" in einem Praktischen Beispiel eingeben und da hat es auch gut funktioniert. Das Obejekt sah zwar verzerrt aus wurde aber trotzdem korrekt gezeichnet. Für meine Funktion ist die Formel absolut aussreichend und ich werde bei Lookat eh nichts verzerren

Gruß Michael
Ok ;-) . Ich hab eben noch meinem Beitrag oben etwas angehängt. Wenn du irgendwann ein hin und her zittern siehst o.ä. weißt du woran das liegt. Aber wenn es nicht so ist, ist es prima und ich freu mich für dich :allright: .
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
gnasen
Beiträge: 578
Registriert: 01.08.2007 14:28
Computerausstattung: PB 4.60

Re: 3 Winkel einer Linie im 3D Raum

Beitrag von gnasen »

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 :lol:
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.
pb 4.51
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Re: 3 Winkel einer Linie im 3D Raum

Beitrag von mpz »

WICHTIG habe den Text des Themas geändert, da der neue Text wesendlich sinnvoller ist und das Theme besser beschreibt

Hi,

noch was dazu, oder warum es in der Praxis funktioniert:
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.
in der MP3D gibt es ein Weltkoordinaten System für das Mesh für welche ich einer Lookat Matrix berechne. Zusätzlichgibt es eine "locale" Mesh matrix die es erlaubt das Mesh zusätzlich local zu drehen. D.h. das Objekt hängt schief im Raum ich kann es aber local um die x/y/z Achse drehen. Damit kann ich den Mensch wenn er den Berg raufläuft in Ruhe drehen lassen und er läuft wieder runter ...

Gruß Michael
Working on :lol: - LibSGD - MP3D Engine - 8)
Antworten