A partir de primitivas podemos generar escenas 2d cambiando, por ejemplo, orientaciones y tamaño de las distintas componentes; también podemos generar animaciones moviendo los objetos en la escena a lo largo de distintos caminos.
Estos cambios en orientación, tamaño y forma se llevan a cabo mediante transformaciones geométricas que alteran las descripciones de las coordenadas de los objetos: La traslación, la rotación, el escalado y el sesgado son ejemplos de transformaciones geométricas, entonces podemos decir que trabajamos objetos o gráficos bidimensionales.
Otro ejemplo de aplicación es utilizar la isometría, que es un tipo de proyección en tres dimensiones en el que todos los planos principales están dibujados paralelamente a los correspondientes ejes y en escalas de magnitud real; generalmente las horizontales están dibujadas a 30 grados de la normal del eje horizontal y las verticales permanecen paralelas a la normal del eje vertical. Tiene un efecto de vista desde un punto, visualizándose diversos tamaños.
¿Qué es Composición de transformaciones 2D?
Es combinar una serie de operaciones básicas, para generar una operación compleja que involucre cambios de posición, orientación y escala simultáneos sobre un objeto. Esta concatenación se realiza mediante un producto de matrices, cada una de las cuales es la matriz de definición de la correspondiente operación básica. Las aplicaciones utilizan movimientos más complejos que se pueden conseguir combinando las transformaciones básicas, mencionadas.
En general, es el conjunto de pasos, transformaciones, movimientos, efectos, aplicaciones y operaciones simples y complejas que se realizan encadenadamente para modificar una imagen, desde el principio hasta los resultados esperados.
¿Cómo se puede aplicar a un objeto una operación compleja en la que intervengan varias operaciones básicas encadenadas?.
Empleando la composición o multiplicación de las matrices asociadas a las operaciones básicas.
Ejemplo: Rotar un objeto con respecto a un punto arbitrario P1 distinto del origen de coordenadas.
Se convierte el problema original en tres subproblemas separados y sencillos de resolver: 1.- Trasladar el punto P1 al origen de coordenadas; 2.- Rotar el objeto y 3.- Trasladar P1 a su posición original.
Una estructura de datos que registre esta información podría contener el factor o factores de escalado, el ángulo de rotación y las cantidades de traslación, así como el orden de las transformaciones. O bien, se podría registrar la matriz de transformación compuesta.
El orden de ejecución es importante, dado que las matrices no siempre cumplen la propiedad conmutativa. Sin embargo, en ciertos casos especiales esta propiedad sí se cumple y no es necesario atender al orden de ejecución de las operaciones.
1.- Traslación-rotación-escalado-escalado y 2.- Traslación-rotación-escalado-rotación.
__________________________________________________________________________________
Composición de transformaciones bidimensionales.
Traslación, rotación, sesgado y escalado.
La composición de transformaciones bidimensionales consiste en la mezcla de las transformaciones bidimensionales básicas como son traslación, sesgado y escalado.
Notemos que no mencionamos la rotación como una transformación básica, esta es en realidad la combinación de escalado y sesgado.
Estas transformaciones se representan mediante un matriz de tres por tres como esta en la siguiente figura . Los elementos a, b, c,d, tx y ty. Las posiciones adicionales u, v y w no las tomaremos en cuenta porque por el momento no son importantes.
El significado para cada posición es la siguiente
a: escalado en el eje x.
b: sesgado en el eje y.
c: sesgado en el eje x.
d: escalado en el eje y.
tx: traslación en el eje x
ty: traslación en el eje y
Para aplicar alguna(s) de las transformaciones a un punto se necesita resolver la siguiente formula donde x y y representa la posición original del punto, x’ y y’ representan la nueva posición, los valores restantes representan los datos para realizar la transformación requerida.
x' = x*a + y*c + tx
y' = x*b + y*d + ty
Para aplicar la rotacion nuestra matriz quedara de la siguiente forma donde ángulo representa los grados a girar la imagen
Notar que la rotación se realiza con referencia al punto de origen, en caso de que se quiera rotar una imagen sobre si misma, es necesario moverla al origen, rotarla y regresarla a su punto original.
Ahora estas operaciones no las tenemos que llevar a cabo manualmente ya que existe un objeto llamado matrix el cual tiene implementada las funciones de escalado, sesgado, traslado y rotado
Al momento de crear el objeto matrix deberemos pasarle como parámetros los valores a, b, c, d, tx y ty; en caso de no pasarle los valores la matrix que se utilizara será una matrix identidad.
Los ejemplos son los siguientes:
import flash.geom.Matrix;
var my_matrix = new Matrix( a, b, c, d, tx, ty );
translate(tx:Number, ty:Number) : Void
scale(sx:Number, sy:Number) : Void
rotate(angle:Number) : Void
identity() : Void