Unidad 2 - Transformaciones geometricas
Las transformaciones geométricas son la o las operaciones geométricas que permiten crear una nueva figura a partir de una previamente dada. la nueva figura se llamará “homólogo” de la original.
Las transformaciones se clasifican en:
• directa: el homólogo conserva el sentido del original en el plano cartesiano
• inversa: el sentido del homólogo y del original son contrarios
además, también se pueden clasificar de acuerdo con la forma del homólogo con respecto al original en:
• isométricas: el homólogo conserva las dimensiones y ángulos. También se llaman “movimientos”, éstos son simetría axial y puntual, rotación y traslación.
• isomórficas: el homólogo conserva la forma y los ángulos. existe proporcionalidad entre las dimensiones del homólogo con el original. una de ellas es la homotecia.
• anamórficas: cambia la forma de la figura original. Una de ellas es la inversión (no la trataremos).
2.1 Transformaciones bidimensionales.
TRANSFORMACIONES BIDIMENSIONALES: Los procedimientos para desplegar dispositivos de salida y sus atributos, se puede crear una variedad de formas de figuras y graficas. En muchas aplicaciones, tambien hay una necesidad de alterar o manipular despliegues. Algunas veces se necesita reducir el tamanio de un objeto o grafica para colocarlo en un despliegue mayor. Tambien podria desearse probar la apariencia de modelos de disenio reacomodando las posiciones relativas y los tamanios tambien relativos de las partes del modelo. En aplicaciones de animacion, se necesita producir movimiento continuo de objetos desplegados alrededor de la pantalla. Estas diversas manipulaciones se llevan a cabo aplicando transformaciones geometricas adecuadas a los puntos coordenados de despliegue.
Las transformaciones basicas son la traslacion (ej2) , la escalacion y la rotacion.
TRANSFORMACIONES BASICAS: Los objetos basicos desplegados se definen por conjuntos de puntos coordenados. Las transformaciones geometricas son procedimientos para calcular nuevas posiciones de coordenadas de estos puntos, como lo requiere un cambio especificado en tamanio y orientacion del objeto.
2.1.1 Traslación.
Traslacion Una traslacion es el movimiento en linea recta de un objeto de una posicion a otra. Se traslada un punto de la posicion coordenada (x,y) a una nueva posicion (x’, y’) agregando distancias de traslacion, Tx y Ty , a las coordenadas originales: x’ = x + Tx, y’ = y + Ty El par de distancia de traslacion (Tx,Ty) se denomina tambien vector de traslacion o bien vector de cambio. Los poligonos se trasladan agrgando las distancias de traslacion especificadas a las coordenadas de cada punto extremo de la linea en el objeto.
Los objetos trazados con curvas se trasladan cambiando las coordenadas definidoras del objeto. Para cambiar la posicion de una circunferencia o elipse, se trasladan las coordenadas centrales y se vuelve a trazar la figura en la nueva localidad.
Las distancias de traslacion pueden especificarse como cualquier numero real (positivo, negativo o cero). Si un objeto se traslada mas alla de los limites del despliegue en coordenadas del dispositivo, el sistema podria retornar un mensaje de error, suprimir partes del objeto que sobrepasan los limites del despliegue o presentar una imagen distorcionada. ( ej1 )
Los sistemas que no contienen provisiones para manejar coordenadas que sobrepasan los limites del despliegue distorcionaran las figuras debido a que los valores coordenados desbordan las localidades de la memoria. Esto produce un efecto conocido como doblez en redondo, donde los puntos que sobrepasan los limites coordenados en una direccion se desplegaran en el otro lado del dispositivo del dispositivo de despliegue.
2.1.2 Rotación.
Rotacion La transformacion de puntos de un objeto situados en trayectorias circulares se llama rotacion. Este tipo de transformacion se especifica con un angulo de rotacion, el cual determina la cantidad de rotacion de cada vertice de un poligono. El ejemplo ilustra el desplazamiento de un punto de la posicion (x,y) a la posicion (x’,y’), como lo determina un angulo de rotacion especificado relativo al origen coordenado.
Se pueden hacer que los objetos giren alrededor de un punto arbitrario o el punto pivote de la transformacion de rotacion puede colocarse en cualqier parte en el interior o fuera de la frontera exterior de un objeto, el efecto de la rotacion consiste en oscilar el objeto con respecto a este punto interno. Con un punto pivote externo, todos los puntos del objeto se despliegan en trayectorias circulares alrededor del pivote.
2.1.3 Escalación.
Escalacion Una transformacion para alterar el tamanio de un objeto se denomina escalacion. Esta operacion puede efectuarse con poligonos multiplicando los valores coordenados (x,y) de cada vertice de frontera por los factores de escalacion Sx y Sy para producir las coordenadas transformadas (x’, y’).
x’ = x.Sx , y’ = y.Sx El factor de escalacion Sx hace objetos a escala en la direccion x, mientras que Sy lo hace en la direccion y.
Cualquier valor numerico positivo puede asignarse a los factores de escalacion Sx y Sy. Los valores menores que 1 reducen el tamanio de los objetos; los valores mayores que 1 producen un agrandamiento. Si se especifica un valor de 1 para Sx y Sy se mantiene inalterado el tamanio de los objetos. Cuando a Sx y Sy se les asigna el mismo valor, se produce una escalacion uniforme, la cual mantiene las propiedades relativas del objeto a escala. A menudo se utilizan valores desiguales de Sx y Sy en aplicaciones de disenio, donde las figuras se construyen a partir de unas cuantas formas basicas que pueden ser transformadas por transformaciones de escalacion
2.2 Coordenadas homogéneas y representación matricial.
Transformaciones en coordenadas homogéneas
Las transformaciones más comunes en graficación son escala, rotación y traslación.
Combinación de transformaciones Usualmente se requiere hacer varias transformaciones, como una escala seguida de una rotación. Si se requiere rotar un objeto alrededor de su propio centro, primero hay que trasladarlo al origen, luego rotarlo y finalmente regresarlo a su posición inicial. Conviene pues conocer las transformaciones inversas.
Forma matricial Multiplicación de matrices con matrices y con vectores, matriz idéntica o identidad, traspuesta, inversa.
2.3 Composición de transformaciones bidimensionales.
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
2.3.1 Traslaciones, rotaciones y escalaciones.
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
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
2.3.2 Rotación de punto de pivote general.
Rotación del punto pivote
Con un paquete de gráficas que sólo ofrece una función de rotación para girar objetos con respecto del origen de coordenadas, podemos generar casi cualquier punto pivote seleccionado (xr, yr) al realizar la siguiente secuencia de operaciones de traslación-rotación-traslación:
1. Traslade el objeto de modo que se mueva la posición de punto pivote al origen de la coordenadas.
2. Gire el objeto con respecto del origen de las coordenadas.
3. Traslade el objeto de manera que se regrese el punto pivote a su posición original.
2.3.3 Escalación del punto fijo general.
Una transformación de escalación altera el tamaño de un objeto. Se puede realizar esta operación para polígonos al multiplicar los valores de coordenadas (x,y) de cada vértice por los factores de escalación sx y sy para producir las coordenadas transformadas (x' , y').
El factor de escalación sx escala objetos en la dirección de x, mientras que el factor de escalación sy lo hace en la dirección de y.
Cuando se asignan el mismo valor a sx y sy' se general una escala uniforme. Y cuando se asignan valores distintos a sx y sy se obtiene un escala diferencial.
Podemos encontrar la localización de un objeto escalonado al seleccionar una posición llamada punto fijo, que debe permanecer sin cambio después de la transformación de escalación.
ALIASING Y ANTI-ALIASING
Está es una de las s técnicas más importantes de hacer los gráficos y el texto, fáciles de leer y de satisfacer el ojo humano en la en pantalla es el anti-aliasing. El anti-aliasing es una manera creativa de conseguir que los contornos de la imagen aparezca liso y no con aspecto de cierra.
2.3.4 Propiedades de concatenación.
La operación por la cual dos caracteres se unen para formar una cadena de caracteres (o string). También se puede concatenar dos cadenas de caracteres o un carácter con una cadena para formar una cadena de mayor tamaño. Algunos ejemplos serían:
§ 'a' concatenado 'b' → "ab"
§ "ABCD" concatenado 'b' → "ABCDb"
§ 'a' concatenado "XYZ" → "aXYZ"
§ "ABCD" concatenado "XYZ" → "ABCDXYZ"
Javascript y VBS
Se dice en Javascript y otros lenguajes informáticos como el VBScript, la unión de varias cadenas con el operador +, que sirve tanto para unir cadenas como parasumar números
No es lo mismo:
5 + 4
da 9
que,
"5" + "4"
da 54
Por ello según como use el Script JavaScript deberá usar un método u otro.
PHP y Perl
En Php y perl se concatena con un punto (.)
Por ejemplo, en PHP:
$_H1 = "Ignacio";
$_H2 = "Alex";
echo $_H1. " y ". $_H2. " son hermanos.";
Dará como resultado la cadena:
Ignacio y Alex son hermanos.
2.4 Transformación ventana-área de vista.
Transformación ventana-área de vista
Consideremos que tenemos una ventana del mundo real cuyos límites son {x_min, x_max, y_min, y_max}
Deseamos mapear a coordenadas de pantalla con límites {u_min, u_max, v_min, v_max}. Para tal propósito debemos :
1.- Trasladar las coordenadas mínimas al origen T(-x_min, -y_min),
2.- Aplicar un escalamiento anisotrópico dado por S((u_max-u_min)/(x_max-x_min), (v_max-v_min)/(y_max-y_min)) y
3.- Trasladar las coordenadas a un nuevo origen u_min, v_min T(u_min, v_min)
2.5 Transformaciones de la composición general y de eficiencia computacional.
Con los procedimientos para desplegar primitivos de salida y sus atributos, podemos crear una variedad de imágenes y gráficas. En muchas aplicaciones es necesario alterar o manipular los despliegues. Se crean aplicaciones de diseño y planos de construcciones al ordenar las orientaciones y los tamaños de las partes que componen la escena. Y se producen animaciones al mover la ?cámara? o los objetos en una escena a lo largo de las trayectorias de la animación. Los cambios de orientación, tamaño y forma se realizan con transformaciones geométricas que alteran las descripciones de las coordenadas de los objetos. Las transformaciones geométricas básicas son traslación, rotación y escalación. Otras transformaciones que se aplican con frecuencia en objetos incluyen la reflexión y el recorte.
La traslación mueve un objeto en una trayectoria de línea recta de una posición a otra. La rotación mueve un objeto de una posición a otra en una trayectoria circular alrededor de un punto pivote específico (punto de rotación). La escalación cambia las dimensiones de un objeto en relación con un punto fijo específico.
Es posible expresar las transformaciones geométricas bidimensionales como operadores de matriz de 3 por 3, de modo que las secuencias de las transformaciones se pueden concatenar en una sola matriz compuesta. Así, obtenemos una formulación eficiente, la cual nos permite reducir los cálculos mediante la aplicación de la matriz compuesta en las posiciones iniciales de las coordenadas de un objeto para obtener las posiciones finales transformadas. Para hacer esto, también necesitamos expresar las posiciones de las coordenadas bidimensionales como columnas de tres elementos o matrices de renglón. Elegimos una representación de matriz de columna para los puntos de coordenadas porque ésta es la norma matemática estándar y de igual forma muchos paquetes de gráficas también la siguen. Para las transformaciones bidimensionales, las posiciones de las coordenas se representan con coordenadas homogéneas de tres elementos asignados a la tercera coordenada (homogénea) el valor 1.
Las transformaciones compuestas se forman como multiplicaciones de cualquier combinación de matrices de traslación, rotación y escalación. Es posible emplear las combinaciones de traslación y rotación para las aplicaciones de animación y podemos utilizar las combinaciones de rotación y escalación para escalar objetos en cualquier dirección específica. En general, las multiplicaciones de matriz no son conmutativas. Por ejemplo, se obtienen resultados diferentes si se cambia el orden de una secuencia de traslación-rotación. Una secuencia de transformación que sólo comprende traslaciones y rotaciones es una transformación de cuerpo rígido, puesto que los ángulos y distancias permanecen sin algún cambio. Además, la submatriz superior izquierda de una transformación de cuerpo rígido es una matriz ortogonal, de esta forma las matrices de rotación se pueden formar al establecer la submatriz superior izquierda de 2 por 2 igual que los elementos de dos vectores unitarios ortogonales. Los cálculos en las transformaciones de rotación se pueden reducir haciendo uso de aproximaciones para las funciones se seno y coseno cuando el ángulo de rotación es pequeño. Sin embargo, en muchos pasos de la rotación, el error de aproximaciones se puede acumular hasta tener un valor considerable.
Otras transformaciones incluyen las reflexiones y los recortes. Las reflexiones son transformaciones que giran un objeto 180º con respecto de un eje de reflexión. Esto produce una imagen de espejo del objeto con respecto de ese eje. Cuando el eje de reflexión es perpendicular al plano xy, la reflexión se obtiene como una rotación en el plano xy. Cuando el eje de reflexión se encuentra en el palno xy, la reflexión se obtiene como una rotación en un plano que es perpendicular al plano xy. Las transformaciones de recorte distorsionan la forma de un objeto al cambiar los valores de las coordenadas x o y por una cantidad proporcional a la distancia de las coordenadas de una línea de referencia de recorte.
Las transformaciones entre los sistemas de coordenadas cartesianas se logran con una secuencia de transformaciones de traslación-rotación. Una forma de especificar un nuevo marco de referencia de las coordenadas es dar la posición del nuevo origen de las coordenadas y la dirección del nuevo eje y. Similarmente, la dirección del nuevo eje x se obtiene al girar el vector de la dirección y 90º en el sentido de las manecillas del reloj. Las descripciones de coordenadas de los objetos en el marco de refencia anterior se transfieren a la referencia nueva con la matriz de transformación que superpone los nuevos ejes de las coordenadas sobre los anteriores. Esta matriz de transformación se puede calcular como la concatenación de una traslación que mueve el nuevo origen hacia el origen de las coordenadas anterior y una rotación para alinear los dos conjuntos de ejes. La matriz de rotación se obtiene de los vectores unitarios en las direcciones x y y para el sistema nuevo.
Las transformaciones geométricas bidimensionales son transformaciones afines. Es decir, se pueden expresar como una función lineal de las coordenadas x y y. Las transformaciones afines transforman las líneas paralelas en líneas paralelas y transforman los puntos finitos en puntos finitos. Las transformaciones geométricas que no comprenden la escalación ni el recorte también conservan los ángulos y las longitudes.
Generalmente, las funciones de transformación en los paquetes de gráficas sólo se proporcionan para traslación, rotación y escalación. Estas funciones incluyen los procedimientos individuales para crear una matriz de traslación, rotación o escalación, así como las funciones para generar una matriz compuesta dados los parámetros para la secuencia de transformación.
Las transformaciones de rastreo rápidas se pueden llevar a cabo al mover los bloques de pixels. Esto evita el cálculo de las coordenadas transformadas para un objeto y la aplicación de rutinas de conversión de rastreo para desplegar el objeto en la nueva posición. Tres operaciones de rastreo comunes (bitBlts o pixBlts) xon copiar, leer y escribir. Cuando un bloque de pixels se mueve a una posición nueva en el búfer de estructura, simplemente podemos reemplazar los valores previos de los pixels o podemos combinar los valores de los pixels al utilizar operaciones aritméticas o de Bool. Las traslaciones de rastreo se realizan al copiar un bloque de pixels a una nueva posición en el búfer de estructura. Las rotaciones de rastreo en los múltiplos de 90º se obtienen al manipular las posiciones de renglón y columna de los valores de los pixels en un bloque. Otras rotaciones se llevan a cabo primero con la diagramación de las áreas de pixels giradas en las posiciones de destino en el búfer de estructura y después con el cálculo de las áreas superpuestas. La escalación en las transformaciones de rastreo también se logra al diagramar las áreas de pixels transformadas en las posiciones de destino del búfer de estructura.
2.6 Representación matricial de transformaciones tridimensionales.
Las transformaciones geométricas tridimensionales permiten construir escenarios en tres dimensiones a partir de primitivas geométricas simples (esfera, cubo, cono, cilindro, etc). En concreto, las transformaciones de traslación, escalado y rotación son indispensables para esta
tarea y constituyen un punto muy importante en en la materia.
El tema pretende mostrar una traslación, un escalado o una rotación sobre una primitiva geométrica en tres dimensiones. Por ejemplo, si se desea hacer algo tan simple como girar un cubo un ángulo dado alrededor de un eje de coordenadas resulta muy complicado de explicar mediante dibujos 2D que sólo muestren la situación inicial y final del cubo, y que no muestran como el cubo sufre dicha transformación y porqué la situación final es la que es.
Las transformaciones geométricas 3D que se estudian son tres en concreto: traslación,escalado y rotación.
• Traslación. Consiste en desplazar un objeto a una nueva posición. Las nuevas coordenadas se obtienen mediante las siguientes ecuaciones:
− x’= x+Tx
− y’= y+Ty
− z’= z+Tz
donde (Tx, Ty, Tz) son los factores de traslación
• Escalado. Consiste en cambiar el tamaño de un objeto. Las nuevas coordenadas se obtienen mediante las siguientes ecuaciones:
− x’= x Sx
− y’= y Sy
− z’= z Sz
donde (Sx, Sy, Sz) son los factores de escalado
• Rotación. Consiste en girar un objeto alrededor de uno de los ejes de coordenadas. Respecto al eje Z, por ejemplo, las nuevas coordenadas se obtienen mediante las siguientes ecuaciones:
− x’= x cos(α)- y sen(α)
− y’= x sen(α)+ y cos(α)
− z’= z
donde α es el angulo de giro
2.7 Composición de transformaciones tridimensionales.
Composición de transformaciones 3D.
Hay transformaciones que no se pueden considerar mediante transformaciones complejas. Para ello se divide el problema complejo en subproblemas más simples. También se puede resorber directamente a partir de las propiedades de las matrices ortogonales.
Nodo Transform.
Por defecto todos los objetos son creados en el centro del escenario de realidad virtual. El primer paso es conocer el sistema de coordenadas usado por el lenguaje, para poder colocar un objeto en otro punto.
En VRML tenemos:
Eje X derecha (+), izquierda (-)
Eje Y arriba (+), abajo (-)
Eje Z delante (+), atrás (-)
Un mundo virtual tiene su sistema de coordenadas situado en el centro. Con el nodo Transform, se determina un nuevo sistema de coordenadas para un grupo de objetos.
Este nuevo sistema de coordenadas sufre unas transformaciones: puede ser trasladado a un punto determinado, puede ser girado un determinado ángulo y puede tener una escala distinta a la original. El grupo de objetos especificados en el nodo sufrirán las mismas transformaciones, es decir, serán trasladados, girados y variados de escala.
La estructura general del nodo Transform es:
Transform{
translation x y z
rotation x y z Radianes
scale x y z
children[
]
}
En este nodo nos encontramos los campos de translación, rotación y escala. El campo children, es donde se especifican los objetos que sufrirán esas transformaciones. No es necesario que estén los tres términos en una transformación.
Translación.
Para realizar translaciones en VRML, podemos realizarlas con el campo translation. Este campo permite indicar la posición a la cual colocamos el sistema de coordenadas perteneciente al objeto o grupo de objetos.
La estructura de este campo es:
Transform{
translation x y z
children[
]
}
X = distancia del desplazamiento en el eje x.
Y = distancia del desplazamiento en el eje y.
Z = distancia del desplazamiento en el eje z.
Realizamos un ejemplo, para comprender mejor el campo translation.
#VRML V2.0 utf8
#Iluminacion
PointLight{
color 1.0 1.0 1.0
location 20.0 20.0 20.0
intensity 1.0
ambientIntensity 1.0
}
#Colocamos los ejes de coordenadas con pequeños cilindros.
DEF Eje Shape{ appearance Appearance{ material Material{ diffuseColor 1 0 0 } }
geometry Cylinder{ height 200 radius 0.1 }}
Transform{ rotation 0 0 1 1.57 children[ USE Eje]}
Transform{ rotation 1 0 0 1.57 children[ USE Eje]}
#Hacemos un objeto en el origen.
DEF Objeto Group{
children[
Shape{ appearance Appearance{ material Material{}}
geometry Box{ size 1 10 1 }}
Shape{ appearance Appearance{ material Material{}}
geometry Sphere{ radius 2.5 }}
Shape{ appearance Appearance{ material Material{}}
geometry Cylinder{ height 0.15 radius 4}}
]}
#Transladamos una copia del objeto de origen.
Transform{
translation 10 10 0
children[ USE Objeto
]}
No hay comentarios:
Publicar un comentario