Está en la página 1de 4

24/10/2007

Universidad de Talca
Facultad de Ingeniera

Transformaciones Afines (3D)


y

Transformaciones en 3D

Traslacin
En una representacin tridimensional
homogenea un punto es trasladado de
P=(x,y,z) a P=(x,y,z)
x' 1

y ' = 0
z' 0

1 0

Transformaciones Afines (3D)


y

x ' sx

y ' = 0
z' 0

1 0

0
sy
0

0
0
sz

Transformaciones Afines (3D)


y

Cambio de Escala

1
f
M( f ) =
0

Rotacin: se debe especificar un eje


sobre el cual rotar

X roll

1
0
M x ( ) =
0

0
c s 0
s c 0

0 0 1

Shearing
Ejemplo y depende
de fPx+Py

0 x

0 y

0 z

1 1

Transformaciones Afines (3D)


y

0 0 t x x

1 0 t y y
0 1 t z z

0 0 1 1

0 0 0
1 0 0
0 1 0

0 0 1

Transformaciones Afines (3D)


y

Rotacin
Y roll

Z roll

c
0
M y ( ) =
s

c s
s c
M z ( ) =
0 0

0 0

0 s 0
1 0 0
0 c 0

0 0 1

0
0
1
0

0
0
0

24/10/2007

Transformaciones Afines (3D)


y

Rotacin

Composicin (3D)
y

La composicin de transformaciones afines


3D da origen a otra transf. afn

La transformacin compuesta est dada por


la matriz M = M2M1
M1 corresponde a la primera transformacin
M2 corresponde a la segunda transformacin

Rotacin en Torno a un Eje (3D)

Composicin de Rotaciones (3D)


y

Una rotacin cualquiera se puede


expresar como
Tres rolls: respecto a los ejes x,y,z
M = R z ( 3 ) R y ( 2 ) R x ( 1 )

La composicin de transformaciones no es
conmutativa

Determinar la matriz para una rotacin con


ngulo en torno a un eje u
Alinear u con eje x (dos rotaciones - z, y)
Rotar respecto al eje x, con ngulo
Deshacer las rotaciones de alineamiento para
llevar u a su direccin original

Teorema de Euler:
Cualquier secuencia de rotaciones
respecto a un punto es equivalente a una
sola rotacin respecto a un eje que pasa
por el punto

Cambio de Sistemas de Coord.


y

Hay otra forma de ver las


transformaciones
En vez de pensar que produce
diferentes puntos en un sistema de
coordenadas

Ru ( ) = Ry ( ) Rz ( ) Rx ( ) Rz ( ) Ry ( )

Cambio de Sistemas de Coord.


Si se tiene un frame 2D definido por { ,i,j}, una
transformacin T se puede ver como un cambio de
sistema de coordenadas: { ',i',j'}, con
' = T ( ), i' = T (i) y j' = T ( j)
Un punto P tiene representacin:
P = (a,b,1)T en { ,i,j}
P = (c,d,1)T en { ',i',j'}

Se puede ver como que produce


nuevos sistemas de coordenadas en
el cual representar puntos

a
c


=
b
M

d , con M asociada a T
1
1

24/10/2007

Cambio de Sistemas de Coord.

Cambio de Sistemas de Coord.

Si se tiene un frame 2D y dos transformaciones


T1 (con matriz M 1 ) y T2 (con matriz M 2 )

La secuencia de transformaciones T1 , T2 , T3 , con matrices

El 'frame 3' resulta de la tranformacin T2

de transformacin M 1 , M 2 , M 3 se aplican en el siguiente orden:

relativa al 'frame 2'

Un punto P se tiene representacin:


P = (a,b,1) en { ,i,j} 'frame 1'
T

P = (c,d,1)T en 'frame 2'


P = (e,f,1)T en 'frame 3'
a
c
e



b = M 1 d = M 1M 2 f
1
1
1


Cambio de Sistemas de Coord.

Transformaciones en OpenGL
y

OpenGL utiliza un esquema de Pipeline


Grfico

El Pipeline define la secuencia de


operaciones que suceden desde que se
define un vrtice hasta que se dibuja en la
pantalla.

La CT recibe el nombre de Modelview Matrix

Todos los vrtices indicados son


multiplicados por esta matriz

Transformacin de puntos:
M = M 3 M 2 M1

(premultiplicar)

el punto P se transforma a P' = MP


Transformacin de sistemas de coordenadas:
M = M 1M 2 M 3

(postmultiplicar)

el punto expresado en el sistema transformado P tiene


representacin MP en el sistema original

Transformaciones en OpenGL
y

OpenGL provee funciones para definir


transformaciones sucesivas

OpenGL organiza las transformaciones


postmultiplicando cada nueva
transformacin para definir una
transformacin actual (CT)

Esto es porque es ms natural a quien


modela, pensar en trminos de
transformaciones del sistema de
coordenadas

Transformaciones en OpenGL

24/10/2007

Transformaciones en OpenGL
y

OpenGL opera completamente en 3D

La matriz Modelview define


transformaciones 3D

Se puede usar la matriz en forma


apropiada para definir
transformaciones 2D

Transformaciones en OpenGL
Aplicar la transformacin CT*M a un
punto es equivalente a aplicar la
transformacin M y luego la
transformacin definida anteriormente
por CT
y En trmino de transformaciones del
sistema de coordenadas es
equivalente a cambiar primero el SC
antes de situar el punto.
y

Transformaciones en OpenGL
y

Las rutinas principales para


transformaciones son
glTranslated(), glScaled(),
glRotated().

Estas funciones no modifican


directamente la CT sino que
postmultiplican la matriz.

CT = CT*M

Dibujado de Escenas 3D en
OpenGL
La aplicacin de transformaciones
ayuda a la definicin de objetos
compuestos.
y A ttravs
a s de la
a de
definicin
c de multiples
u t p es
traslaciones, rotaciones y escalados.
y

Algunas veces es deseable volver


atrs a la transformacin definida
previamente

Dibujado de Escenas 3D en
OpenGL
y

Para recordar la transformacin


actual, esta se almacena en un stack
de transformaciones a travs de
glPushMatrix(), glPopMatrix()

También podría gustarte