20190124

Capitulo 6 Vista en 3D (Foley) parte 1

6.5.5 Mapeo en un Puerto de Vista

Las primitivas de salida se recortan en el sistema de coordenadas de proyección normalizado, que también se denomina sistema de coordenadas de pantalla 3D. Asumiremos para esta discusión que el volumen de la vista de proyección paralela canónica se ha utilizado para el recorte (la proyección en perspectiva M transforma el volumen de la vista de proyección en perspectiva en el volumen de la vista de proyección paralela si esta suposición es incorrecta). Por lo tanto, las coordenadas de todas las primitivas de salida que quedan se encuentran en el volumen de vista -1 < x <1, -1 < y < 1, -1 <z <0.

 El programador de PHIGS especifica una ventana 3D en la que se muestran los contenidos de este volumen de vista. se asignan  El Puerto de Vista 3D está contenida en el cubo de unidad
    0 <x <1,   0 <y <l,   0 <z <1.
 La cara frontal z = 1 del cubo de unidad se asigna en el cuadrado más grande que se puede inscribir en la pantalla pantalla. Suponemos que la esquina inferior izquierda del cuadrado está en (0, 0). Por ejemplo, en un dispositivo de visualización con una resolución horizontal de 1024 y una resolución vertical de 800, el cuadrado es la región 0 <x <799, 0 <y <799.

 Los puntos en el cubo unitario se muestran descartando su coordenada z. Por lo tanto, el punto (0.5,0.75,0.46) se mostraría en las coordenadas del dispositivo (400, 599). En el caso de la determinación de la superficie visible (Capítulo 15), la coordenada z de cada primitiva de salida se utiliza para determinar qué primitivas son visibles y cuáles están ocultas por otras primitivas con z más grande.

 Dada una vista 3D dentro del cubo unitario con coordenadas Xv.min, Xv.max, etc., el mapeo del volumen de vista de proyección paralela canónica en la ventana 3D se puede considerar como un proceso de tres pasos. En el primer paso, el volumen de la vista de proyección paralela canónica se traduce de modo que su esquina, (- 1, -1, - 1), se convierte en el origen. Esto se efectúa por la traslación T(1, 1, 1). A continuación, el volumen de la vista trasladada se escala al tamaño de la vista 3D, con la escala


Finalmente, la traslacion (Xv.min, Yv.min, Zv.min) convierte el volumen de vista escalado correctamente a la esquina inferior izquierda del puerte de vista. Por lo tanto, el volumen de vista canónica compuesta a la transformación de la vista 3D es

Tenga en cuenta que esto es similar a, pero no es lo mismo, la ventana para la transformación del puerto de vista Mwv desarrollado en la Sección 5.4.

20190101

Capitulo 5 Transformaciones Geometricas (Foley) Ultima Parte

5.6 REPRESENTACION MATRICIAL DE LAS TRANSFORMACIONES 3D

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.
Aquí utilizamos un sistema para diestros porque es la convención matemática estándar, aunque en gráficos 3D es conveniente pensar en un sistema para zurdos superpuesto en la cara de una pantalla (ver Fig. 5.15), ya que un zurdo  da la interpretación natural de los valores z más grandes que están más alejados del espectador.


Fig 5.15 El sistema de coordenadas para zurdos, con una pantalla de visualización superpuesta.
Observe que, en un sistema para zurdos, las rotaciones positivas son hacia la derecha cuando se mira desde un eje positivo hacia el origen. Esta definición de rotaciones positivas permite que se utilicen las mismas matrices de rotación dadas en esta sección para los sistemas de coordenadas de la derecha o de la izquierda.

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:

Considerando que cada fila es un vector:
  1. Cada uno es un vector unitario.
  2. Cada uno es perpendicular al otro (su producto escalar es cero).
  3. 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







Capitulo 5 Transformaciones Geometricas (Foley) 2a Parte


5.4 LA TRANSFORMACION DE VENTANA A PUERTO DE VISTA

