Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Coordenadas Homogneas y
Transformaciones
Daniel Faria 06-39509
Laura Libretti 06-39796
Transformaciones
Coordenadas Homogneas
Este sistema es necesario para poder integrar la traslacin con la
rotacion y escala.
El uso de las coordenadas homogneas permite tratar todas las
transformaciones geomtricas como multiplicacin de
matrices.
Se introduce una cuarta coordenada.
x a b c d x
w=1
y = e
z i
w m
f
j
n
g h y
k l z
o p w
p = M p
x a
y = e
z i
1 0
b
f
j
0
d x
g h y
k l z
0 1 1
Translacin 2D
Reposiciona un objeto desplazndolo a nuevas coordenadas.
x = x + t x
y'= y + t y
En forma matricial:
P = (x, y)
P = ( x , y )
T = (t x ,t y )
P = P + T
En una transformacin rgida el objeto no se deforma.
Transladar lnea :
Transladamos sus extremos.
Transladar polgonos:
Transladamos vstices y redibujamos.
Translacin Homognea
x 1
y = 0
z 0
0
0 0 tx x
1 0 ty y
0 1 tz z
0 0 1 1
x = R cos
y = R sin
x = R cos( + ) = ... = x cos y sin
P = ( x , y )
P = P R
cos sin
R =
sin
cos
Rotacin General
Frmula general cuando el punto sobre el cual se rota no es el
origen, sino un punto cualquiera ( Xc , Yc ).
x = x c + (x x c ) cos (y y c ) sin
y = y c + (x x c ) sin + (y y c ) cos
sin
cos
0
0
T(z, ) =
0
0
cos
T(y, ) =
sin
0
0
1
0
0
1 0
0 1
sin 0
0
0
cos 0
0
1
1
0
0
0 cos sin
T(x, ) =
0 sin cos
0
0
0
0
0
Rotacin General
Sobre cualquier eje dado por el vector
unitario ( kx , ky , kz ).
Con:
c = cos y
s = sin
x k x kx (1 c) + c k z kx (1 c) k z s kx k z (1 c) + ky s
y = k y k x (1 c) + k z s kz k x (1 c) + c ky k z (1 c) kx s
z k z k x (1 c) k y s k z kx (1 c) + k x s k z k z (1 c) + c
0
0
0
1
0 x
0 y
0 z
1 1
x = Sx x
y = Sy y
En forma matricial:
S
P = (x, y) P = ( x , y ) S = x
0
Escalado uniforme: Sx == Sy
Escalado diferencial: Sx != Sy
Sy
P = P S
Escalado General
Si el origen de coordenadas no se encuentra en el interior del
objeto, se produce un desplazamiento.
Se usa un punto fijo y se escala a partir de l.
x = x c + Sx (x x c )
y = y c + Sy (y y c )
Matriz homognea de escalado uniforme desde el origen:
x Sx
y = 0
z 0
1 0
Sy
0
0
Sz
0 x
0 y
0 z
1 1
Composicin de Transformaciones
Para cualquier secuencia de transformaciones, podemos calcular
la matriz de transformacion compuesta, calculando el producto
de las transformaciones individuales.
Translaciones sucesivas:
P = P T1 (t x1,t y1 )
P = P T2 (t x 2,t y 2 )
P = P T2 = P T1T2 = P T
1 0 0 1
T = 0 1 0 0
t
t
t
1
x1 y1 x 2
0
1
t y2
0 1
0 = 0
1 t x1 + t x 2
0
1
t y1 + t y 2
0
1
Composicin de Transformaciones
Rotaciones sucesivas:
P = P R( )
P = P R( )
P = P R( ) = P R( )R( ) = P R
R = sin cos 0 sin cos 0 = sin( + ) cos( + ) 0
0
0
1
0
0
1
0
0
1
Composicin de Transformaciones
Escalados sucesivos:
P = P S1 (sx1,sy1 )
P = P S2 (sx 2 ,sy 2 )
P = P S2 = P S1S2 = P S
Sx1 0 0 Sx 2
S = 0 Sy1 0 0
0 1 0
0
0
Sx 2
0
0 Sx1 Sx 2
0 = 0
1 0
0
Sy1 Sy 2
0
Composicin de Transformaciones
En general
Es posible combinar transformaciones, multiplicando las matrices
correspondientes.
El producto matricial NO es conmutativo:
Ej: rotar y despus transladar transladar y despus rotar
1
0
0
px
Rotacin > Translacin:
0
cos
sin
p
y
T((x, ), p) =
0 sin cos pz
Translacin > Rotacin:
1
0
0
0 cos sin
T( p(x, )) =
0 sin cos
0
0
0
px
py cos pz sin
py sin + pz cos
P = P T(x c ,y c ) R( ) T(x c , y c )
Reflexin
Sobre el eje x
Sobre el eje y
1 0 0
0
1
0
0 0 1
0
1
0
0 0 1
1 0 0
0
1
0
0 0 1
1
0
0
0 0 1
Reflexin General
Sobre una recta y=mx+b
glLoadIdentity( );
Para cargar la identidad y as poder hacer todas las transformaciones
Transformaciones:
glScalef(GLfloat sx, GLfloat sy, GLfloat sz);
Escalar segn los factores sx, sy y sz
glMatrixMode(GL_MODELVIEW);
glLoadIdentity( );
glTranslatef(0.0, 0.0, -5.0);
glRotatef(45.0, 0.0, 0.0);
glScalef(2.0, 2.0, 2.0);
DrawCube( );
glPopMatrix( );
Recupera el estado de la matriz
cabeza,
Bibliografa
Para la realizacin de esta presentacin se utilizaron las siguientes
fuentes:
Prof. Eduardo Fernndez de la Facultad de Ing. de la
Universidad de la Repblica, Montevideo, Uruguay.
Clases del Departamento de Arquitectura y Tecnologa de
Computadores, Universidad de Sevilla, Espaa.
Prof. Alexandra La Cruz de la Universidad Simn Bolvar.
OpenGL Programming Guide.