Composición de transformaciones - ramos on

Anuncio
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
Descargar