Gráfica computacional Geometría bidimensional • Muchos problemas de ingeniería requieren modelos bidimensionales (2D) • La visualización de estos modelos requiere de: - Un sistema grafico - La creación de entidades geométricas : • Líneas, círculos, rectángulos, etc. - La aplicación de transformaciones geométricas a estas entidades: • Translaciones, Escalamientos, Rotaciones, ... Geometría bidimensional Rotación o (­45 ) Escalamiento (50%) Traslación • Las transformaciones geométricas: - Permiten la creación y vistas de modelos - Son una parte importante de los CAD Representación • ¿Cómo representar un objeto 2D ? - Mediante una especificación numérica - Dentro de un sistema de coordenadas, por ejemplo, cartesiano x, y • El sistema de coordenadas permite la aplicación de transformaciones capaces de: - Trasladar a los objetos - Rotar los objetos - etc. Representación • Punto: elemento básico para la representación de objetos • Todo objeto puede ser representado a través de un conjunto de puntos Representación • Ejemplo: - Una línea es representada por sus puntos extremos - Un triángulo queda representado por la matriz de 3x2: [ ] x1 x2 y1 y2 (x1, y1) (x1, y1) (x2, y2) [ ] x1 x2 x3 y1 y2 y3 (x3, y3) (x2, y2) Escalamiento • Factores (sx, sy) que permiten incrementar o decrementar el valor de las coordenas (x, y) del objeto x’ = sx * x y’ = sy * y • Ejemplo: sx = 2 sy = 1 Escalamiento • Escalamiento x = sx * x y = sy * y • Representación matricial • P’ = S * P [ ] [ ][ ] x’ y’ = sx 0 x 0 y sy Representación matricial • Ventaja: la operatoria se simplifica • Ejemplo: amplificar en 20% las coordenadas (x, y) de la figura y luego reducir a 70% sólo ‘x’ • El objeto está formado por un conjunto de coordenadas (x0, y0), (x1, y1), ..., (xn, yn) Representación matricial • El objeto queda representado matricialmente como: P = • [ ] x0 x1 ... xn y0 y1 ... yn Matrices de escalamiento [ ] S1 = 1.2 0 0 1.2 [ ] S2 = 0.7 0 0 1 Representación matricial P = • ] [ ] [ ] [ x0 x1 ... xn y0 y1 ... yn S1 = 1.2 0 0 1.2 S2 = 0.7 0 0 1 Solución: [ ][ ] P’ = 1.2 0 0 1.2 0.7 0 0 1 P = S1 * S2 * P Representación matricial P = [ ] [ ] [ ] [ ][ ] x0 x1 ... xn y0 y1 ... yn S1 = • Definiendo: S = 1.2 0 0 1.2 Entonces: P’ = S * P 0.7 0 0 1 1.2 0 0 1.2 S2 = 0.7 0 0 1 Rotación • Rotación: x’ = x * cos(α) ­ y * sen(α) y’ = x * sen(α) + y * cos(α) (X’, y’) (X, y) β α α β ][] x y • • Rotación Rotación: x’ = x * cos(α) ­ y * sen(α) y’ = x * sen(α) + y * cos(α) Representación matricial [][ x’ y’ • P’ = R * P = ] cos(α) ­sen(α) sen(α) cos(α) Traslación • Traslación x’ = dx + x y’ = dy + y dx = 1 dy = 2 ¿Representación Matricial? Coordenadas homogéneas • “punto 2D en el espacio tridimensional” • Todo punto 2D (P) puedes ser representado por cualquier punto a lo largo del rayo 3D (llamado espacio homogéneo) Coordenadas homogéneas ph(hx, hy, h) p2(2x, 2y, 2) p1(x, y, 1) z=1 • z=2 z=h Las coordenadas homogéneas correspondes al punto donde z = 1 Coordenadas homogéneas • Usando coordenadas homogéneas, cada punto pasa a ser: x y • Donde: xh yh h xh = x / h yh = y / h • h igual a cero no está permitido • Para efecto del curso, h =1 Coordenadas homogéneas • Matriz de escalamiento en coordenadas en homogeneas sx 0 0 0 sy 0 0 0 1 Coordenadas homogéneas • Matriz de rotación en coordenadas en homogéneas cos(α) ­sen(α) 0 sen(α) cos(α) 0 0 0 1 Coordenadas homogéneas • Matriz de traslación en coordenadas en homogeneas 1 0 dx 0 1 dy 0 0 1 Obs: Matrices de transformación centradas en el origen Coordenadas homogéneas dx = 2 dy = 1 • T’ = Trasladando el triángulo en (2, 1) aplicando coordenadas homogéneas [ ][ ] [ 1 0 2 0 1 1 0 0 1 x0 x1 x2 y0 y1 y2 = 1 1 1 ] x0+2 x1+2 x2+2 y0+1 y1+1 y2+1 1 1 1 Composición de transformación • Cómo aplicar más de una transformación (M1, M2, ..., Mn) sobre un conjunto de puntos (P) ? • Primera transformación: P1 = M1 * P • Segunda transformación: P2 = M2 * P1 Composición de transformación • Segunda transformación: P2 = M2 * P1 P2 = M2 * (M1 * P) = (M2 * M1)* P • Definiendo M21 = M2*M1 P2 = M21* P • Aplicando la enésima transformación: Pn = (Mn * ... * M3* M2 * M1)* P = Mn1 * P Composición de transformaciones • Ejemplo: Transformar el objeto A en B Composición de transformaciones • Paso 1: Trasladar al origen T1 = 1 0 ­1 0 1 ­1 0 0 1 Composición de transformaciones • Paso 2: Escalar el objeto E = 0.5 0 0 0 0.5 0 0 0 1 Composición de transformaciones • Paso 3: Rotar el objeto R = cos(α) ­sen(α) 0 sen(α) cos(α) 0 0 0 1 Composición de transformaciones • Paso 4: Trasladar el objeto T2 = 1 0 ­1 0 1 1 0 0 1 Composición de transformaciones • Matriz de transformación final M = T2 * R * E * T1 M • Objeto transformado P’ = M * P M = 1 0 ­1 cos(α) ­sen(α) 0 0.5 0 0 1 0 ­1 0 1 1 sen(α) cos(α) 0 0 0.5 0 0 1 ­1 0 0 1 1 0 0 1 0 0 0 0 1 Composición de transformaciones • El orden de las transformaciones SI importa T(­1, ­1) R(45°) R(45°) T(­1, ­1) Propuestos • Demostrar: T(dx2, dy2) T(dx1, dy1) = T(dx2+dx1, dy2+dy1) R(α)R(β) = R(α + β) S(Sx2,Sy1)S(Sx1,Sy1) = S(Sx2*Sx1, Sy2*Sy1) Propuestos • Expresar como una composición de transformaciones: - Una escalamiento en torno a un punto (x, y) distinto del origen - Una rotación en torno a un punto (x,y) distinto del origen Reflexión • Reflexión c/r al eje Y [ ] ­1 0 0 1 0 0 0 0 1 Reflexión • Reflexión c/r al eje X [ ] 1 0 0 0 0 ­1 0 0 1 Reflexión • Reflexión c/r a un eje arbitrario Propuesto!! Reflexión • Reflexión c/r al origen [ ] ­1 0 0 0 ­1 0 0 0 1 Shearing • Transformación que adiciona a una coordenada un valor lineal de la otra coordenada • Por ejemplo: x’ = x + 5*y y’ = y “Valor lineal de Y” Shearing • Shearing en X [ ] 1 0 0 Shx 1 0 0 0 1 Shearing • Shearing en Y [ ] 1 Shy 0 0 1 0 0 0 1 Shearing • Shearing en X e Y [ ] 1 Shx Shy 1 0 0 0 0 1 Applet • Applet: http://www.cs.princeton.edu/~min/cs426/applets.html Próxima clase • Viewing