Algunos paquetes de gráficos permiten que el programador especifique coordenadas primitivas de salida en un sistema de coordenadas mundiales de punto flotante, utilizando cualquier unidad que sea significativa para el programa de aplicación: angstroms, micrones, metros, millas, años luz, etc. El término mundo se usa porque el programa de aplicación representa un mundo que se crea o muestra interactivamente al usuario. Dado que las primitivas de salida se especifican en coordenadas mundiales, se debe indicar al paquete de subrutinas gráficas cómo asignar coordenadas mundiales a coordenadas de pantalla. Podríamos hacer este mapeo haciendo que el programador de aplicaciones proporcione el paquete de gráficos con una matriz de transformación para efectuar el mapeo. Otra forma es hacer que el programador de la aplicación especifique una región rectangular en coordenadas mundiales, llamada ventana de coordenadas mundiales, y una región rectangular correspondiente en coordenadas de pantalla, llamada ventana gráfica(viewport), en la que se asignará la ventana de coordenadas mundiales. La transformación que asigna la ventana a la ventana gráfica se aplica a todas las primitivas de salida en las coordenadas mundiales, por lo que las asigna a las coordenadas de la pantalla. La figura 5.10 muestra este concepto.


Fig 5.10 La ventana en coordenadas mundiales y la ventana gráfica(viewport) en coordenadas de pantalla determinan el mapeo que se aplica a todas las primitivas de salida en coordenadas mundiales.
  Como se ve en esta figura, si la ventana y la ventana gráfica(viewport) no tienen la misma relación altura-ancho, se produce una escala no uniforme. Si el programa de aplicación cambia la ventana o la ventana gráfica, las nuevas primitivas de salida dibujadas en la pantalla se verán afectadas por el cambio. Las primitivas de salida existentes no se ven afectadas por tal cambio.


Dada una ventana y una ventana gráfica(viewport), ¿cuál es la matriz de transformación que mapea la ventana de coordenadas mundiales a la ventana gráfica(viewport) en coordenadas de pantalla? Esta matriz se puede desarrollar como una composición de transformación de tres pasos, como se sugiere en la Fig. 5.11.

Fig 5.11 Los pasos para transformar una ventana de coordenadas mundiales en un viewport.
 

La ventana, especificada por sus esquinas inferior izquierda y superior derecha, se traslada primero al origen de las coordenadas mundiales. A continuación, el tamaño de la ventana se escala para que sea igual al tamaño de la ventana gráfica(viewport). Finalmente, se utiliza una traslación para posicionar la ventana gráfica(viewport). La matriz general Mwv es:


Multiplicando P = Mwv[x y 1]^T nos da el resultado esperado:


Muchos paquetes de gráficos combinan la transformación ventana a ventana gráfica(viewport) con el recorte de primitivas de salida contra la ventana. El concepto de recorte se introdujo en el Capítulo 3; La figura 5.12 ilustra el recorte en el contexto de ventanas y ventanas gráficas.

Fig 5.12 Las primitivas de salida en coordenadas mundiales se recortan contra la ventana.
Los que quedan se muestran en la ventana gráfica(viewport).

5.5 EFICIENCIA

La composición más general de las operaciones R, S y T produce una matriz de la forma
(5.35)
 La submatriz superior 2X2 es una matriz compuesta de rotación y escala, mientras que tx y ty son traslaciones compuestas. El cálculo de M • P como un vector multiplicado por una matriz de 3 X 3 toma nueve multiplicos y seis sumas. La estructura fija de la última fila de la ec. (5.35), sin embargo, simplifica las operaciones reales para


reduciendo el proceso a cuatro multiplicaciones y cuatro sumas, una aceleración significativa, especialmente porque la operación se puede aplicar a cientos o incluso miles de puntos por imagen. Por lo tanto, aunque las matrices 3x3 son convenientes y útiles para componer transformaciones 2D, podemos usar la matriz final de la manera más eficiente en un programa al explotar su estructura especial. Algunos multiplicadores de matriz de hardware tienen sumadores y multiplicadores paralelos, lo que disminuye o elimina esta preocupación.

Otra área en la que la eficiencia es importante es crear vistas sucesivas de un objeto, como una molécula o un avión, rotadas algunos grados entre cada vista sucesiva. Si cada vista se puede crear y mostrar lo suficientemente rápido (de 30 a 100 milisegundos cada una), entonces el objeto parecerá estar girando dinámicamente. Para lograr esta velocidad, debemos transformar cada punto y línea individual del objeto lo más rápido posible. Las ecuaciones de rotación (ecuación (5.6)) requieren cuatro multiplicaciones y dos sumas. Podemos disminuir el conteo de operaciones reconociendo que, como θ es pequeño (solo unos pocos grados), cosθ está muy cerca de 1. En esta aproximación, Eq. (5.6) se convierte en


