1 votos

Rotar el marco XYZ en el espacio 3D

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 .

0voto

mvw Puntos 13437

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) $$

0voto

user64349 Puntos 143

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.com

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.

Powered by:

X