Se encontró el resultado correcto en la ecuación algebraica relacionada con la matriz por error

Estoy trabajando con gráficos por computadora y necesitaba descubrir cómo se giraba algo en una imagen para poder igualar el ángulo de la cámara y recrear el elemento en 3D.

La imagen muestra la referencia con los vectores conocidos agregados.Imagen de referencia con vectores

el vector horizontal X 0 se puede normalizar a [ 1 0 0 ] y el otro vector y se puede normalizar a [ 0.20720675587654114 0.9782971739768982 0 ] . el vector original y 0 se considera que es [ 0 1 0 ] .

Considerando X 0 permanece horizontal y y 0 no lo hace, comprobé que había dos rotaciones, una alrededor del eje x ( θ ) y otra alrededor del eje y ( γ ) . También comprobé que se estaba utilizando una proyección ortográfica. Para mis propósitos, no me preocupa la coordenada z final.

Creé matrices de rotación y proyección de la siguiente manera:

R o t X = [ 1 0 0 0 C o s θ s i norte θ 0 s i norte θ C o s θ ]

R o t y = [ C o s γ 0 s i norte γ 0 1 0 s i norte γ 0 C o s γ ]

PAG r o j = [ 1 0 0 0 1 0 0 0 0 ]

Luego, combínalos:

R o t X R o t y PAG r o j = [ 1 0 0 0 C o s θ s i norte θ 0 s i norte θ C o s θ ] [ C o s γ 0 s i norte γ 0 1 0 s i norte γ 0 C o s γ ] [ 1 0 0 0 1 0 0 0 0 ] = [ C o s γ 0 s i norte γ s i norte γ s i norte θ C o s θ C o s γ s i norte θ s i norte γ C o s θ s i norte θ C o s γ C o s θ ] [ 1 0 0 0 1 0 0 0 0 ] = [ C o s γ 0 0 s i norte γ s i norte θ C o s θ 0 s i norte γ C o s θ s i norte θ 0 ]

Escribiendo la transformación en notación de vector unitario, obtengo:

y = ( y 0 X C o s γ y 0 y s i norte γ s i norte θ y 0 z s i norte γ C o s θ ) i ^ + ( y 0 X 0 + y 0 y C o s θ y 0 z s i norte θ ) j ^ + ( y 0 X 0 + y 0 y 0 + y 0 z 0 ) k ^ = ( y 0 X C o s γ y 0 y s i norte γ s i norte θ y 0 z s i norte γ C o s θ ) i ^ + ( y 0 y C o s θ y 0 z s i norte θ ) j ^

Sustituyendo valores de y y y 0 obtenemos:

0.20720675587654114 i ^ + 0.9782971739768982 j ^ = ( 0 C o s γ 1 s i norte γ s i norte θ 0 s i norte γ C o s θ ) i ^ + ( 1 C o s θ 0 s i norte θ ) j ^ = ( s i norte γ s i norte θ ) i ^ + ( C o s θ ) j ^  

Con esta ecuación, θ y γ debe poder ser encontrado (utilizando la identidad s i norte θ = 1 C o s 2 θ ) por las ecuaciones:

C o s θ = 0.9782971739768982 θ = C o s 1 ( 0.9782971739768982 ) ( s i norte γ s i norte θ ) = 0.20720675587654114 s i norte γ = 0.20720675587654114 s i norte θ s i norte γ = 0.20720675587654114 ± 1 0.9782971739768982 2 γ = s i norte 1 ( 0.20720675587654114 ± 1 0.9782971739768982 2 )

Sin embargo, cometí un error e hice lo siguiente, que devolvió los ángulos correctos:

s i norte θ = 0.9782971739768982 s i norte θ = 0.9782971739768982 θ = s i norte 1 ( 0.9782971739768982 ) ( s i norte γ s i norte θ ) = 0.20720675587654114 s i norte γ = 0.20720675587654114 s i norte θ s i norte γ = 0.20720675587654114 0.9782971739768982 γ = s i norte 1 ( 0.20720675587654114 0.9782971739768982 )