lo que requiere solo dos multiplicaciones y dos sumas. El ahorro de dos multiplicaciones puede ser significativo en las computadoras que carecen de multiplicadores de hardware.
Sin embargo, la ecuación (5.37) es solo una aproximación a los valores correctos de x' y y': se genera un pequeño error. Cada vez que las fórmulas se aplican a los nuevos valores de x o y, el error se vuelve un poco más grande . Si repetimos las fórmulas indefinidamente, el error abrumará los valores correctos y la imagen giratoria comenzará a parecer una colección de líneas dibujadas al azar.
Una mejor aproximación es usar x' en lugar de x en la segunda ecuación:


Esta es una mejor aproximación que la ecuación. (5.37) porque el determinante de la matriz 2x2 correspondiente es 1, lo que significa que las áreas transformadas por la ecuación. (5.38) se mantienen sin cambios. Tenga en cuenta que también pueden surgir errores acumulativos al usar repetidamente las ecuaciones de rotación correctas.

fuente: Computer Graphics - Principles and Practice in C (2nd Edition).djvu


20181219

Capitulo 5 Transformaciones Geometricas(Foley)

Este capítulo presenta las transformaciones geométricas básicas en 2D y 3D utilizadas en los gráficos de computadora. Las transformaciones de traslación, escalado y rotación que se analizan aquí son esenciales para muchas aplicaciones de gráficos y se mencionarán ampliamente en los siguientes capítulos. Las transformaciones son utilizadas directamente por los programas de aplicación y dentro de muchos paquetes de subrutinas de gráficos. Un programa de aplicación de planificación urbana usaría la traslación para colocar símbolos para edificios y árboles en las posiciones apropiadas, rotación para orientar los símbolos y escalar para dimensionar los símbolos. En general, muchas aplicaciones utilizan las transformaciones geométricas para cambiar la posición, la orientación y el tamaño de los objetos (también llamados símbolos o plantillas) en un dibujo. En el Capítulo 6, la rotación, traslación y escala 3D se utilizarán como parte del proceso de creación de representaciones 2D de objetos 3D. En el Capítulo 7, vemos cómo un paquete gráfico contemporáneo utiliza las transformaciones como parte de su implementación y también las pone a disposición de los programas de aplicación.

5.1 TRANSFORMACIONES 2D

Podemos trasladar puntos en el plano (x, y) a nuevas posiciones sumando las cantidades de traslación a las coordenadas de los puntos. Para que cada punto P(x, y) sea movido por dx unidades paralelas al eje X y por dy unidades paralelas al eje Y al nuevo punto P'(x', y'), podemos escribir:

x' := x +dx,       y':= y+dy    (5.1)

si lo definimos en vectores seria:
 (5.2)

entonces (5.1) puede ser mas conciso:

P' := P + T      (5.3)

Podríamos trasladar un objeto aplicando la ecuacion(5.1) a cada punto del objeto. Debido a que cada línea en un objeto está formada por un número infinito de puntos, este proceso tomaría un tiempo infinitamente largo. Afortunadamente, podemos trasladar todos los puntos en una línea trasladando solo los puntos finales de la línea y dibujando una nueva línea entre los puntos finales trasladados; Esto también es válido para el escalado (estiramiento) y la rotación. La figura 5.1 muestra el efecto de trasladar el contorno de una casa a (3, -4).
Figura 5.1 Trasladado de una casa

Los puntos se pueden escalar (estirar) a sx a lo largo del eje x y a sy a lo largo del eje y en nuevos puntos por las multiplicaciones.

x' := sx*x,       y':= sy*y    (5.4)

En forma matricial sería así:


(5.5)


donde S es la matriz de la ecuación (5.5).

En la Figura 5.2, la casa está escalada por 1/2 en x y 1/4 en y. Observe que la escala es sobre el origen: la casa es más pequeña y está más cerca del origen. Si los factores de escala fueran mayores que 1, la casa sería más grande y más alejada del origen. Las técnicas para escalar alrededor de algún punto que no sea el origen se discuten en la Sección 5.2. Las proporciones de la casa también han cambiado: una escala diferencial, en la que se ha utilizado sx <> sy. Con una escala uniforme, en la que sx = sy, las proporciones no se ven afectadas.

