Transformaciones
Índice
1. Transformaciones Básicas
1. 2. 3. Traslación Rotación Escalado
2. 3.
Representación Matricial y Coordenadas Homogéneas Otras Transformaciones
1. 2. Reflexión Afilamiento
4. 5.
Transformación de Ventana a Pantalla Algoritmos de Recorte
1. 2. 3. Recorte de Puntos Recorte de Líneas Recorte de Polígonos
Transformaciones geométricas
• •Con los algoritmos de primitivas ya podemos dibujar en pantalla El siguiente paso consiste en permitir modificar o manipular dichas primitivas Transformaciones Geométricas
– – – Para poder implementar aplicaciones de diseño Para poder realizar animaciones Para interactuar con la escena
•
Las transformaciones básicas que se necesitan son:
– – – Traslación: cambios en la posición Rotación:cambios en la orientación Escalado: cambios en el tamaño
Traslación
• Reposiciona un objeto desplazándolo a las nuevas coordenadas P’ = (x’, y’) P = (x, y)
⎧ x' = x + t x ⎨ ⎩ y' = y + t y
• En forma matricial:
ty
tx
T = (t x , t y )
P = ( x, y )
P' = ( x' , y ' )
P' = P + T
• • •
Es una transformación rígida
el objeto no se deforma
Para trasladar líneas rectastrasladamos sólo sus extremos Para trasladar polígonos, trasladamos sólo sus vértices y redibujamos
Rotación con respecto al origen
• • La posición de un punto es rotada alrededor del origen de coordenadas ¿Cómo sacamos la fórmula para obtener P’ a partir de P y del ángulo? P’ = (x’, y’)
R
P = (x, y)
• Solución: expresándolo en polares
⎧ x = R cos α ⎨ ⎩ y = R sin α
• En formamatricial:
⎧ x' = R cos(α + θ ) = ... = x cos θ − y sin θ ⎨ ⎩ y ' = R sin(α + θ ) = ... = x sin θ + y cos θ
P = ( x, y )
P' = ( x' , y ' )
P' = P ⋅ R
⎛ cosθ R=⎜ ⎜ − sin θ ⎝
sin θ ⎞ ⎟ cosθ ⎟ ⎠
Rotación general
• ¿Cómo será la fórmula general cuando el punto sobre el que se rota no es el origen, sino un punto cualquiera (xc, yc)? P’ = (x’, y’)
⎧ x' = xc + ( x − xc ) cos θ − (y − yc ) sin θ ⎨ ⎩ y ' = yc + ( x − xc ) sin θ + ( y − yc ) cos θ
• • Encontrar la forma matricial para este caso es un poco complicado Más tarde lo haremos de otra forma mucho más fácil
(xc, yc)
P = (x, y)
• • •
Es una transformación rígida
el objeto no se deforma
Para rotar líneas rectas rotamos sólo sus extremos Para rotar polígonos, rotamos sólo sus vértices yredibujamos
Escalado con respecto al origen
P’ = (x’, y’) • • La posición del punto se multiplica por una constante Hay que especificar dos factores de escala, sx y sy
⎧ x' = sx x ⎨ ⎩ y' = sy y
• En forma matricial:
P = (x, y)
P = ( x, y )
•
P' = ( x' , y ' )
⎛ sx S =⎜ ⎜0 ⎝
•
0⎞ ⎟ sy ⎟ ⎠
P' = P ⋅ S
Según el valor del factor de escala s:
– – – Si s > 1 Si s==1 Si s < 1aumento de tamaño no cambia de tamaño disminución de tamaño
Si sx == sy
escalado uniforme
•
Si sx != sy
escalado diferencial
Escalado general
• NOTA: si el origen de coordenadas no se encuentra en el interior del objeto, se produce un desplazamiento! Para evitarlo, se usa un punto fijo, y se escala a partir de él
•
⎧ x' = xc + s x ( x − xc ) ⎨ ⎩ y ' = yc + s y ( y − yc )
•x
2x
El punto fijo podría ser el centro del objeto, o uno de sus vértices, o tambén un punto arbitrario
• • •
Es una transformación rígida
el objeto no se deforma
Para escalar líneas rectas escalamos sólo sus extremos Para escalar polígonos, escalamos sólo sus vértices y redibujamos
Representación matricial
• Muchas aplicaciones incluyen secuencias de transformacionesgeométricas:
– – Una animación requiere que los objetos se trasladen y roten en cada fotograma Un diseño CAD requiere muchas transformaciones hasta obtener el resultado final
• • • •
Debemos formular de forma muy eficiente toda la secuencia de transformaciones Cada transformación puede representarse como
P’ = P M1 + M2
La matriz M1 contiene la información de ángulos y factores de escala...
Regístrate para leer el documento completo.