Esto dio los siguientes resultados, que giraron un plano correctamente (con algunos ajustes de signo debido a las orientaciones de rotación del programa):

θ = 78.04128901169878 γ = 12.22806234616057

Obviamente, cometí un error en alguna parte al verificar mis resultados. ¿Alguien puede ver dónde he cometido el error? Como dije, las ecuaciones equivocadas arrojaron valores correctos, pero las ecuaciones "correctas" arrojaron un error de dominio.

Descubrí que parte del problema es que, al descartar el componente z, arroja mis resultados. los componentes x e y de los resultados se deben escalar para que x,y,z sea un vector unitario. Todavía no estoy seguro de por qué obtuve el resultado correcto de un error.

Respuestas (1)

Entonces, luego de una mayor investigación, descubrí que mi resultado original parecía correcto, pero no lo era. Al ignorar el eje z, desprotegí información vital, lo que hizo que el problema no tuviera solución. Por lo tanto, y no está normalizado como [ 0.20720675587654114 0.9782971739768982 0 ] , pero está más cerca de una normalización de [ 0.20720675587654114 0.9782971739768982 z y ] . He generalizado esto como [ A X y A Y y z y ] dónde A escamas X y y Y y tal que [ A X y A Y y z y ] es un vector unitario.

Referencia con vector extra en rojo

Volviendo a la imagen de referencia original, he marcado un tercer vector conocido en rojo. El valor original de este vector z 0 se puede normalizar a [ 0 0 1 ] . he generalizado z como [ B X z B Y z z z ] con B sirviendo a un propósito similar a A en y .

Expandiendo la multiplicación de matrices con estos dos vectores, obtengo:

A X y = y y 0 s i norte γ s i norte θ A Y y = y y 0 C o s θ z y = y y 0 C o s γ s i norte θ B X z = z z 0 s i norte γ C o s θ B Y z = z z 0 s i norte θ z z = z z 0 C o s γ C o s θ

Sustituyendo valores iniciales conocidos:

y y 0 = 1 z z 0 = 1 A X y = s i norte γ s i norte θ A Y y = C o s θ z y = C o s γ s i norte θ B X z = s i norte γ C o s θ B Y z = s i norte θ z z = C o s γ C o s θ

A continuación, encontré equivalencias para las proporciones de cada vector:

A X y A Y y = s i norte γ s i norte θ C o s θ X y Y y = s i norte γ t a norte θ B X z B Y z = s i norte γ C o s θ s i norte θ X z Y z = s i norte γ t a norte θ

A continuación, multipliqué X z Y z por un valor C tal que:

C X z Y z = X y Y y C = X y Y z Y y X z

Esto me da la siguiente equivalencia, que se puede simplificar así:

C s i norte γ t a norte θ = s i norte γ t a norte θ C t a norte θ = t a norte θ C = t a norte 2 θ C = t a norte 2 θ C = t a norte θ t a norte 1 C = θ

Desde: C = X y Y z Y y X z

Entonces: θ = t a norte 1 X y Y z Y y X z

Dados nuestros valores conocidos:

X y = 0.20720675587654114 Y y = 0.9782971739768982 X z = 0.1048736646771431 Y z = 0.99448561668396

Entonces:

θ = t a norte 1 ( 0.20720675587654114 ) ( 0.99448561668396 ) ( 0.9782971739768982 ) ( 0.1048736646771431 ) θ = t a norte 1 2.008469191868533 θ = t a norte 1 1.4172047106429377 θ = 0.9563122633179668 θ = 54.79265658472295

Y:

s i norte γ 1.4172047106429377 = 0.1048736646771431 0.99448561668396 s i norte γ = ( 0.1048736646771431 ) ( 1.4172047106429377 ) 0.99448561668396 s i norte γ = ( 0.1048736646771431 ) ( 1.4172047106429377 ) 0.99448561668396 s i norte γ = 0.14945158492932506 γ = 0.15001360524175628 γ = 8.595146449894239