You are on page 1of 20

Transformaciones geométricas

1. 2. 3. 4. 5. 6. Preliminares Transformaciones en 2D Concatenación de transformaciones Cambio de sistema de coordenadas Transformaciones en 3D Transformaciones en OpenGL

3

Profesora: M. Victoria Luzón

Preliminares
• Problema: ¿Cómo mover un objeto?
– En la vida real sabemos como mover un objeto – ¿Cómo hacerlo en un ordenador? – Objetivo
• Mover el objeto de “aquí“ a “allí“

– Se necesita cuantificar “aquí“ y “allí“

• Solución
– Utilizar un sistema de coordenadas
• Define el espacio de forma numérica • Proporciona una métrica
– Permite describir la distancia entre dos puntos

Allí

Aquí

Inf or má tic a Gr áfi ca
2

2 y 3 dimensiones R1 Punto en 2 R2 Y Punto en (2.Preliminares • Ejemplo: 1.-2) ca 3 .3) X Y R3 Z Inf or Sistema de coordenadas má dextrógiro tic a X Gr áfi Punto en (2.-2.

7) a Gr áfi ca X 4 .3) Inf or má tic Allí=(7. sumar 4 a y Aquí=(2.Preliminares • Utilizando los sistemas de coordenadas tenemos instrucciones cuantitativas para mover los objetos Instrucción para mover: sumar 5 R1 Aquí=2 Allí=7 X Y R2 Instrucción para mover sumar 5 a x.

Operaciones sobre objetos geométricos que cambian posición. orientación o tamaño • Translación – Consiste en mover un objeto a una nueva posición – Las nuevas coordenadas vienen dadas por • x’ = x + Tx y’ = y + Ty Inf or má tic a Gr áfi ca 5 .Transformaciones en 2D .

Transformaciones en 2D • Escalado – Cambia el tamaño del objeto – Se realiza respecto a un punto – Si se realiza respecto al origen las nuevas coordenadas son • x’ = x*Sx y’ = y*Sy – Si |Sx|>1 y |Sy|>1 aumenta el tamaño – Si |Sx|<1 y |Sy|<1 disminuye Inf or má tic a Gr áfi ca 6 .

Transformaciones en 2D – Si Sx=Sy escalado uniforme – Si Sx<>Sy escalado no uniforme – Si Sx<0 el objeto se refleja respecto al eje Y – Si Sy<0 el objeto se refleja respecto al eje X Inf or má tic a Gr áfi ca 7 .

se realiza respecto a un punto – Si se realiza respecto al origen las nuevas coordenadas son • x’ = x cosα .Transformaciones en 2D • Rotación – Se utiliza para orientar objetos – Como el escalado.y senα y’ = x senα + y cosα Inf or má tic a Gr áfi ca 8 .

Transformaciones en 2D • Representación matricial de las transformaciones – Las transformaciones anteriores se pueden representar como: • x’ = a*x + b*y + c • y’ = d*x + e*y + f – Esto se puede representar utilizando matrices – Si incluimos todas las constantes en una matriz – Es más eficiente manejar matrices cuadradas Traslación Escalado Rotación Inf or má tic a Gr áfi ca 9 .

1) X Y Inf or má tic a Gr áfi ca 10 . esto se denomina la división homogénea W Ph(x.Transformaciones en 2D • Coordenadas homogéneas – Las coordenadas homogéneas permiten tratar la traslación como la rotación y el escalado – Para obtener las matrices cuadradas se añade una nueva fila a la matriz y aparece una nueva coordenada w’ – Entonces los puntos del plano 2D se representan como coordenadas homogéneas 3D – Si la última fila es [0 0 1] entonces w’ = 1 – Si w’<>1 se proyecta sobre el plano w=1.y/w.y.w) 1 P2d(x/w.

-yc) * P Inf or má tic a Gr áfi ca 11 . yc) * R * T(-xc .Concatenación de transformaciones • Concatenación de transformaciones – Podemos combinar varias transformaciones para obtener operaciones más complejas – Por ejemplo -> Rotación respecto a un punto cualquiera (xc . yc) • En tres pasos: Traslación (-xc . Rotación y Traslación (xc . yc) • Como las matrices son cuadradas se obtiene una única matriz P3 = T(xc . -yc).

Concatenación de transformaciones • Orden de las transformaciones – El producto de matrices no es conmutativo M1*M2<>M2*M1 – La aplicación de transformaciones tampoco lo es – Transformaciones que si son conmutativas • • • • Traslación-Traslación Escalado-Escalado Rotación-Rotación Escalado Uniforme-Rotación Traslación después de rotación – Transformaciones que no son conmutativas • Traslación-Escalado • Traslación-Rotación • Escalado No Uniforme-Rotación Inf or má tic a Gr áfi ca 12 Rotación después de traslación .

0.0.0) a (1.0) • La transformación de coordenadas de la aplicación en coordenadas del dispositivo físico (CD) se realiza en 2 pasos: – De CMR a CDN • Transformación normalizada – De CDN a CD • Transformación del dispositivo Inf or Ventana má Coordenadas del mundo real tic a Marco Gr áfi ca Coordenadas del dispositivo normalizado 13 .0.1.Cambio de Sistema de Coordenadas • En las aplicaciones gráficas hay que utilizar unidades que se ajusten al problema: – Coordenadas del mundo real (CMR) • Los dispositivos físicos tienen diversos tamaños y rangos – Habitualmente se utiliza un dispositivo virtual • Coordenadas del dispositivo normalizado (CDN) (0.

Cambio de Sistema de Coordenadas • Transformación ventana-marco: – Se traslada la esquina inferior izquierda de la ventana al origen – Se aplican los factores de escala para que marco y ventana tengan el mismo tamaño – Se traslada el origen a la esquina inferior izquierda del marco Coordenadas del dispositivo normalizado 14 Inf or má Ventana tic Coordenadas del mundo real a Gr Marco áfi ca wymax wymin wxmin wxmax vymax vymin vxmin vxmax Coordenadas del Mundo .

giro y escalado – Ayuda para visualizar y examinar objetos – Los sistemas de coordenadas pueden ser • Dextrógiro (el utilizado para realizar las transformaciones) • levógiro El eje Z apunta hacia el exterior del papel El eje Z apunta hacia el interior del papel levógiro dextrógiro Inf or má tic a Gr áfi ca 15 .Transformaciones en 3D • Las transformaciones en 3D se utilizan para: – Manipular objetos en el espacio 3D • Traslación.

y. z) se representa por (x.Transformaciones en 3D • Al igual que en 2D se utilizan las coordenadas homogéneas – Un punto 3D (x. z. y. w) y se transforma por la matriz – Para obtener el punto 3D de las coordenadas homogéneas se debe dividir por w • x’’= x’/w’ y’’= y’/w’ z’’= z’/w’ Inf or má tic a Gr áfi ca 16 .

Transformaciones en 3D • Traslación • Rotación – Eje X – Eje Y • Escalado – Eje Z Inf or má tic a Gr áfi ca 17 .

se deben de realizar los siguientes pasos: – – – – Traslación para que el eje pase por el origen Rotar el eje para que coincida con uno de los ejes de coordenadas Realizar la rotación deseada alrededor del eje anterior Aplicar las rotaciones inversas para que el eje vuelva a su orientación original – Aplicar la traslación inversa para que el eje vuelva a su posición original Y Y Y Y Eje de rotación X Z Z X Z X Z Inf or má tic a Gr áfi ca X 18 .Transformaciones en 3D • Para realizar una rotación respecto a un eje cualquiera.

Traslación: void glTranslate{fd}(x. y. y.0).0).0. 1. Indica la matriz que vas a utilizar: glMatrixMode Inicializar la matriz a la identidad: void glLoadIdentity (void). Rotación: void glRotate{fd}(angle. void glPushMatrix (void). Ejemplo: • Pila de matrices: glMatrixMode (GL_MODELVIEW).Transformaciones con OpenGL • • • • • • (GL_MODELVIEW).0.0). 1.0. 1. 5. z). glutWireTeapot (1. 1.0. glLoadIdentity (). 1.0).0. 1.0. 1.0. glTranslatef (10. 1. • Ejemplo: glMatrixMode (GL_MODELVIEW). y. glPushMatrix(). Escalado: void glScale{fd}(x. glutWireSphere (1. glLoadIdentity (). glTranslatef (10. glPopMatrix().0.0. glRotatef (15. Inf or má tic a Gr áfi ca 19 . void glPopMatrix (void).0).0). z). glutWireTeapot (1. 5. glRotatef (15.0). z).0.0). glutWireSphere (1. x.

SUMARIO • Las transformaciones geométricas se utilizan para manipular objetos en el espacio • Las más habituales son: la traslación. la rotación y el escalado • Las coordenadas homogéneas permiten tratar la traslación como la rotación y el escalado • Se pueden realizar transformaciones complejas mediante la concatenación de transformaciones geométricas • El orden de las transformaciones no es conmutativo • En la transformación ventana-marco intervienen los siguientes sistemas de coordenadas – Coordenadas del mundo real (CMR) – Coordenadas del dispositivo normalizado (CDN) – Coordenadas del dispositivo físico (CD) Inf or má tic a Gr áfi ca 20 .