TRANSFORMACIONES GEOMÉTRICAS
Introducción
Las transformaciones
geométricas son la o las operaciones geométricas que permiten crear una nueva
figura a partir de una previamente dada. la nueva figura se llamará “homólogo”
de la original.las transformaciones se clasifican en:
• Directa: el homólogo
conserva el sentido del original en el plano cartesiano.
• Inversa: el sentido
del homólogo y del original son contrarios además, también se pueden clasificar
de acuerdo con la forma del homólogo con respecto al original en:
• Isométricas: el
homólogo conserva las dimensiones y ángulos. También se llaman “movimientos”,
éstos son simetría axial y puntual, rotación y translación.
• Isomórficas: el
homólogo conserva la forma y los ángulos, existe proporcionalidad entre las
dimensiones del homólogo con el original, una de ellas es la homotecia.
• Anamórficas: cambia
la forma de la figura original. Una de ellas es la inversión (no la
trataremos).
2.1
Transformaciones Bidimensionales
Los procedimientos para
desplegar dispositivos de salida y sus atributos, se puede crear una variedad
de formas de figuras y graficas. En muchas aplicaciones, también hay una
necesidad de alterar o manipular despliegues. Algunas veces se necesita reducir
el tamaño de un objeto o grafica para colocarlo en un despliegue mayor. También
podría desearse probar la apariencia de modelos de diseño reacomodando las
posiciones relativas y los tamaños también relativos de las partes del modelo.
En aplicaciones de animación, se necesita producir movimiento continuo de
objetos desplegados alrededor de la pantalla. Estas diversas manipulaciones se
llevan a cabo aplicando transformaciones geométricas adecuadas a los puntos
coordenados de despliegue.
2.1.1 Traslación
Se aplica una traslación en un
objeto para cambiar su posición a lo largo de la trayectoria de una línea recta
de una dirección de coordenadas a otra. Convertimos un punto bidimensional al
agregar las distancias de traslación, tx y ty la posición de coordenadas
original (x, y).
El par de distancia de
traslación se llama vector de traslación o vector de cambio. Se pueden expresar
las ecuaciones anteriores en una sola ecuación matricial al utilizar vectores
de columna para representar las posiciones de coordenadas y el vector de
traslación.
Los polígonos se trasladan al
sumar el vector de traslación a la posición de coordenadas de cada vértice y se
vuelve a generar el polígono utilizando un nuevo conjunto de coordenadas y
vértices y las especificaciones actuales de los atributos.
Una traslación es el
movimiento en línea recta de un objeto de una posición a otra. Se traslada un
punto de la posición coordenada (x, y) a una nueva posición (x’, y’) agregando
distancias de traslación, Tx y Ty, a las coordenadas originales: x’ = x + Tx, y’
= y + Ty El par de distancia de traslación (Tx, Ty) se denomina también vector
de traslación o bien vector de cambio. Los polígonos se trasladan agregando las
distancias de traslación especificadas a las coordenadas de cada punto extremo
de la línea en el objeto.
Los objetos trazados con
curvas se trasladan cambiando las coordenadas definidoras del objeto. Para
cambiar la posición de una circunferencia o elipse, se trasladan las
coordenadas centrales y se vuelve a trazar la figura en la nueva localidad.
Las distancias de traslación pueden especificarse como cualquier número
real (positivo, negativo o cero). Si un objeto se traslada mas allá de los
límites del despliegue en coordenadas del dispositivo, el sistema podría
retornar un mensaje de error, suprimir partes del objeto que sobrepasan los
límites del despliegue o presentar una imagen distorsionada.
2.1.2 Rotación
Rotación:
Para rotar un objeto (en este caso bidimensional), se ha de determinar la cantidad de grados en la que ha de rotarse la figura. Para ello, y sin ningún tipo de variación sobre la figura, la cantidad de ángulo ha de ser constante sobre todos los puntos.
Otra forma de conseguir la rotación, respecto a un punto de movimiento, es fijar los diferentes puntos respecto a un punto de fijación siendo los puntos que forman la figura, relativos a este.
La fórmula a aplicar en este último supuesto, sería la siguiente:
X' = X * Cos (àngulo) - Y * Sin(ángulo)
Y' = Y * Cos (ángulo) - X * Sin(ángulo)
Para rotar un objeto (en este caso bidimensional), se ha de determinar la cantidad de grados en la que ha de rotarse la figura. Para ello, y sin ningún tipo de variación sobre la figura, la cantidad de ángulo ha de ser constante sobre todos los puntos.
Otra forma de conseguir la rotación, respecto a un punto de movimiento, es fijar los diferentes puntos respecto a un punto de fijación siendo los puntos que forman la figura, relativos a este.
La fórmula a aplicar en este último supuesto, sería la siguiente:
X' = X * Cos (àngulo) - Y * Sin(ángulo)
Y' = Y * Cos (ángulo) - X * Sin(ángulo)
Ejemplo:
2.1.3 Escalación
Una transformación para alterar el tamaño de un
objeto se denomina escalación.
Dependiendo del factor de escalación el objeto sufrirá un cambio en su tamaño pasando a ser mayor, o menor en su segmento de longitud.
Esta es la transformación del objeto especialmente interesante, pues con ella se consigue el efecto Zoom.
Dependiendo del factor de escalación el objeto sufrirá un cambio en su tamaño pasando a ser mayor, o menor en su segmento de longitud.
Esta es la transformación del objeto especialmente interesante, pues con ella se consigue el efecto Zoom.
2.2 Coordenadas
Homogéneas y Representación Matricial
En las aplicaciones de diseño
y de creación de imágenes, realizamos traslaciones, rotaciones y escalaciones
para ajustar los componentes de la imagen en sus posiciones apropiadas. En este
tema consideramos cómo se pueden volver a formular las representaciones de la
matriz de modo que se pueden procesar de manera eficiente esas secuencias de
transformación. Es posible expresar cada una de las transformaciones básicas en
la forma de matriz general con las posiciones de coordenadas P y P’
representadas como columnas de vector.2.15.P'=M1·P+M
Usualmente se requiere hacer
varias transformaciones, como una escala seguida de una rotación. Si se requiere
rotar un objeto alrededor de su propio centro, primero hay que trasladarlo al
origen, luego rotarlo y finalmente regresarlo a su posición inicial. Conviene
pues conocer las transformaciones inversas.
Forma matricial Multiplicación
de matrices con matrices y con vectores, matriz idéntica o identidad,
traspuesta, inversa.
2.3 Composición
de Transformaciones Bidimensionales
Con las representaciones de
matriz del tema anterior, podemos establecer una matriz para cualquier
secuencia de transformaciones como una matriz de transformación compuesta al
calcular el producto de la matriz de las transformaciones individuales. La
creación de productos de matrices de transformación a menudo se conoce como
concatenación o composición de matrices.
Traslaciones, rotaciones y
escalaciones Traslaciones Se aplican dos vectores de traslación sucesivos (tx1,
t y1) y (tx2 , t y2 ) en la posición de coordenadas P, la localización
transformada final P, la localización transformada final P’ se calcula
como:2.23.P'=T(t x2,t2)·T(tx1,ty1)·P}{=T(tx2, 2)·T(t x1,t y1)}{·P
Donde se representan P y P’
como vectores de columna de coordenadas homogéneas. Podemos verificar este
resultado al calcular el producto de la matriz para las dos agrupaciones
asociativas. Asimismo, la matriz de transformación compuesta para esta
secuencia de transformaciones.
Rotaciones
Dos rotaciones sucesivas que
se aplican en el punto P producen la posición transformada 2.26.P'=R (θ2) ·R
(θ1) {·P}=R (θ2) {· (θ1)} ·P
Al multiplicar las dos
matrices de rotación, podemos verificar que dos rotaciones sucesivas son
aditivas.
2.3.1
Translaciones, Rotaciones y Escalaciones
La composición de
transformaciones bidimensionales consiste en la mezcla de las transformaciones
bidimensionales básicas como son traslación, sesgado y escalado.
Notemos que no mencionamos la rotación como una transformación básica, esta es en realidad la combinación de escalado y sesgado.
Notemos que no mencionamos la rotación como una transformación básica, esta es en realidad la combinación de escalado y sesgado.
Estas transformaciones se
representan mediante un matriz de tres por tres como esta en la siguiente
figura. Los elementos a, b, c, d, tx y ty. Las posiciones adicionales u,
v y w no las tomaremos en cuenta porque por el momento no son importantes.
El significado para cada
posición es la siguiente
a:
escalado en el eje x.
b: sesgado en
el eje y.
c: sesgado en
el eje x.
d: escalado en
el eje y.
tx: traslación
en el eje x
ty: traslación
en el eje y
Para aplicar alguna(s) de las
transformaciones a un punto se necesita resolver la siguiente formula donde x y
y representa la posición original del punto, x’ y y’ representan la nueva
posición, los valores restantes representan los datos para realizar la
transformación requerida.
X' = x*a + y*c + tx
y' = x*b + y*d + ty
Para aplicar la rotación
nuestra matriz quedara de la siguiente forma donde ángulo representa los grados
a girar la imagen.
Notar que la rotación se
realiza con referencia al punto de origen, en caso de que se quiera rotar una
imagen sobre sí misma, es necesario moverla al origen, rotarla y regresarla a
su punto original.
Ahora estas operaciones no las
tenemos que llevar a cabo manualmente ya que existe un objeto llamado matrix el
cual tiene implementada las funciones de escalado, sesgado, traslado y
rotado
Al momento de crear el objeto
matrix deberemos pasarle como parámetros los valores a, b, c, d, tx y ty; en
caso de no pasarle los valores la matrix que se utilizara será una matrix
identidad.
2.3.2 Rotación
de Punto de Pivote General
Con un paquete gráfico que
sólo ofrezca una función de rotación para girar objetos con respecto del origen
de las coordenadas, podemos generar casi cualquier punto pivote seleccionado
(xr, yr) al realizar la siguiente secuencia de operaciones de
traslación-rotación-traslación:
1. Traslade el objeto de modo que se mueva la
posición del punto pivote al origen de las coordenadas.
2. Gire el objeto con respecto del origen de las coordenadas
2. Gire el objeto con respecto del origen de las coordenadas
Con un paquete de gráficas que
sólo ofrece una función de rotación para girar objetos con respecto del origen
de coordenadas, podemos generar casi cualquier punto pivote seleccionado (xr,
yr) al realizar la siguiente secuencia de operaciones de
traslación-rotación-traslación:
1. Traslade el objeto de modo
que se mueva la posición de punto pivote al origen de las coordenadas.
2. Gire el objeto con respecto
del origen de las coordenadas.
3. Traslade el objeto de
manera que se regrese el punto pivote a su posición original.
2.3.3 Escalación
de Punto Fijo General
En la siguiente figura ilustra
una secuencia de transformación para producir escalación con respecto de una
posición fija seleccionada (xf, f) al utilizar una función de escalación que
sólo puede escalar en relación con el origen de las coordenadas.
Una transformación de
escalación altera el tamaño de un objeto. Se puede realizar esta operación para
polígonos al multiplicar los valores de coordenadas (x, y) de cada vértice por
los factores de escalación sx y sy para producir las coordenadas transformadas
(x’, y').
El factor de escalación sx
escala objetos en la dirección de x, mientras que el factor de escalación sy lo
hace en la dirección de y.
Cuando se asignan el mismo
valor a sx y sy' se general una escala uniforme. Y cuando se asignan valores
distintos a sx y sy se obtiene una escala diferencial.
Podemos encontrar la
localización de un objeto escalonado al seleccionar una posición llamada punto
fijo, que debe permanecer sin cambio después de la transformación de
escalación.
2.3.4
Propiedades de Concatenación
La multiplicación de matrices
es asociativa. Para tres matrices cualesquiera A, B y C, el producto matricial
A·B·C se puede llevar a cabo al multiplicar primero a por B o multiplicar
primero B por C: 2.35.A · BC=(A· B) ·C =A· (B·C)
Por tanto, podemos evaluar los
productos matriciales al utilizar una agrupación asociativa ya sea de izquierda
a derecha o de derecha a izquierda. Por otro lado, los productos de la
transformación tal vez no sean conmutativos. En general el producto matricial
A·B no es igual que B·A. Esto significa queremos trasladar y girar un objeto,
debemos tener cuidado sobre el sentido en que se evalúa la matriz compuesta.
La operación por la cual dos
caracteres se unen para formar una cadena de caracteres (o string).
También se puede concatenar dos cadenas de caracteres o un carácter con una
cadena para formar una cadena de mayor tamaño.
2.4
Transformaciones Ventana - Área de Vista
El modelo del mundo que se
quiere representar almacena los objetos expresados usando un sistema de coordenadas
reales llamado sistema de coordenadas del mundo, en el que los objetos se
expresan en cualquier unidad que tenga significado la aplicación.
La aplicación dibuja los
objetos en un sistema de coordenadas enteras, llamado sistema de coordenadas de
dispositivo. Es necesario hacer una correspondencia que transforme coordenadas
de un sistema en otro y viceversa. Lo que hacemos es expresar una ventana en
coordenadas del mundo, en un puerto de visión expresado en coordenadas de
dispositivo. La pantalla viene definida por un sistema de coordenadas enteras
(píxeles).
Estos cálculos de
transformación de ventana en puerta de visión pueden expresarse de la siguiente
forma:
Incluyen factores de escalación y traslación.
Algunos paquetes gráficos permiten que el programador
especifique coordenadas de primitivas de salida en un sistema de coordenadas de
mundo de punto flotante, usando las
unidades que sean relevantes para el programa de
aplicación: angstroms, micras, metros, millas, etc.
Se emplea el término de mundo
porque el programa de aplicación representa un mundo que se crea o presenta
interactivamente para el usuario:
Como las primitivas de salida
se expresan en coordenadas de mundo, hay que indicar al paquete de subrutinas
gráficas cómo establecer la correspondencia entre las coordenadas de mundo y
las coordenadas de pantalla (usaremos el término específico coordenadas de
pantalla para relacionar este análisis específicamente con SRGP, pero podrían
usarse dispositivos de impresión, en cuyo caso sería más apropiado el término
coordenadas de dispositivo).
2.5
Transformaciones de la Composición General y de Eficiencia Computacional
Una transformación
bidimensional general, que representa una combinación de traslaciones,
rotaciones y escalaciones. Solo necesitamos efectuar cuatro multiplicaciones y
cuatro adiciones para transformar las posiciones de las coordenadas. Este es el
número máximo de cálculos que se requieren para cualquier secuencia de
transformación, una vez que se han concatenado las matrices individuales y
evaluadas los elementos de la matriz compuesta. Sin concatenación, se
aplicarían las transformaciones individuales una a la vez y se podría reducir
en forma considerable el número de cálculos. De esta manera, una implementación
eficiente de las operaciones de transformación consiste en formular matrices de
transformación, concatenar cualquier secuencia de transformación y calcular las
coordenadas transformadas.
Una
transformación bidimensional general, que representa una combinación de
traslaciones, rotaciones y escalaciones se puede expresar como Los cuatro elementos
rs ij son los términos multiplicativos de rotación - escalación en la
transformación que implican sólo ángulos de rotación y factores de
escalación.
No hay comentarios:
Publicar un comentario