Figura 5.2 Escalado de una casa. El escalado no es uniforme y la casa cambia su posición.
Los puntos se pueden girar a través de un ángulo θ sobre el origen. Una rotación se define matemáticamente por
(5.6)

En forma matricial tenemos:
(5.7)

donde R es la matriz de rotación en la ecuación (5.7). La figura 5.3 muestra la rotacion de la casa a 45°,Al igual que con la escala, la rotación es sobre el origen; la rotación sobre un punto arbitrario se discute en la Sección 5.2
Figura 5.3 Rotación de una casa. La caasa también cambia la posición.
 Los ángulos positivos se miden en sentido contrario a las agujas del reloj desde x hacia y. Para los ángulos negativos (en el sentido de las agujas del reloj), las identidades cos(-θ) = cosθ y sin (-θ) = -sinθ se pueden usar para modificar las ecuaciones. (5.6) y (5.7).
Figura 5.4 Derivación de la ecuación de rotacion.
La ecuación (5.6) se deriva fácilmente de la figura 5.4, en la que una rotación por θ transforma P(x, y) en P'(x',y'). Debido a que la rotación es sobre el origen, las distancias desde el origen hasta P y hasta P', marcadas con r en la figura, son iguales. Por simple trigonometría, encontramos que


(5.8)
y
(5.9)

Sustituyendo la Ecuación (5.8) en la ecuación (5.9) produce la ecuacion(5.6).

5.2 COORDENADAS HOMOGÉNICAS Y REPRESENTACIÓN MATRICIAL DE TRANSFORMACIONES 2D

La representación matricial para la traslación, escalado y rotacion son, respectivamente:


