Korrektes Ergebnis in Matrix-bezogener algebraischer Gleichung aus Versehen gefunden

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.Referenzbild mit Vektoren

Der horizontale Vektor X 0 kann normalisiert werden [ 1 0 0 ] und der andere Vektor j kann normalisiert werden [ 0,20720675587654114 0,9782971739768982 0 ] . Der ursprüngliche Vektor j 0 gilt als [ 0 1 0 ] .

Angesichts X 0 bleibt horizontal und j 0 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:

R Ö T X = [ 1 0 0 0 C Ö S θ S ich N θ 0 S ich N θ C Ö S θ ]

R Ö T j = [ C Ö S γ 0 S ich N γ 0 1 0 S ich N γ 0 C Ö S γ ]

P R Ö J = [ 1 0 0 0 1 0 0 0 0 ]

Kombiniere sie dann:

R Ö T X R Ö T j P R Ö J = [ 1 0 0 0 C Ö S θ S ich N θ 0 S ich N θ C Ö S θ ] [ C Ö S γ 0 S ich N γ 0 1 0 S ich N γ 0 C Ö S γ ] [ 1 0 0 0 1 0 0 0 0 ] = [ C Ö S γ 0 S ich N γ S ich N γ S ich N θ C Ö S θ C Ö S γ S ich N θ S ich N γ C Ö S θ S ich N θ C Ö S γ C Ö S θ ] [ 1 0 0 0 1 0 0 0 0 ] = [ C Ö S γ 0 0 S ich N γ S ich N θ C Ö S θ 0 S ich N γ C Ö S θ S ich N θ 0 ]

Wenn ich die Transformation in Einheitsvektornotation schreibe, erhalte ich:

j = ( j 0 X C Ö S γ j 0 j S ich N γ S ich N θ j 0 z S ich N γ C Ö S θ ) ich ^ + ( j 0 X 0 + j 0 j C Ö S θ j 0 z S ich N θ ) J ^ + ( j 0 X 0 + j 0 j 0 + j 0 z 0 ) k ^ = ( j 0 X C Ö S γ j 0 j S ich N γ S ich N θ j 0 z S ich N γ C Ö S θ ) ich ^ + ( j 0 j C Ö S θ j 0 z S ich N θ ) J ^

Werte von ersetzen j Und j 0 wir bekommen:

0,20720675587654114 ich ^ + 0,9782971739768982 J ^ = ( 0 C Ö S γ 1 S ich N γ S ich N θ 0 S ich N γ C Ö S θ ) ich ^ + ( 1 C Ö S θ 0 S ich N θ ) J ^ = ( S ich N γ S ich N θ ) ich ^ + ( C Ö S θ ) J ^  

Mit dieser Gleichung θ Und γ sollte gefunden werden können (unter Verwendung der Identität S ich N θ = 1 C Ö S 2 θ ) durch die Gleichungen:

C Ö S θ = 0,9782971739768982 θ = C Ö S 1 ( 0,9782971739768982 ) ( S ich N γ S ich N θ ) = 0,20720675587654114 S ich N γ = 0,20720675587654114 S ich N θ S ich N γ = 0,20720675587654114 ± 1 0,9782971739768982 2 γ = S ich N 1 ( 0,20720675587654114 ± 1 0,9782971739768982 2 )

Ich habe jedoch einen Fehler gemacht und Folgendes getan, was die richtigen Winkel zurückgab:

S ich N θ = 0,9782971739768982 S ich N θ = 0,9782971739768982 θ = S ich N 1 ( 0,9782971739768982 ) ( S ich N γ S ich N θ ) = 0,20720675587654114 S ich N γ = 0,20720675587654114 S ich N θ S ich N γ = 0,20720675587654114 0,9782971739768982 γ = S ich N 1 ( 0,20720675587654114 0,9782971739768982 )

