You are on page 1of 20

3

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

Profesora: M. Victoria Luzón


Preliminares
• Problema: ¿Cómo mover un objeto?
– En la vida real sabemos como
mover un objeto
Inf
– ¿Cómo hacerlo en un ordenador?
– Objetivo
or
• Mover el objeto de “aquí“ a “allí“ má
– Se necesita cuantificar “aquí“ y “allí“
• Solución Allí tic
– Utilizar un sistema de coordenadas
• Define el espacio de forma a
numérica
• Proporciona una métrica Gr
– Permite describir la distancia
entre dos puntos áfi
Aquí ca
2
Preliminares
• Ejemplo: 1, 2 y 3 dimensiones
Inf
R1
Punto en 2
or
coordenadas má
Y Sistema de
Y
R3
R2
Punto en (2,3)
dextrógiro
tic
a
Gr
X X

áfi
Z
ca
Punto en (2,-2,-2)

3
Preliminares
• Utilizando los sistemas de coordenadas tenemos instrucciones
cuantitativas para mover los objetos
Inf
Instrucción para mover: sumar 5 or
R1 Aquí=2 Allí=7
X

Y
tic
R2
Allí=(7,7) a

Instrucción para mover Gr


áfi
sumar 5 a x,
sumar 4 a y Aquí=(2,3)

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

tic
a
Gr
áfi
ca
5
Transformaciones en 2D
• Escalado
– Cambia el tamaño del objeto
– Se realiza respecto a un punto
Inf
– Si se realiza respecto al origen
las nuevas coordenadas son
or
• x’ = x*Sx y’ = y*Sy má
– Si |Sx|>1 y |Sy|>1 aumenta el
tamaño tic
– Si |Sx|<1 y |Sy|<1 disminuye
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
Inf
al eje Y or
– Si Sy<0 el objeto se refleja respecto
al eje X má
tic
a
Gr
áfi
ca
7
Transformaciones en 2D
• Rotación
– Se utiliza para orientar objetos
– Como el escalado, se realiza respecto a un punto
Inf
– Si se realiza respecto al origen las nuevas coordenadas son or

• x’ = x cosα - y senα y’ = x senα + y cosα

tic
a
Gr
áfi
ca
8
Transformaciones en 2D
• Representación matricial de las
transformaciones
– Las transformaciones anteriores se
Inf
pueden representar como:
• x’ = a*x + b*y + c
or
• y’ = d*x + e*y + f
– Esto se puede representar utilizando

matrices
– Si incluimos todas las constantes en
tic
una matriz a
– Es más eficiente manejar matrices
cuadradas Gr
áfi
ca
Traslación Escalado Rotación
9
Transformaciones en 2D
• Coordenadas homogéneas
– Las coordenadas homogéneas
permiten tratar la traslación
Inf
como la rotación y el escalado
– Para obtener las matrices
or
cuadradas se añade una nueva
fila a la matriz y aparece una má
nueva coordenada w’
– Entonces los puntos del plano
W tic
2D se representan como
coordenadas homogéneas 3D
Ph(x,y,w) a
– Si la última fila es [0 0 1]
entonces w’ = 1
1 P2d(x/w,y/w,1) Gr
– Si w’<>1 se proyecta sobre el
plano w=1, esto se denomina X áfi
la división homogénea
Y ca
10
Concatenación de transformaciones
• Concatenación de transformaciones
– Podemos combinar varias
transformaciones para obtener
Inf
operaciones más complejas
– Por ejemplo -> Rotación respecto a
or
un punto cualquiera (xc , yc)
• En tres pasos: Traslación (-xc , -yc),

Rotación y Traslación (xc , yc)
• Como las matrices son cuadradas
tic
se obtiene una única matriz
P3 = T(xc , yc) * R * T(-xc , -yc) * P
a
Gr
áfi
ca
11
Concatenación de transformaciones
• Orden de las transformaciones
– El producto de matrices no es
conmutativo M1*M2<>M2*M1
Inf
– La aplicación de transformaciones
tampoco lo es
or
– Transformaciones que si son má
conmutativas
• Traslación-Traslación Traslación después de rotación tic
a
• Escalado-Escalado
• Rotación-Rotación
• Escalado Uniforme-Rotación
– Transformaciones que no son Gr
conmutativas
• Traslación-Escalado
áfi
• Traslación-Rotación
• Escalado No Uniforme-Rotación
ca
Rotación después de traslación
12
Cambio de Sistema de Coordenadas
• En las aplicaciones gráficas hay que
utilizar unidades que se ajusten al
problema: Inf
– Coordenadas del mundo real (CMR)
• Los dispositivos físicos tienen diversos or
tamaños y rangos
– Habitualmente se utiliza un dispositivo
Ventana má
Coordenadas del mundo real tic
virtual
• Coordenadas del dispositivo