Desafortunadamente, la traslación se trata de manera diferente (como una adición) de la escala y la rotación (como multiplicaciones). Nos gustaría poder tratar las tres transformaciones de una manera consistente, para que puedan combinarse fácilmente.
Si los puntos se expresan en coordenadas homogéneas, las tres transformaciones se pueden tratar como multiplicaciones. Las coordenadas homogéneas se desarrollaron por primera vez en geometría y se aplicaron posteriormente en gráficos. Numerosos paquetes de subrutinas de gráficos y procesadores de visualización funcionan con coordenadas y transformaciones homogéneas.
En coordenadas homogéneas, agregamos una tercera coordenada a un punto. En lugar de estar representados por un par de números (x, y), cada punto está representado por una tripleta (x, y, W). Al mismo tiempo, decimos que dos conjuntos de coordenadas homogéneas (x, y, W) y (x', y', W') representan el mismo punto si y solo si uno es un múltiplo del otro. Por lo tanto, (2,3,6) y (4, 6, 12) son los mismos puntos representados por diferentes tripletas de coordenadas. Es decir, cada punto tiene muchas representaciones de coordenadas homogéneas diferentes. Además, al menos una de las coordenadas homogéneas debe ser distinta de cero: (0, 0, 0) no está permitido. Si la coordenada W no es cero, podemos dividir por ella: (x, y, W) representa el mismo punto que (x/W, y/W, 1). Cuando W es distinto de cero, normalmente hacemos esta división, y los números x / W y y / W se denominan coordenadas cartesianas del punto homogéneo. Los puntos con W = 0 se llaman puntos en el infinito, y no aparecerán muy a menudo en nuestras discusiones.
Las tripletas de coordenadas normalmente representan puntos en el espacio 3D, pero aquí los estamos utilizando para representar puntos en el espacio 2D. La conexión es la siguiente: si tomamos todos las tripletas que representan el mismo punto, es decir, todos las tripletas de la forma (tx, ty, tW), con t < > 0, obtenemos una línea en el espacio 3D. Así, cada punto homogéneo representa una línea en el espacio 3D. Si homogeneizamos el punto (dividir por W), obtenemos un punto de la forma (x, y, 1). Por lo tanto, los puntos homogeneizados forman el plano definido por la ecuación W = 1 en el espacio (x, y, W). La figura 5.5 muestra esta relación. Los puntos en el infinito no están representados en este plano.

Fig 5.5 El espacio de coordenadas homogeneas XYW, con el plano W=1 y el punto P(X,Y,W) proyectado en el Plano W=1.
Debido a que los puntos ahora son vectores de columna de tres elementos, las matrices de transformación, que multiplican un vector de punto para producir otro vector de punto, deben ser 3x3. En la forma de matriz 3x3 para coordenadas homogéneas, las ecuaciones de traslación Eq. (5.1) son
(5.10)

Advertimos al lector que algunos libros de texto de gráficos, utilizan una convención de matrices de premultiplicado por vectores de fila, en lugar de postcompletación múltiple por vectores de columna. Las matrices deben transponerse para pasar de una convención a otra, al igual que los vectores de fila y columna se transponen:

La Ecuacion (5.10) tambien puede expresarse como:
(5.11)

donde
(5.12)

¿Qué pasaría si un punto P es trasladado por T(dx1, dy1) a P' y despues transladado por T(dx2,dy2) a P''?
El resultado que esperamos intuitivamente es una traslación neta T (dx1 + dx2, dy1 + dy2). Para confirmar esta intuición, comenzamos con lo dado:

Ahora sustituimos la ecuación (5.13) dentro de la ecuacion(5.14) y obtenemos:
(5.15)
La matriz producto T(dx2,dy2)*T(dx1,dy2) es
(5.16)
La transalción neta es de hecho T(dx1+dx2,dy1+dy2). El producto de la matriz se conoce de diversas maneras como la composición, catenación, concatenación o composición de T (dx1, dy1) y T (dx2, dy2). Aquí, normalmente usaremos el término composición.
Similarmente, la ecuación de escalación (5.4) son reprensentadas de forma matricial como:
(5.17)
Definimos
(5.18)
tenemos
(5.19)
Así como las translaciones sucesivas son aditivas, esperamos que la escala sucesiva sea
multiplicativo. Dado:


entonces sustituimos la ecuación (5.20) dentro de la ecuación (5.21) y obtenemos:
(5.22)
La matriz producto S(x2,y2)*S(x1,y1) es
(5.23)
Así, las escalaciones son efectivamente multiplicativas.
Finalmente las ecuaciones de rotacion(5.6) pueden representarse como:
(5.24)
dejando:
(5.25)
tenemos:
(5.26)
La demostración de que dos rotaciones sucesivas son aditivas se deja como ejercicio.

En la submatriz 2x2 superior izquierda de la ecuación (5.25), considere cada una de las dos filas como vectores. Se puede mostrar que los vectores tienen tres propiedades:

  1. Cada uno es un vector unitario.
  2. Cada uno es perpendicular al otro (su producto punto es cero).
  3. Los vectores primero y segundo serán rotados por R(θ) para ubicarse en los ejes x y y positivos, respectivamente (en presencia de las condiciones 1 y 2, esto es equivalente a la submatriz que tiene un determinante de 1).

Las primeras dos propiedades también son verdaderas de las columnas de la submatriz 2x2. Las dos direcciones son aquellas en las que se rotan los vectores a lo largo de los ejes x y y positivos. Estas propiedades sugieren dos formas útiles de derivar una matriz de rotación cuando conocemos el efecto deseado de la rotación. Una matriz que tiene estas propiedades se llama ortogonal especial.

Un matriz de transformación de la forma:
(5.27)
donde la submatriz superior 2x2 es ortogonal, conserva los ángulos y las longitudes. Es decir, un cuadrado unitario sigue siendo un cuadrado unitario, y no se convierte en un rombo con lados unitarios, ni en un cuadrado con lados no unitarios. Estas transformaciones también se denominan transformaciones de cuerpo rígido, porque el cuerpo u objeto que se transforma no está distorsionado de ninguna manera. Una secuencia arbitraria de matrices de rotación y traslación crea una matriz de esta forma.
¿Qué se puede decir sobre el producto de una secuencia arbitraria de matrices de rotación, traslación y escala? Se denominan transformaciones afines y tienen la propiedad de preservar el paralelismo de las líneas, pero no las longitudes y los ángulos.
Fig 5.6 Un cubo unitario se gira en -45 ° y no tiene una escala uniforme. El resultado es una transformación afín del cubo unitario, en el que se mantiene el paralelismo de las líneas, pero no se mantienen ni los ángulos ni las longitudes.
 La Figura 5.6 muestra los resultados de aplicar una rotación de -45 ° y luego una escala no uniforme al cubo unitario. Está claro que esta secuencia no ha conservado ni los ángulos ni las longitudes, pero las líneas paralelas se han mantenido paralelas. Las operaciones adicionales de rotación, escala y traslación no causarán que las líneas paralelas dejen de ser paralelas. R(θ), S(sx, sy) y T(dx, dy) también son afines.
Otro tipo de transformación primitiva, las transformaciones de cizallamiento(shear), también son afines. Las transformaciones de corte bidimensional son de dos tipos: un corte a lo largo del eje x y un corte a lo largo del eje y.

Fig 5.7 Las operaciones de corte primitivo aplicadas al cubo unitario.
En cada caso, las longitudes de las líneas oblicuas son ahora mayores que 1.

 La figura 5.7 muestra el efecto de cortar el cubo unitario a lo largo de cada eje. La operación está representada por la matriz.
(5.28)
El término a en la matriz de corte es la constante de proporcionalidad.
 Nota que el producto SHx[x  y   1]^T es [x+ay   y   1]^T, demostrando claramente el cambio proporcional en x como una función de y.

similarmente la matriz
(5.29)
cizalla a lo largo del eje y.



5.3 COMPOSICION DE TRANSFORMACIONES 2D

La idea de composición fue introducida en la sección anterior. Aquí, usamos la composición para combinar las matrices fundamentales R, S y T para producir los resultados generales deseados. El propósito básico de componer transformaciones es ganar eficiencia aplicando una sola transformación compuesta a un punto, en lugar de aplicar una serie de transformaciones, una después de la otra.
Considere la rotación de un objeto sobre un punto arbitrario P1. Ya que sabemos cómo rotar solo sobre el origen, convertimos nuestro problema original (difícil) en tres problemas separados (fáciles). Por lo tanto, para rotar sobre P1 necesitamos una secuencia de tres transformaciones fundamentales:
Figura 5.8 Rotación de una casa sobre el punto P, con un ángulo teta.
  1. Transladar de tal manera que P1 esté en el origen.
  2. Rotar
  3. Transaldar de tal manera que el punto en el origen regrese a P1.
Esta secuencia esta ilustrada en la figura 5.8 en el que nuestra casa gira alrededor de P1(x1,y1).
La primera traslación es por (—x1, —y1), mientras que la traslación posterior es por la inversa (x1, y1).
El resultado es bastante diferente al de aplicar solo la rotación.
La Transformación Neta es:


Se utiliza un enfoque similar para escalar un objeto sobre un punto arbitrario P1. Primero, traslada de tal manera que P1 vaya al origen, luego escale y luego vuelva a trasladar a P1. En este caso, la transformación neta es

Supongamos que deseamos escalar, rotar y colocar la casa que se muestra en la Fig. 5.9 con P1 como el centro para la rotación y la escala.

Figura 5.9 Rotación y Traslación de una casa sobre el punto P1, de tal manera que lo que estaba en P1 está en P2
 La secuencia es trasladar P1 al origen, realizar el escalado y la rotación, y luego trasladar desde el origen a la nueva posición P2 donde se ubicará la casa. Una estructura de datos que registra esta transformación puede contener el (los) factor (es) de escala, el ángulo de rotación y los montos de conversión, y el orden en que se aplicaron las transformaciones, o simplemente puede registrar la matriz de transformación compuesta:
Si M1 y M2 representan una traslación, escalado o rotación ¿cuándo son conmutativas M1 y M2?  Es decir, ¿cuándo es M1 * M2 = M2 * M1? En general, por supuesto, la multiplicación de matrices no es conmutativa. Sin embargo, es fácil demostrar que, en los siguientes casos especiales, la conmutación se mantiene:

En estos casos, no debemos preocuparnos por el orden de manipulación de la matriz.

Hasta este punto debe estar comprendido lo que es la matriz de transformación y como podemos construir una a nuestras necesidades. Si aún existen dudas te recomiendo ver el siguiente video:



fuente: Computer Graphics - Principles and Practice in C (2nd Edition).djvu