Dies ergab die folgenden Ergebnisse, die eine Ebene korrekt drehten (mit einigen Vorzeichenanpassungen aufgrund der Rotationsausrichtung des Programms):

θ = 78.04128901169878 γ = 12.22806234616057

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.

Ich habe festgestellt, dass ein Teil des Problems darin besteht, dass durch das Verwerfen der z-Komponente meine Ergebnisse verworfen werden. die x- und y-Komponenten der Ergebnisse müssen so skaliert werden, dass x,y,z ein Einheitsvektor ist. Ich bin mir immer noch nicht sicher, warum ich aus einem Fehler das richtige Ergebnis erhalten habe.

Antworten (1)

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, j ist nicht wie normalisiert [ 0,20720675587654114 0,9782971739768982 0 ] , ist aber näher an einer Normalisierung von [ 0,20720675587654114 0,9782971739768982 z j ] . Ich habe dies verallgemeinert als [ A X j A Y j z j ] Wo A Waage X j Und Y j so dass [ A X j A Y j z j ] ist ein Einheitsvektor.

Referenz mit zusätzlichem Vektor in Rot

Um zum ursprünglichen Referenzbild zurückzukehren, habe ich einen dritten bekannten Vektor rot markiert. Der ursprüngliche Wert dieses Vektors z 0 kann normalisiert werden [ 0 0 1 ] . Ich habe verallgemeinert z als [ B X z B Y z z z ] mit B einem ähnlichen Zweck dienen A In j .

Wenn ich die Matrixmultiplikation mit diesen beiden Vektoren erweitere, erhalte ich:

A X j = j j 0 S ich N γ S ich N θ A Y j = j j 0 C Ö S θ z j = j j 0 C Ö S γ S ich N θ B X z = z z 0 S ich N γ C Ö S θ B Y z = z z 0 S ich N θ z z = z z 0 C Ö S γ C Ö S θ

Ersetzen bekannter Anfangswerte:

j j 0 = 1 z z 0 = 1 A X j = S ich N γ S ich N θ A Y j = C Ö S θ z j = C Ö S γ S ich N θ B X z = S ich N γ C Ö S θ B Y z = S ich N θ z z = C Ö S γ C Ö S θ

Als nächstes habe ich Äquivalenzen für die Verhältnisse jedes Vektors gefunden:

A X j A Y j = S ich N γ S ich N θ C Ö S θ X j Y j = S ich N γ T A N θ B X z B Y z = S ich N γ C Ö S θ S ich N θ X z Y z = S ich N γ T A N θ

Als nächstes habe ich multipliziert X z Y z durch einen Wert C so dass:

C X z Y z = X j Y j C = X j Y z Y j X z

Dies gibt mir die folgende Äquivalenz, die so vereinfacht werden kann:

C S ich N γ T A N θ = S ich N γ T A N θ C T A N θ = T A N θ C = T A N 2 θ C = T A N 2 θ C = T A N θ T A N 1 C = θ

Seit: C = X j Y z Y j X z

Dann: θ = T A N 1 X j Y z Y j X z

Angesichts unserer bekannten Werte:

X j = 0,20720675587654114 Y j = 0,9782971739768982 X z = 0,1048736646771431 Y z = 0,99448561668396

Dann:

θ = T A N 1 ( 0,20720675587654114 ) ( 0,99448561668396 ) ( 0,9782971739768982 ) ( 0,1048736646771431 ) θ = T A N 1 2.008469191868533 θ = T A N 1 1.4172047106429377 θ = 0,9563122633179668 θ = 54.79265658472295

Und:

S ich N γ 1.4172047106429377 = 0,1048736646771431 0,99448561668396 S ich N γ = ( 0,1048736646771431 ) ( 1.4172047106429377 ) 0,99448561668396 S ich N γ = ( 0,1048736646771431 ) ( 1.4172047106429377 ) 0,99448561668396 S ich N γ = 0,14945158492932506 γ = 0,15001360524175628 γ = 8.595146449894239