SEPSNESTDGEST
INSTITUTO TECNOLOGICO DE MINATITLAN
INGENIERIA EN SISTEMAS COMPUTACIONALES
ASIGNATURA: GRAFICACION
TEMA: RANSFORMACIONES GEOMETRICAS TRANSFORMACIONES
CATEDRATICO: WENDY CARRANZA DIAZ
PRESENTA: GARCIA RODRIGUEZ ELBA IPARREA MARIN GUADALUPE
MINATITLAN, VER. 17 DE NOVIEMBRE NOVIEMBRE DEL DEL 2010
1
INDICE Introducción.
3
Transformaciones 2d.. 4 Rotación7 Escalación 9 Java 2d.. 10 Opengl 13 3d max.. 17 Conclusión.. 22 Bibliografías 23
2
INTRODUCCIÓN Una de las mayores virtudes de los gráficos generados por ordenador es la facilidad con se pueden realizar algunas modificaciones sobre las imágenes. Algunos ejemplos son:
y
Un gerente puede cambiar las escalas de las gráficas de un informe.
y
Un arquitecto puede ver un edificio desde distintos puntos de vista.
y
Un
y
Un
cartógrafo animador
puede puede
cambiar modificar
la la
escala
posición
de de
un un
mapa.
personaje.
Estos cambios son fáciles de realizar porque la imagen gráfica ha sido codificada en forma de números y almacenada en el interior del ordenador. Los números son susceptibles a las operaciones matemáticas denominadas transformaciones.Las transformaciones nos permiten alterar de una forma uniforme toda la imagen. Esto supone un complemento muy útil para las técnicas de dibujo manual, donde es normalmente más fácil modificar una pequeña porción del dibujo que crear un dibujo completamente nuevo. A continuación veremos transformaciones geométricas como el cambio de escala, la traslación y la rotación. Veremos cómo se expresan de una forma sencilla mediante multiplicaciones de matrices.
3
TRANSFORMACIONES
2D
Las transformaciones 2D o también llamada Transformaciones den Dos Dimensiones. Estos tipos de transformaciones aplicados en un sistema grafico deberán permitir que tanto objetos como imágenes puedan incluir este tipo de transformación. Aplicándola nos dice que podemos construir o modificar imágenes u objetos.
Este tipo de transformación se pueden aplicar en 3 tipos básicos que son: l a rotación, l a trasl ación, y el escal amiento.
Cabe destacar que al aplicar este tipo de transformación utiliza puntos o ejes que son (x, y) para poder generar un nuevo punto (x´, y´). Los objetos se definen mediante
un conjunto de puntos. Las transformaciones son
procedimientos para calcular nuevas posiciones en estos dos puntos, cambiando el tamaño y la orientación de objeto.
A continuación de explicaran los 3 tipos de transformaciones básicas en 2D.
TRASLACIÓN Nos
dice que una traslación pueden entenderse como movimientos
directos sin cambios de orientación, es decir, mantienen la forma y el tamaño de las figuras u objetos trasladados, a las cuales deslizan según el vector. Dado el carácter de isometría para cualesquiera
puntos P y Q se cumple la siguiente identidad entre distancias: De otra forma:
4
Las coordenadas
(x, y) de un objeto se
transforman a (x´, y´) de acuerdo a las formulas:
IMPORTANTE: Es una transformación rígida
el objeto no se deforma
Para trasladar líneas rectas trasladamos sólo sus extremos Para trasladar polígonos, trasladamos sólo sus vértices y redibujamos
Su matriz es:
En forma de coordenadas:
Extra información sobre el tema
La traslación es una transformación puntual por la cual a todo punto A del plano le corres ponde otro punto A' también del plano de forma que
. Siendo
el vector que define la traslación.
La traslación se designa por
5
, luego
.
El punto A' es el punto trasladado de A. Un punto y su trasladado se dice que son homólogos
Tipos
de
Traslaciones
Traslación de una recta Una recta se transforma, mediante una traslación, en una recta paralela.
Traslación de una circunferencia
La homóloga de una circunferencia mediante una traslación es otra circunferencia de igual radio que tiene como centro el punto homólogo del centro de la circunferencia original.
Composición de traslaciones Al aplicar sucesivamente dos traslaciones de vectores cuyo vector es la suma de los vectores:
6
, se obtiene otra traslación
ROTACIÓN La rotación es un movimiento angular de cada uno de los puntos a partir de un punto que es el centro de giro. Para este movimiento es necesario dar un ángulo y el punto centro de giro. Dados un punto O y un ángulo , se llama giro de centro O y ángulo a una transformación G que hace corresponder a cada punto P otro P' = G (P) de modo que:
El sentido de giro positivo de es del contrario al movimiento de las agujas del reloj. Los giros son movimientos isométricos, dado que conservan las distancias. Su fórmula es:
Su representación matricial es:
Importante: y
7
Es una transformación rígida el objeto no se deforma
y y
Para rotar líneas rectas rotamos sólo sus extremos Para rotar polígonos, rotamos sólo sus vértices y redibujamos
En matemáticas las rotaciones son transformaciones lineales que conservan las normas en espacios anales en los que se ha definido una operación de producto interior. La matriz de transformación tiene la propiedad de ser una matriz unitaria, es decir, es ortogonal y su determinante es 1. Sea un vector A en el plano cartesiano definido por sus componentes vectorialmente a través de sus componentes:
x
e y , descrito
La rotación de un cuerpo alrededor de un eje (exterior o interior al cuerpo) corresponde a un movimiento en el que los distintos puntos del cuerpo presentan velocidades que son proporcionales a su distancia al eje. Obviamente, los puntos del cuerpo situados sobre el eje (en el caso de que este sea interior al eje) permanecen en reposo.
y
y
8
La orientación del cuerpo en el espacio cambia continuamente durante la traslación.
Un ejemplo de rotación el de la Tierra alrededor de su propio eje de rotación, con un periodo de rotación de un día sidéreo.
ESCALACIÓN El escalamiento modifica el tamaño del objeto. Para obtener este efecto, se multiplica cada par coordenado (x, y) por un factor de escala en la dirección x y en la dirección y para obtener (x´, y´). Representación Matricial:
. Si la Consideremos un punto P 1=[x 1y 1] como una matriz T , obtendremos otra matriz multiplicamos por una matriz que puede ser interpretada como otro punto.
Cada una de las nuevas coordenadas x tiene el doble de valor que las antiguas. Las líneas horizontales serán dos veces más largas en la nueva imagen. La nueva imagen tendrá la misma altura, pero parecerá que la hemos estirado hasta alcanzar el doble del ancho original.
Importante Es una transformación rígida el objeto no se deforma Para escalar líneas rectas escalamos sólo sus extremos Para escalar polígonos, escalamos sólo sus vértices y Re dibujamos.
y
9
JAVA 2D Las transformaciones que se pueden realizar con Java2D son las definidas por los métodos rotate (),scale (),translate () oshear (); por tanto, las transformaciones que se pueden hacer con estos métodos son rotar, escalar y trasladar, mientras que el método shear () realiza una combinación de ellas. Para poder realizar transformaciones se necesita crear un objeto de la clase Java a tope: Java2D
AffineTransform Sobre este objeto se aplicará cualquier método de transformación y será también el que se pase al contexto de Graphics2D a través del método transform (). En su aplicación se trasladan coordenadas (0,0) para que coincida con el centro de la ventana y luego se dibuja el texto Java2D varias veces con una rotación progresiva de 45º; nótese cómo cada rotación de 45º se hace con respecto a la anterior, esto es, no se hacen traslaciones de 45º, 90º, 135º, etc. sino siempre de 45º con respecto a la hecha previamente, lo que produce el efecto deseado
Figuras geométricas Java2D provee varias clases, pertenecientes a los paquetes java.awt y java.awt.geom , que definen figuras geométricas simples, tales como puntos, líneas, curvas y rectángulos. Usando las clases geométricas, es posible definir y manipular virtualmente cualquier objeto bidimensional de una manera sencilla. Las clases e interfaces a utilizar para este fin son las siguientes:
Interfaces: 1. PathIterator: define métodos para iterar sobre los distintos segmentos o sub trazos que conforman el contorno de una figura o rasgo tipográfico
10
2. Shape: proporciona un conjunto básico de métodos para describir y generar contornos de objetos geométricos. Es implementada porGeneralPath y una multitud de clases geométricas.
Clases: 1. Área: representa una área geométrica (con la forma que sea) que soporta operaciones de intersección, unión, etc. para obtener nuevas áreas con formas diferentes. 2. FlatteningPathIterator: se ha comentado que PathIterator proporciona los sub trazos de un contorno; estos sub trazos pueden ser segmentos o curvas de escasa complejidad. La clase FlatteningPathIterator es igual a PathIterator pero siempre devuelve segmentos, de ahí lo de flattening (aplanar en español). 3. GeneralPath: implementa a Shape. Representa el trazo de un objeto geométrico construido a partir de líneas y curvas cuadráticas y cúbicas (curvas que pueden expresarse matemáticamente con escasa complejidad). 4. RectángularShape: proporciona la base de un gran número de figuras (Shape) que se dibujan enmarcadas en un rectángulo.
Coordenadas de usuario El origen de las coordenadas de usuario está situado en la esquina superior izquierda del objeto Graphics2D: este punto sería el (0,0). A medida que se incrementa la x (primer valor de la coordenada) habrá un desplazamiento hacia la derecha y a medida que se incrementa la y (segundo valor de la coordenada) habrá un desplazamiento hacia abajo.
Coordenadas de dispositivo Java2D define tres bloques de información necesarios para soportar la conversión entre las coordenadas de usuario y las de dispositivo. Esta información se representa mediante y tres objetos de las clases: GraphicsEnvironment, GraphicsDevice GraphicsConfiguration.
11
En el código siguiente se invoca al método shear() para realizara una transformación en general, ya que este método realiza una composición de las anteriores transformaciones.
Para especificar el estilo de composición que debe usarse, hay que añadir un objeto AlphaComposite al contexto de Graphics2D invocando a setComposite(). AlphaComposite , que es una implementación de la interfaz Composite, soporta una variada gama de opciones de composición, de manera que las instancias de esta clase engloban una regla de composición que describe como mezclar un color existente con otro nuevo. Las reglas de composición aparecen en la siguiente tabla:
12
OPENGL OpenGL proporciona funciones para controlar la traslación, rotación y escalado. Estas transformaciones se representan como matrices 4x4 ordenadas como vectores columna, tal y como se muestra en la siguiente figura: Recuerda que en C, el primer elemento de un array tiene subíndice 0. La familia de funciones que implementan las transformaciones es:
voidglTranslate{fd}(TIPO x, TIPO y, TIPO z); voidglTranslatef(float x, float y, float z); voidglTranslated(double x, dluble y, double z); voidglRotate{fd}(TIPO angulo_en_grados, TIPO x, TIPO y, TIPO z); voidglScale{fd}(TIPO sx, TIPO sy, TIPO sz);
OpenGL desarrolla diversas transformaciones de tipo matricial como por ejemplo:
13
Escalado
Traslación
Rotación
Deformar Es la llamada transformación de "Shearing ". Consiste en hacer que alguna de las componentes de un vértice varíe linealmente en función de otra. Me explico, se trata por ejemplo de alterar el valor de la X y de la Y en función del de la Z. Se consiguen efectos de distorsión muy interesantes para ciertas animaciones. Os dejo las matrices a aplicar:
14
Premultiplicación y postmultiplicación Existen dos convenciones en cuanto a uso de transformaciones geométricas: La de Robótica Ingeniería y la de Gráficos. En ambos casos se realizan exactamente las mismas operaciones pues tanto puedo querer mover un brazo robot como un personaje sobre mi juego 3D. Pero en cada caso se sigue una metodología distinta. y y
Los puntos se toman como vectores en columna que se multiplican a las matrices por la derecha. Y además el orden de las transformaciones, de primera a última a aplicar, es de derecha a izquierda. En cambio en Robótica se utilizan vectores de tipo fila, o renglón, que se multiplican por la izquierda. Las matrices se ordenan de izquierda a derecha en cuanto a orden de las transformaciones. Es decir, se premultiplica.
15
Aquí gráficamente lo que buenamente he intentado expresar escribiendo:
Dónde Pf es el punto transformado final, Pi el inicial del que parto, T1 la primera transformación a aplicar, T2 la segunda y así sucesivamente. Pero ojo que en ambos casos tenemos que multiplicar las matrices como siempre nos han enseñado, es decir, de izquierda a derecha. Sólo hay que fijarse en la convención que se usa porque eso define qué forma tienen nuestros puntos, porque lado los he de multiplicar y en qué orden debo ir añadiendo las transformaciones.
16
La figura siguiente nos muestra cuales son las matrices genéricas a utilizar. Ahí están deducidas y nos encargaremos de darles valores a los números. Los escalares son todos números reales a definir por nosotros y los cos / sin asumen un ángulo cualquiera también a nuestro libre albedrío:
D MAX
3
Conceptos matemáticos Para poder expresarnos y comunicarnos de un modo correcto en el ámbito 3D, necesitamos tener claros y dominar los fundamentos geométricos, es decir, asimilar conceptos como sistema de coordenadas, vector, normal etc. de un modo intuitivo, y no sólo como definiciones aprendidas de memoria.
Un sistema de coordenadas es un conjunto de valores que permiten definir unívocamente la posición de cualquier punto de un espacio geométrico respecto de un punto
17
denominado origen. En el modelaje 3D toma sentido el sistema de coordenadas universal frente al local, explicado más adelante.
Sistema de coordenadas Una escena puede identificarse con las coordenadas en 3 dimensiones del espacio en las cuales tiene lugar la renderización. Este espacio a menudo se llama sistema de coordenadas universal, o world (mundo). Pero al operar con los objetos de la escena, podremos utilizar diferentes sistemas de coordenadas, como por ejemplo el sistema de coordenadas local del mismo objeto. Cuando realicemos una transformación a un objeto (entre otras operaciones), la realizaremos respecto a un sistema de coordenadas que nosotros seleccionaremos (por defecto se hará respecto al sistema de coordenadas de la vista -View-)
Ejemplo del sistema de coordenadas View ( el establecido por defecto), donde los ejes de coordenadas se intercambian en función del visor que empleemos. Entonces: eje siempre X: hacia eje siempre Y: eje Z: siempre apunta hacia el usuario
la
derecha apunta
de hacia
la
vista arriba
Conceptos de geometría en modelaje 3D Polígonos En modelación, consideramos un polígono a cualquier forma plana y cerrada (con su primer y último vértice perfectamente coincidentes). Un polígono también puede ser una figura 2D, una Forma cerrada cuyos primer y último vértice coinciden.
Creación de Polígonos regulares En un programa 3D, tendremos la opción de crear shapes 2D como polígonos regulares. En 3D Max se llama Ngon, y modificando los parámetros desde el Panel de Comandos podremos decidir de cuántos lados deseamos crear el polígono, entre otras opciones.
Segmentos de un polígono Las formas planas (Shapes) creadas en un programa de modelaje 3D están construidas por trozos de líneas (no necesariamente rectas), denominados Segmentos.
18
Cuando hablemos de un lado de un polígono de un objeto tridimensional se denomina lado(edge) o arista.
Trabajando en modelación 2D: Shapes Las Formas (también llamadas Shapes) en el modelaje en 3D son línead y grupos de líneas en 2D que se emplean fundamentalmente para generar objetos tridimensionales, mediante diferentes técnicas que posteriormente veremos, y que enumeramos a continuación: S Mediante extrusión de las líneas. Mediante solevados. Mediante superficies de revolución. Cuando trabajamos en un programa de modelado 3D, y nos encontremos creando una Shape, deberemos dominar todas las operaciones fundamentales de su modelado, para alcanzar el objetivo deseado.
Cada vez que creemos una nueva línea desde la opción crear, estaremos generando un nuevo objeto, por lo cual, si queremos crear una shape continua pero la hemos elaborado a partir de dos formas independientes, tenemos que saber unir ambas formas, y conectar sus vértices. En 3D Max, hemos visto como unir las formas con Attach, y como unir los vértices con Connect. También podemos unir los vértices soldándolos (Weld) Para la edición de la silueta de una forma, necesitamos tener un dominio absoluto sobre la edición de los vértices. Saber cuándo es necesario que un vértice sea un corner, smooth, béizer o
19
béizercorner, trabajar con los puntos de control (tangentes) de los vértices béizer, mover, escalar y rotar, eliminar o añadir vértices.
1) Mediante dibujo de líneas (en 3D Max, botón Line del panel de crear)
2) Mediante polígonos predefinidos: Círculos, rectángulos, elipses, arcos, Ngon...
3)
Mediante
la
conjugación
de
ambos.
SCALE (Escalar presionar ´Rµ).- Escalar permite reducir o aumentar el tamaño de un objeto, ya sea conservando la proporción, o únicamente en algún eje. Hay 3 formas distintas
de
escalar
objetos:
Escalar uniformemente.- Los objetos reducen o aumentan su tamaño de forma uniforme en los 3 ejes conservando la proporción del objeto, cuando se requiere escalar una determinada cantidad, el procedimiento es seleccionar el objeto, presionar R o 20
hacer clic en el icono de escalar, a continuación presionar F12, enseguida aparece la ventana de conmutador de transformaciones en este podemos especificar el porcentaje que se requiere escalar, para aumentar, la cantidad tiene que ser mayor que el 100%, para reducir la cantidad tiene que ser menor que el 100 % , por ejemplo, para reducir un objeto a la mitad se introduce 50% y para aumentar al doble se introduce 200%, cuando se utiliza escala mediante el ratón, se selecciona el objeto, después rotar, seguido de esto aparece la triada de rotar, a continuación se deja presionado el botón izquierdo del ratón y se desplaza hacia arriba para aumentar y hacia abajo para reducir respectivamente, cuando se activa el ajuste de porcentaje al momento de escalar el objeto se escala en un incremento determinado por la configuración de ajuste.
Escalar no uniformemente.- Nos permite reducir o incrementar el tamaño de un objeto dependiendo del eje de restricción que esté activado, para escalar en un eje determinado hacer clic en el icono de escala no uniforme y enseguida presionar F12, o
para realizar el escalaje con el ratón, simplemente posicionarse sobre el eje deseado y dejar presionado el botón izquierdo del ratón.
Escalar encoger.- Está opción permite encoger (reducir) en cualquier eje, pero con la gran diferencia que si escala en Z, el tamaño en los ejes X y Y aumenta, si se escala en X el tamaño se incrementa en los ejes Y y Z.
21
CONCLUSIÓN En esta unidad aprendimos que cada vez que apliquemos transformaciones en sobre un objetos cualquiera, nosotros podemos manipularlos de cualquier manera.Este es el caso de nuestras transformaciones explicadas anteriormente, para eso se es necesario que siempre se aplicaran coordenadas al ser aplicadas, esto es muy importante saber que al ser aplicado una figura 2D solo se estará refiriendo a dos puntos en el plano.Por eso al ser aplicadas las transformaciones 2D nos dice que es muy fácil de usar o aplicarse en un entorno computacional.Matemáticamente es el uso de ecuaciones sencillas y aplicaciones en matrices básicas, por eso su uso será de lo más fácil a comprender.
22
BIBLIOGRAFIAS http://www2.dis.ulpgc.es/~ii-fgc/Tema%203%2020Transformaciones%202D.pdf
http://www6.uniovi.es/mieres/egi/dao/apuntes/trans2d.html
http://arantxa.ii.uam.es/~pedro/graficos/teoria/Transformaciones2D/ Transformaciones2D.htm
http://www.docstoc.com/docs/282412/transformacionesgeometricas-2D-Graficacion
http://graficasmotul.blogspot.com/2009/09/ traslacion-rotacion-yescalacion.html
23
http://www.foro3d.com/f 112/manual-3d-studio-max-8-institutotecnologico-durango-60725.html
http://usuarios.multimania.es/andromeda_studios/paginas/tutoriales/ tutgl005.htm
http://graficos.uji.es/grafica/NuevasPracticas/Practica3/Transformacio nes.html
http://www.scribd.com/doc/7136513/J ava2D#page49
24