Dada una XYZ
marco en el espacio 3D en el origen O(0,0,0)
. Y dada una ecuación plana:
L = 0.5774x + 0.1155y + 0.8083z = 0
.
Necesito derivar la matriz que rote el marco XYZ hasta que el eje Z sea vertical al plano L
.
Dada una XYZ
marco en el espacio 3D en el origen O(0,0,0)
. Y dada una ecuación plana:
L = 0.5774x + 0.1155y + 0.8083z = 0
.
Necesito derivar la matriz que rote el marco XYZ hasta que el eje Z sea vertical al plano L
.
Su plano está dado por la ecuación $$ L = 0.5774 x + 0.1155 y + 0.8083 z = 0 $$
a partir de esto se puede derivar el vector normal
$$ n = \frac{(0.5774, 0.1155, 0.8083)^t}{|(0.5774, 0.1155, 0.8083)^t|} = (0.5774, 0.1155, 0.8083)^t $$
Así, $L$ ya se dio como
$$ L = n \cdot r = 0 $$
para un vector $r = (x,y,z)^t$ .
Buscando un vector $u = (1, y, 0)^t \in L$ :
$$ u \in L \iff n \cdot u = n_x + n_y y = 0 \iff y = -\frac{n_x}{n_y} = -5 \iff u = (1, -5, 0)^t \\ n_u = \frac{u}{|u|} = (0.19612,-0.98058, 0)^t $$
Así que tenemos el vector unitario normal $n$ del plano y un vector unitario $n_u$ dentro del plano. Buscando otro vector unitario $n_v \perp n_u \wedge n_v \perp n$ :
$$ n_v = n_u \times n = \epsilon_{i,j,k} \, e_i \, n_{u j} \, n_k = (-0.79260, -0.15852, 0.58884)^t $$
Es un bonito sistema ortonormal, con dos vectores en el plano, y uno perpendicular a él.
La matriz $$ R = (n_u, n_v, n) $$
llena
$$ R e_x = n_u \quad R e_y = n_v \quad R e_z = n $$
donde $e_x = (1, 0, 0)^t$ , $e_y = (0,1,0)^t$ y $e_z = (0, 0, 1)^t$ .
Sin embargo, $\det(R) = -1$ lo que significa que no es una rotación adecuada, por lo que cambiamos a $$ R = (n_v, n_u, n) = \left( \begin{matrix} -0.79260 & 0.19612 & 0.57740 \\ -0.15852 & -0.98058 & 0.11550 \\ 0.58884 & 0.00000 & 0.80830 \end{matrix} \right) $$
Tienes la única condición de tener el eje Z orientado en la misma dirección que la normal del plano. Lo que significa, que tendrás infinitas posibilidades.
Tiene el vector de $Z$ eje $\vec{z}$ y el vector de la normal del plano $\vec{n}$ . Si se gira el sistema de coordenadas alrededor del vector $\vec{z} + \vec{n}$ por $\pi$ , tendrás el eje Z a la dirección original del vector normal.
Lo he utilizado en OpenGL, donde hay una bonita función glRotatef.
Si quieres alguna orientación específica del plano XY, tendrás que rotar de nuevo alrededor del eje Z.
I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.