Ich arbeite mit Computergrafik und musste herausfinden, wie etwas in einem Bild gedreht wurde, damit ich einen Kamerawinkel anpassen und das Objekt in 3D nachbilden konnte.
Das Bild zeigt die Referenz mit den hinzugefügten bekannten Vektoren.
Der horizontale Vektor kann normalisiert werden und der andere Vektor kann normalisiert werden . Der ursprüngliche Vektor gilt als .
Angesichts bleibt horizontal und nicht, ich habe festgestellt, dass es zwei Rotationen gab, eine um die x-Achse ( ) und eine um die y-Achse ( ) . Ich habe auch festgestellt, dass eine orthografische Projektion verwendet wurde. Für meine Zwecke geht es mir nicht um die endgültige z-Koordinate.
Ich habe Rotations- und Projektionsmatrizen wie folgt erstellt:
Kombiniere sie dann:
Wenn ich die Transformation in Einheitsvektornotation schreibe, erhalte ich:
Werte von ersetzen Und wir bekommen:
Mit dieser Gleichung Und sollte gefunden werden können (unter Verwendung der Identität ) durch die Gleichungen:
Ich habe jedoch einen Fehler gemacht und Folgendes getan, was die richtigen Winkel zurückgab:
Dies ergab die folgenden Ergebnisse, die eine Ebene korrekt drehten (mit einigen Vorzeichenanpassungen aufgrund der Rotationsausrichtung des Programms):
Offensichtlich habe ich irgendwo bei der Überprüfung meiner Ergebnisse einen Fehler gemacht. Kann jemand sehen, wo ich den Fehler gemacht habe? Wie gesagt, die fehlerhaften Gleichungen ergaben korrekte Werte, die "richtigen" Gleichungen jedoch einen Bereichsfehler.
Nach weiteren Nachforschungen habe ich also festgestellt, dass mein ursprüngliches Ergebnis richtig aussah, es aber nicht war. Indem ich die z-Achse außer Acht ließ, vernachlässigte ich wichtige Informationen, wodurch das Problem unlösbar wurde. Deshalb, ist nicht wie normalisiert , ist aber näher an einer Normalisierung von . Ich habe dies verallgemeinert als Wo Waage Und so dass ist ein Einheitsvektor.
Um zum ursprünglichen Referenzbild zurückzukehren, habe ich einen dritten bekannten Vektor rot markiert. Der ursprüngliche Wert dieses Vektors kann normalisiert werden . Ich habe verallgemeinert als mit einem ähnlichen Zweck dienen In .
Wenn ich die Matrixmultiplikation mit diesen beiden Vektoren erweitere, erhalte ich:
Ersetzen bekannter Anfangswerte:
Als nächstes habe ich Äquivalenzen für die Verhältnisse jedes Vektors gefunden:
Als nächstes habe ich multipliziert durch einen Wert so dass:
Dies gibt mir die folgende Äquivalenz, die so vereinfacht werden kann:
Seit:
Dann:
Angesichts unserer bekannten Werte:
Dann:
Und:
Ben JaguarMarshall