Professional Documents
Culture Documents
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
á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
má
Y
tic
R2
Allí=(7,7) a
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
má
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
má
• 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
má
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),
má
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
má
wymin
– Se traslada el origen a la esquina inferior
Ventana
izquierda del marco
wxmin
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
má
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
má
– 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