Graficación III. Transformaciones Transformaciones 2D • Con frecuencia, a partir de figuras, se requiere presentarlas, realizando transformaciones en ellas. • Las transformaciones permiten el redibujado de formas sin tener que calcular individualmente los valores para su representación • Las transformaciones básicas son: • Traslación • Rotación • Escalamiento Traslación • Se efectúa la traslación de un objeto para cambiar su posición a lo largo de una línea recta • Un punto bidimensional se convierte al agregar las distancias de traslación tx y ty a la posición de coordenadas original (x, y) • xʼ = x + tx • yʼ = y + ty • El par (tx, ty) es conocido como vector de traslación Traslación • Se puede expresar como ecuación matricial x´ = x + tx y´ = y + ty # x"& P" = % ( $ y"' " x% P =$ ' # y& P´ = P + T ! ! ! "t x % T =$ ' #t y & Rotación Se aplica la transformación de rotación bidimensional cuando se cambia la posición de un objeto a lo largo de una trayectoria de una circunferencia en el plano xy Se especifica el ángulo de rotación θ y la posición (xr,yr) del punto de rotación (pivote) En su aplicación más simple y directa, el pivote es el origen Rotación x´ = x cos θ - y sen θ y´ = x sen θ + y cos θ $cos" #sen"' R =& ) %sen" cos " ( P´ = R • P Escalamiento La transformación de escalamiento altera el tamaño de un objeto Se multiplican los valores de coordenadas por los factores de escalación sx y sy #x"& #sx % (=% $y"' $ 0 0 & # x& (•% ( sy ' $ y' P´ = S • P El escalamiento se hace con respecto al origen ! Representaciones de matriz y coordenadas homogéneas Cada transformación puede ser expresada así: P´ = M1 • P + M2 donde M1 es una matriz 2x2 con factores de multiplicación (escala o rotación) M2 es una matriz de 2 elementos con elementos de aditivos (traslación) Para la traslación, M1 es matriz identidad Para rotación o escalamiento, M2 puede contener coordenadas de pivote (rotación) o centro de escalamiento Representaciones de matriz y coordenadas homogéneas Si se van a efectuar varias transformaciones, se deben efectuar por pasos, aunque algunas transformaciones se pueden agrupar Para expresar cualquier transformacion bidimensional como multiplicación de matrices, cada posición de coordenadas cartesianas (x,y) se expresa con tres coordenadas homogéneas (xh,yh,h), donde xh x= h yh y= h Para transformaciones bidimensionales, se puede utilizar h=1 (cualquier número diferente de cero está bien) ! ! Coordenadas homogéneas La expresión de posiciones en coordenadas homogéneas permiten representar todas las ecuaciones de transformación geométrica como multiplicación de matrices Coordenadas homogéneas: transformaciones Traslación P´=T(tx,ty)•P #x"& #1 0 t x & #x& % ( % ( % ( y" = 0 1 t y ( • % y( % ( % %$ 1 (' %$0 0 1 (' %$1(' Rotación P´=R(θ)•P ! Escalamiento P´=S(sx,sy)•P ! #x"& #cos ) *sen) 0& # x& % ( % ( % ( %y"( = %sen) cos) 0( • % y( %$ 1 (' %$ 0 0 1(' %$1(' #x"& #sx % ( % %y"( = % 0 %$ 1 (' %$ 0 0 sy 0 0& # x& ( % ( 0( • % y( 1(' %$1(' Coordenadas homogéneas: transformaciones compuestas Traslación Rotación "1 0 t x1% "1 0 t x 2 % "1 0 t x1 + t x 2 % $ ' $ ' $ ' 0 1 t • 0 1 t = 0 1 t + t y1' $ y 2' $ y1 y 2' $ $#0 0 1 '& $#0 0 1 '& $#0 0 1 '& $cos"1 #sen"1 0' $cos " 2 & ) & sen " cos " 0 1 1 & ) • &sen" 2 &% 0 0 ! 1)( &% 0 Escalamiento #sen" 2 cos" 2 0 0' $cos("1 + " 2 ) #sen("1 + " 2 ) 0' ) & ) 0) = &sen("1 + " 2 ) cos("1 + " 2 ) 0) 1)( &% 0 0 1)( "sx1 0 0% "sx 2 $ ' $ $ 0 sy1 0' • $ 0 $# 0 0 1'& $# 0 0 0% "sx1sx 2 ' $ sy 2 0' = $ 0 0 1'& $# 0 0 0% ' sy1sy 2 0' 0 1'& Rotación del punto pivote general • Si sólo contamos con rotación centrada en el origen, y queremos efectuar una rotación con respecto a otro punto: • Trasladar el objeto de modo que el pivote se ubique en el origen • Rotar • Trasladar el objeto de vuelta Rotación del punto pivote general • Traslación, rotación, traslación "1 0 $ $0 1 $#0 0 x r % "cos( )sen( 0% "1 0 )x r % ' $ ' $ ' y r ' • $sen( cos ( 0' • $0 1 )y r ' 1 '& $# 0 0 1'& $#0 0 1 '& $cos" #sen" & = &sen" cos " &% 0 0 ! x r (1# cos " ) + y r sen"' ) y r (1# cos " ) # x r sen" ) )( 1 T(xr, yr) • R(θ) • T(-xr, -yr) = R(xr, yr, θ) ! Transformaciones 3D Son una extensión a las transformadas 2D Se agrega un renglón y una columna a la representación homogénea Traslación 3D Llevar de P=(x,y,z) a P´=(x´, y´, z´) P´=T•P #x"& #1 % ( % y" 0 % (=% % z"( %0 % ( % $ 1 ' $0 0 0 t x & # x& ( % ( 1 0 t y ( % y( • 0 1 tz ( %z ( ( % ( 0 0 1 ' $1' ! Rotación 3D Con respecto al eje z Eje x #x"& #1 0 0 % ( % %y"( = %0 cos ) *sen) % z"( %0 sen) cos) % ( % 0 0 $ 1 ' $0 0& # x& ( % ( 0( % y( • 0!( % z ( ( % ( 1' $1' #x"& #cos ) *sen) % ( % %y"( = %sen) cos) % z"( % 0 0 % ( % 0 $1' $ 0 #x"& # cos) % ( % %y"( = % 0 % z"( %*sen) % ( % $1' $ 0 0 0 1 0 0& # x& ( % ( 0( % y( • 0( % z ( ( % ( 1' $1' 0 sen) 0& # x& ( % ( 1 0 0( % y( • 0 cos ) 0( % z ( ( % ( 0 0 1' $1'