Del mismo modo que las transformaciones 2D pueden representarse mediante matrices 3X3 utilizando coordenadas homogéneas, las transformaciones 3D pueden representarse mediante matrices 4X4, siempre y cuando utilicemos representaciones de coordenadas homogéneas de puntos en el espacio 3D. Por lo tanto, en lugar de representar un punto como (x, y, z), lo representamos como (x, y, z, W), donde dos de estos cuádruples representan el mismo punto si uno es un múltiplo distinto de cero del otro; El cuádruple (0,0,0,0) no está permitido. Como en 2D, una representación estándar de un punto (x, y, z, W) con W <> 0 viene dada por (x/W, y/W, z/W, 1). Transformar el punto a esta forma se llama homogeneización, como antes. Además, los puntos cuya coordenada W es cero se denominan puntos en el infinito. También hay una interpretación geométrica. Cada punto en el espacio 3D está siendo representado por una línea a través del origen en el espacio 4D, y las representaciones homogeneizadas de estos puntos forman un subespacio 3D del espacio 4D que se define por la ecuación única W=1.
El sistema de coordenadas 3D utilizado en este texto es diestro, como se muestra en la Fig. 5.14. Por convención, las rotaciones positivas en un sistema diestro son tales que, al mirar desde un eje positivo hacia el origen, una rotación de 90° en el sentido contrario a las agujas del reloj transformará un eje positivo en el otro. Esta tabla sigue de esta convención:
Estas direcciones positivas también se representan en la figura 5.14. Se advierte al lector que no todos los textos gráficos siguen esta convención.
Fig 5.14 El sistema de coordenadas para diestros. |
Fig 5.15 El sistema de coordenadas para zurdos, con una pantalla de visualización superpuesta. |
La traslación en 3D es una extensión simple del 2D:
La escala se extiende de manera similar:
La rotación 2D de la ec. (5.26) es solo una rotación 3D sobre el eje z, que es
La matriz de rotación del eje x es
La matriz de rotación del eje y es
Cualquier número de matrices de rotación, escalado y traslación se pueden multiplicar. El resultado siempre tiene la forma
Al igual que en el caso 2D, la submatriz R superior 3 x 3 da la rotación y la escala, mientras que T proporciona la traslación. Se logra cierta eficiencia computacional realizando la transformación explícitamente como
donde R y T son submatrices de la ec. (5.45).
5.7 COMPOSICION DE TRANSFORMACIONES 3D
En esta sección, discutimos cómo componer matrices de transformación 3D. El objetivo es transformar los segmentos de línea dirigidos P1P2 y P1P3 en la Fig. 5.16 desde su posición inicial en la parte (a) hasta su posición final en la parte (b). Por lo tanto, el punto P1 se traslará al origen, P1P2 en el eje z positivo, y P1P3 estará en la mitad del eje y positivo del plano (y, z). Las longitudes de las líneas no se verán afectadas por la transformación.
Fig 5.16 Transformando P1,P2, y P3 desde su posición inicial (a) hasta su posición final (b). |
Se presentan dos formas de lograr la transformación deseada.
El primera forma es componer las transformaciones primitivas T, Rx, Ry y Rz. Este enfoque, aunque algo tedioso, es fácil de ilustrar, y su comprensión nos ayudará a construir una comprensión de las transformaciones. La segundo forma, utilizando las propiedades de las matrices ortogonales descritas en la sección anterior, se explica más brevemente pero es más abstracto.
Para trabajar con las transformaciones primitivas, nuevamente dividimos un problema difícil en subproblemas más simples. En este caso, la transformación deseada se puede hacer en cuatro pasos:
1. Trasladar P1 al origen.
2. Gire alrededor del eje y de modo que P1P2 se encuentre en el plano (y, z)
3. Gire alrededor ydel eje x de manera que P1P2 se encuentre en el eje z
4. Gire alrededor del eje z de manera que P1P3 se encuentre en el plano (y, z).
La segunda forma de obtener la matriz R es usar las propiedades de las matrices ortogonales:
- Cada uno es un vector unitario.
- Cada uno es perpendicular al otro (su producto escalar es cero).
- Siempre y cuando se cumplan las condiciones 1 y 2 entonces:
- El primer vector representa la rotaci6n en X
- El segundo vector representa la rotaci6n en Y
- El tercer vector representa la rotaci6n en Z
Recuerde que los vectores de fila unitaria de R giran hacia los ejes principales. Reemplazando los segundos subíndices de Eq. (5.45) con x, y, y z por conveniencia de notación:
Debido a que Rz es el vector unitario a lo largo de P1P2 que rotará hacia el eje z positivo:
Además, el vector unitario Rx es perpendicular al plano de P1, P2 y P3 y rotará hacia el eje x positivo, de modo que Rx debe ser el producto cruz normalizado de dos vectores en el plano:
La matriz de Composici6n esta dada por :
La definici6n general de una matriz ortogonal es la siguiente:
Una matriz M es ortogonal si multiplicada por su transpuesta MT da como resultado la matriz identidad I. De igual forma, el producto de la transpuesta de una matriz ortogonal por la matriz original de como resultado la matriz identidad:
M MT = MT M = I
Como consecuencia de la afirmación anterior, se tiene que la transpuesta de una matriz ortogonal es igual a su matriz inversa:
MT = M-1.
Consideremos otro ejemplo. La figura 5.21 muestra un avión definido en el sistema de coordenadas xp, yp, zp y centrado en el origen.
Queremos transformar el avión de modo que se dirija en la dirección dada por el vector DOF (dirección de vuelo), esté centrado en P y no esté inclinado, como se muestra en la figura 5.22.
La transformación para hacer esto consiste en una rotación para dirigir el avión en la dirección correcta, seguida de una traslación desde el origen a P.
Para encontrar la matriz de rotación, simplemente determinamos en qué dirección cada uno de los ejes xp, yp y zp se dirige en la figura 5.22, asegúrese de que las direcciones estén normalizadas y utilícelas como vectores de columna en una matriz de rotación.
fuente: Computer Graphics - Principles and Practice in C (2nd Edition).djvu
No hay comentarios:
Publicar un comentario