a
normalizado (CDN) (0.0,0.0) a (1.0,1.0)
• La transformación de coordenadas de la
aplicación en coordenadas del dispositivo
Gr
Marco
físico (CD) se realiza en 2 pasos:
– De CMR a CDN
• Transformación normalizada áfi
– De CDN a CD
• Transformación del dispositivo
Coordenadas del
ca
dispositivo normalizado
13
Cambio de Sistema de Coordenadas
• Transformación ventana-marco: Coordenadas del

Inf
Mundo
– Se traslada la esquina inferior izquierda de wymax

la ventana al origen
– Se aplican los factores de escala para que
marco y ventana tengan el mismo tamaño
or

wymin
– Se traslada el origen a la esquina inferior
Ventana
izquierda del marco
wxmin

Coordenadas del mundo real


tic
wxmax

vymax
a
Marco Gr
vymin
áfi
vxmin
vxmax ca
Coordenadas del dispositivo normalizado
14
Transformaciones en 3D
• Las transformaciones en 3D se utilizan para:
– Manipular objetos en el espacio 3D
• Traslación, giro y escalado
Inf
– Ayuda para visualizar y examinar objetos or
– Los sistemas de coordenadas pueden ser
• Dextrógiro (el utilizado para realizar las transformaciones) má
tic
• levógiro

a
El eje Z apunta hacia el exterior del papel El eje Z apunta hacia el interior del papel

Gr
levógiro áfi
ca
dextrógiro
15
Transformaciones en 3D
• Al igual que en 2D se utilizan las coordenadas homogéneas
– Un punto 3D (x, y, z) se representa por (x, y, z, w) y se transforma
por la matriz
Inf
or

tic
– Para obtener el punto 3D de las coordenadas homogéneas se debe
dividir por w
a
• x’’= x’/w’ y’’= y’/w’ z’’= z’/w’ Gr
áfi
ca
16
Transformaciones en 3D
• Traslación • Rotación

– Eje X
Inf
or

– Eje Y
tic
a
• Escalado

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

Eje de rotación
áfi
X X X
ca
X

Z Z Z Z

18
Transformaciones con OpenGL
• Indica la matriz que vas a utilizar: glMatrixMode


(GL_MODELVIEW);
Inicializar la matriz a la identidad: void glLoadIdentity (void); Inf


Traslación: void glTranslate{fd}(x, y, z);
Rotación: void glRotate{fd}(angle, x, y, z);
or
• Escalado: void glScale{fd}(x, y, z); má
• Ejemplo:
tic
• Pila de matrices:
glMatrixMode (GL_MODELVIEW);
glLoadIdentity (); void glPushMatrix (void);
glTranslatef (10.0, 5.0, 1.0);
glutWireSphere (1.0);
void glPopMatrix (void);
• Ejemplo: a
Gr
glRotatef (15.0, 1.0, 1.0, 1.0);
glMatrixMode (GL_MODELVIEW);
glutWireTeapot (1.0); glLoadIdentity ();
glPushMatrix();

áfi
glTranslatef (10.0, 5.0, 1.0);
glutWireSphere (1.0);

ca
glPopMatrix();
glRotatef (15.0, 1.0, 1.0, 1.0);
glutWireTeapot (1.0);

19
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
Inf
• Las coordenadas homogéneas permiten tratar la traslación como la or
rotación y el escalado
• Se pueden realizar transformaciones complejas mediante la má
concatenación de transformaciones geométricas
• El orden de las transformaciones no es conmutativo
tic
• En la transformación ventana-marco intervienen los siguientes
sistemas de coordenadas
a
– Coordenadas del mundo real (CMR) Gr
– Coordenadas del dispositivo normalizado (CDN)
– Coordenadas del dispositivo físico (CD)
áfi
ca
20

You might also like