Transformaciones Geometricas Bidimencionales

También podría gustarte

Está en la página 1de 18
238 CAPITULO 5 Trunsformaciones geométricas 5.1. TRANSFORMACIONES GEOMETRICAS BIDIMENSIONALES BASICAS Las funciones de transformaciones geométricas que se pueden encontrar en todos los paquetes graficos, son aquellas que se usan para la traslacién, Ia rotacidn y el cambio de escala, Otras rutinas de transformaciones litiles, que a veces se incluyen en los paquetes, son las operaciones de reflexién ¢ inclinacién. Para introducit los conceptos generales asociados a las transformaciones geométricas, se van a considerar en primer lugar, las operaciones en dos dimensiones, y después se discutiré cémo las ideas bésicas pueden extenderse a escenas tridimensionales. Una vez que se hayan comprendido los conceptos bisicos, se podran escribir facilmente rutinas para representar transformaciones geométricas de objetos en escenas bidimensionales. Traslaciones bidimensionales Se realiza una trastacién de un punto sencillo de coordenadas, mediante la inclusién de compensaciones en sus propias coordenadas, para generar una nueva posicién de coordenadas. En efecto, se est moviendo la posicién del punto original a lo largo de una trayectoria en linea recta hacia su nueva localizacién. De modo similar, una traslacién es aplicable a un objeto que se define con multiples posiciones de coordenadas, tales como cuadriliteros, mediante la recolocacién de todas las posiciones de sus coordenadas, usando el mismo desplazamiento a lo largo de trayectorias paralelas. Asi, el objeto completo se muestra en la nueva localiza- cin, ara trasladar una posicion bidimensional, afiadimos distancias de traslaci6n /,y 1, a las coordenadas ori- ginales (x, ») para obtener Ia nueva posicién de coordenadas (x, y’) como se muestra en la Figura 5.1 thy yearty 6.1) El par de distancia de traslacién (t,,4,) se llama veetor de traslacién o vector de cambio. Podemos expresar las Ecuaciones dé traslacién 5.1 como una nica ecuacién de una matriz, usando los siguientes vectores columna para representar posiciones de coordenadas y el vector de traslacién. | (52) Esto nos permite escribir las ecuaciones de traslacién bidimensionales en forma de matriz. P=P+T (63) La traslacidn es un tipo de transformacién de sélido-rigido que mueve objetos sin deformarlos. Esto es, cada punto de un objeto es trasladado en la misma medida. Un segmento en linea recta es trasladado median- te la aplicacién de una ecuacién de transformacién a cada uno de los puntos finales de la linea y redibujando la linea entre los dos nuevos puntos finales, Un poligono se traslada de forma similar, Se aflade un vector de an FIGURA 5.1. ‘Traslacién de un punto desde la posicién P a la posicién P’ usando ~_—___- tun veetor de trasacién T. 5.1 Transfarmaciones geometricas bidimensionalesbasicas 239 10 0 5 0 IS a) tla. pe 0 1S FIGURA 52. Movimiento de un poligono desde la posicién (a) a la o posicién (b) con el vector de trastacién (—$.50, 3.75). traslacién a la posicién de Jas coordenadas para cada vértice y después se regenera el poligono usando un nuevo conjunto de coordenadas de vértices. La Figura S.2 ilustra la aplicacién del vector de traslacién espe- cificado para mover un objeto de una posicién a otra La siguiente rutina ilustra las operaciones de traslacién, Un vector de traslacién de entrada se usa para mover los vértices de un poligono desde una posicién de un universo de coordenadas a otro, y las rutinas de (OpenGL se usan para regenerar el poligono trasladado. clase wePt2D { public: oufloat x, ¥; a void translatePolygon (wcPt2D * verts, GLint nVerts, GLfloat tx, GLfloat ty) 4 hint k; for (k= 0; % < averta; k++) { verte (k].x = verts [kl.x + tx; verts kliy = verts (kl.y + ty: } giBegin (oL.PoLYaoN) ; for (k = 0; K < nVerte; kts) givertex2f (verts (k).x, verts [kl y); glad ( ); Si se desea borrar el poligono original, se puede mostrar con un color de fondo antes de trasladarlo, En algunos paquetes graficos hay disponibles otros métodos para borrar componentes de dibujo. Tambien, si se desea guardar la posicién del poligono original, se pueden almacenar las posiciones trasladadas en un regis tro diferente. 240 CAPITULO 5 Transformaciones geomtricas Para trasladar otros objetos se usan métodos similares. Para cambiar la posicién de un circulo 0 una elip- se, se puede trasladar el centro de coordenadas y redibujar la figura en la nueva localizacién. Para una curva spline, se trasladan los puntos que definen la trayectoria de la curva y después se reconstruyen las secciones de la curva entre las nuevas posiciones de coordenadas. Rotaciones bidimensionales Se genera una transtormacién de rotacién de un objeto mediante la especificacién de un eje de rotacién y un Angulo de rotacién. Todos los puntos del objeto son entonces transformados @ la nueva posicién, mediante la rotacién de puntos con el angulo especificado sobre el eje de rotacién. ‘Una rotacién bidimensional de un objeto se obtiene mediante la recolocacién del objeto a lo largo de una trayectoria circular sobre el plano xy. En este caso, se esti rotando el objeto sobre un eje de rotacién que es perpendicular al plano (paralelo al eje de coordenadas =). Los parametros para la rotacién bidimensional son ¢l angulo de rotacién 8, y una posicidn (x,,y,) llamada punto de rotacién (0 punto de pivote) sobre los eua~ les el objeto va a ser rotado (Figura 5.3). El punto de pivote es la posicién de interseecin entre el eje de coor- denadas y el plano xy. Un valor positivo para el éngulo @ define una rotacién en sentido contrario a las agu- jas del reloj sobre el punto de pivote, como en la Figura 5.3, y un valor negativo rota objetos en el sentido de las agujas del reloj. Para simplificar la explicacién del método biisico, primero hay que determinar las ecuaciones de transfor- macién para la rotacién de un punto de posicién P, cuando el punto de pivote esta en el origen de coordena- das. La relacién entre el angular y las coordenadas de las posiciones originales y transformadas se muestra en Ja Figura 5.4. En esta figura, r es la distancia constante del punto respecto del origen, el ingulo ¢ es la posi- cién angular original del punto desde Ia horizontal, y 8s el Angulo de rotaci6n, Usando identidades trigono- métricas estindar, podemos expresar las coordenadas transformadas en funcién de los éngulos 6 y@ como: 10s (0+ @) =r cosd cos6—r sing sind y’=rsin (6+ 8) =r c0s0 sind-4r sing cos G4 Las coordenadas originales del punto en coordenadas polares son: =r c0s@, yearsing 65) Sustituyendo las expresiones de 5.5 en la Ecuacién 5.4, obtenemos las ecuaciones de transformacién pars rotat la posicién de un punto (x,y) aplicando un angulo 6 sobre el origen: . x! =x cosO—y sind 7) y’ =xsind + y C088 FIGURAS4, Rotacin de un punto desde la posicién (x. ») FIGURAS3, Rotacién de un objeto un dngulo ign (x',»") un angulo @ respecto del origen de coordenadas alrededor del punto de pivote (1. ¥,) plazamiento angular original del punto respecto del eje x es 5.1 Transformaciones geométricas bidimensionales bisicas, 241 wy) TF | pepe 9), FIGURASS. Rotacidn de un punto desde la posivin (x,y) ala posix cid (2',»") un dngulo @ respecto al punto de rotacién 3.) Con las representaciones del vector columna 5.2, para posi ecuaciones de rotacién en forma de matriz nes de coordenadas, podemos escribir las RP OD donde la matriz de rotacién es: cos @ sin @ (5.8) sind cos ‘Una representacién del vector columna para una posicidn de coordenadas P como en las Eeuaciones 5. es una notacién matemética esténdar. En cualquier caso, los primeros sistemas grifieos a veces usaban una representaciin de vector-fila para posiciones de puntos. Esto cambia el orden en el que la matriz de multip! cacibn para una rotacién seria representada. Pero ahora, todos los paquetes gritficos como OpenGL, Java, PHIGS y GKS siguen los convenios del esténdar yector-columna, La rotacién de un punto sobre una posicidn de pivote arbitraria se ilustra en la Figura 5.5. Usando las rela- ciones trigonométricas indicadas por los dos tridngulos rectangulos de esta figura, se pueden generalizar las Ecuaciones 5.6 para obtener las ecuaciones de transformacién para la rotacién de un punto sobre cualquier posicién de rotacién especifica (x, »,): x, + (x=,) c0s0- (v—y,) sind ; 6. + (v—x,) sind + (Vy, €088 Estas ecuaciones de rotacién generales differen de las Ecuaciones 5.6, por la inclusién de términos aditi- vos, asi como factores multiplicativos en los valores de coordenadas. La expresin de la matriz 5.7 puede ‘modifigarse para incluir las coordenadas pivote afiadiendo la matriz de vector columna, cuyos elementos con- tienen los términos aditivos (traslacionales) de las Ecuaciones 5.9, De todos modos, hay mejores maneras de formular dichas ecuaciones matriciales, por lo que en la Seccién 5.2 se expone un esquema mis consistente para representar ecuaciones de transformacién. ‘Al igual que con las traslaciones, las rotaciones son transformaciones de sdlido-rigide que mueven obje- tos sin deformarlos. Cada punto de un objeto se rota un mismo dngulo. Un segmento en linea recta se rota mediante la aplicacién de las ecuaciones de rotacién 5.9 a cada uno de sus puntos finales o extremos y redi- bujando iuego la linea entre los nuevos extremos. Un poligono se rota desplazando cada uno de sus vértices usando el angulo de rotacion especifieado y después regenerando el poligono usando los nuevos vértices Rotamos una curva reposicionando los puntos de definicién para la curva y redibujéndola después. Un circu lo o una elipse, por ejemplo, pueden rotarse sobre un punto de pivote no centrado, moviendo la posicién del centro a través del arco que sustenta el angulo de rotacién especificado, Y podemos rotar una elipse sobre su propio centro de coordenadas, sencillamente rotando el eje mayor y el ee menor. En el siguiente codigo de ejemplo, se rota un poligono sobre un punto de pivote de un universo de coor- denadas especificado. Los pardmetros de entrada para el procedimiento de rotacién son los vértices origina- 242 CAPITULO 8 Transformaciones geométricas les del poligono, las coordenadas del punto de pivote y el Angulo de rotacién theta especificado en radianes. Siguiendo la transformacién de la posicién de los vértices, el poligono se regenera usando rutinas OpenGL. class wePt2D { ‘publi GuEloat x, yi de void rotatePolygon (wertzD * verte, Ghint nVerts, WePt2D pivFt,GLdouble theta) { wert2b * vertsKot; Guint k; for (kK = 0; k < nVerte; k++) { verteRot (k].x-= pivet.x + (verte tk). = (verte [kl verteRot (k].y = pivpt.y + (verts [k] + (verte Ik. ~ pivPt.x) + cos (theta) piver-y) * sin (theta); pivet.x) * sin (theta) pivet.y) * cos (theta) ; Ske 2. giBegin (GL_POLYCON}; for tk = 0; k < nVexte; ke+) givertex2f (vertsRot [k].x, vertsket [ik] .y); gisd ( ); Cambio de escala bidimensional Para alterar el tamafio de un objeto, aplicamos transformaciones de escala. Una simple operacién de cambio de escala bidimensional se lleva a cabo multiplicando las vesicles de los objetos (x, 7) por los factores de ‘escala s, y 5, para producir las coordenadas transformadas (x’, v =x-ay 5, . 19) El factor de escala s, cambia la escala de un objeto en la direccién x, mientras que s, hace el cambio de ‘escala en la direccién y. Las ecuaciones basicas del cambio de escala en dos dimensiones 5.10 pueden tam- bien escribirse en la forma de la matriz siguiente. fs. 0) fx y} Lo s,J Ly P=S-P (5.12) donde $ es la matriz 2 por 2 de cambio de escala en la Ecuacién 5.11. Cualquier valor positivo puede ser asignado a los valores de escila s, y s,, Valores inferiores a 1 reducen el tamafio de los abjetos; valores superiores a 1 producen alargamientos. Especificando un valor de 1 tanto para s,, como para s, se deja el tamaiio del objeto inalterado, Cuando a s, y s, ¢ les asigna el mismo valor, se produce tn cambio de escala uniforme que mantiene las proporciones relativas del objeto, Valores desigus- les de s, y s, resultan en un cambio de escala diferente que es a menudo usado en aplicaciones de disefio, donde 10s dibujos son construidos desde unas pocas formas basicas que pueden ajustarse mediante escalas y (1) 5.1 Transformaciones geométricas bidimensionales bisicas 243 @ tb) FIGURA 58. Conversién de un cuadrado (a) FIQURAS7. Cumbio de escala de una tinea aplicando la Eeuacién en un rectingulo (b) mediante los factores de 5.12 con s, = §, = 015, reduciéndose su tamaio y aproximindose escalas, = 25 = 1 al origen de coordenadas. FIGURA S38. Cambio de escala respecto a un punto fijo seleccio~ Py ., Py f SS, relaresomtaen oe erie: * fijo se éscala mediante las Ecuaciones de transformacion 5.13. ‘s=xxsformaciones posicionales (Figura 5.6). En algunos sistemas, ios valores negativos también pueden espe- ‘ificarse mediante parhmettos de escala. Filo no sblo le da un niev9 tamaiio al objeto, ademas Lo refleja sobre tuno 0 mis ejes de coordenadas. Los objetos transformados con la Ecuacién 5.11 son tanto escalables como reubicables. Los factores de escala con valores ‘bsolutos inferiores a 1 mueven los objetos apToximandolos al origen, mientras que-valo- res absolutos mayores que 1 mueven la posicién de las coordenadas alejéndolas del origen. La Figura 5.7 ilus- tra el cambio de escala de una linea asignando el valor 0.5 a s, ys, en la Ecuacién 5.11, Tanto la linea de lon- gitud como la distancia desde el origen se reducen en un factor de +. Podemos controlar la localizacién de un objeto cambiado de escala eligiendo una posicién, llamada punto fijo, que debe permanecer sin cambios después de la transformacién de escala. Las coordenadas para el punto fijo, (xp 9) son a menudo elegidas de la posicién de algiin objeto, tal como su centroide (Apéndice A), aun- ‘que puede elegirse cualquier otra posicién espacial. A los objetos se les da ahora otro tamafio mediante el cambio de eseala de las distancias entre los puntos de los objetos y el punto fijo (Figura 5.8). Para la posicién {de coordenadas (x,y) las coordenedas de escala (x’, y’) se calculan a partir de las siguientes relaciones. x =H = (0-4) 5 (5.13) Podemos rescribir las Ecuaciones 5.13 para separar los términos multiplicative y aditivo como: +8, 44/1 -5,) 14) yr styl =s,) donde los términos aditivos x,(1 ~ 5,) € y,{1 ~s,) son constantes para todos los puntos del objeto. Incluir las coordenadas para un punto fijo en las ecuaciones de escala es similar a incluir coordenadas para un punto de pivote en ecuaciones de rotacién, Podemos configurar un vector columna cuyos elementos sean téminos constantes en las Ecuaciones 5.14 y después sumar este vector columna al producto S:P en la Ecuacién 5.12. En la préxima seccién veremos la formulacién de una matriz para las ecuaciones de transfor- macién que implican s6lo matrices de multiplicacién. 244 CAPITULO 5 Transformaciones geometricas Los poligonos cambian de escala mediante la aplicacién de las Ecuaciones de transformacién 5.14 a cada vértice, regenerando después el poligono usando los vértices transformados. Para otros objetos, aplicamos las ecuaciones de transformacion de escala 2 los parimetros que definen el objeto. Para cambiar el tamaio de un irculo, podemos reducir su radio y calcular las nuevas posiciones de las coordenadas del contorno de la cir- ‘cunferencia. Y para cambiar el tamaito de una elipse, aplicamos el escalado de los parimetros sobre sus ejes para luego trazar la nueva posicién de la elipse sobre su centro de coordenadas. El siguiente procedimiento ilustra una aplicacién de los calculos de cambio de escala para un poligono. _ Las coordenadas para los vértices del poligono ¥ para el punto fijo son pariimetros de entrada, junto con los factores de escala, Después de realizar las transformaciones de coordenadas, se usan las rutinas OpenGL para generar el poligono cambiado de escala. class wePt2D { public: Gufloat x, yi ys void scaleFolygon (woFt2D * verte, GLint nVerts, weptzD fixed?t, GhEioat sx, GuEloat sy) WOPtZD vertsNew; guint; for (k = 0; k < nvertsy k++) { yerteNew [k].x = varts [k].x * sx + fixedPe.x,t (1 - sx); vertenew tk] .y-= verts [k].y * sy + fixearr.y * (1 - ey): } giBegin {cb_Pouyson}; for (k = 0; % < nVerta: k++) glvertex2t (vercavew [k].x, verteew [k).y)7 gina (1; 5.2 REPRESENTACION MATRICIAL Y COORDENADAS HOMOGENEAS Muchas aplicaciones griticas implican secuencias de transformaciones geométricas. Una animacidn deberia requerir que un objeto fuese trasladado y rotado tras cada incremento de movimiento. En diseiio y aplicacio- nes de construceién de dibujos, se Tlevan a cabo traslaciones, rotaciones y cambios de escala para acoplar los componentes del dibujo dentro de sus propias posiciones, Y la visualizacién de las transformaciones implica secuencias de traslaciones y rotaciones para llevarnos desde fa escena original especificada a la visualizacién en un dispositivo de salida. Aqui, consideramos cémo las representaciones de matrices discutidas en la sec- cién anterior pueden reformularse, de tal forma que las secuencias de transformaciones puedan ser procesa~ das eficientemente, Hemos visto en la Seccién 5.1 que cada una de las tres transformaciones bidimensionales basicas (trasla- cidn, rotacién y cambio de escala) pueden expresarse en forma de matriz general: P'=M,:P+M, (15) con posiciones de coordenadas P y P’ representados en vectores columnas. La matriz M, es una matriz de 2 por 2 que contiene factores multiplicativos, y M,,es uta matriz columna de 2 elementos que contiene los tér- 5.2. Representacion matricial y coordenadas homogéneas 245 ~ sos traslacionales. Para la traslacién, M, es Ia matriz identidad. Para la rotacién o el cambio de escala, M, Traslaciones compuestas bidimensionales Si dos vectores de traslacién consecutivos (t,,. f;,) ¥ (to. fy) 8¢ aplican a una posicién de coordenadas bidi- mensional P, la ubicacién transformada final P’, se calcula como: = Wigs fy.) Mays) Ph {Tae ,)° Thiye ty}P (527) donde P y P’ se representan como vectores columna de coordenadas homogéneas de tres elementos. Podemos verificar estos resultados, calculando el producto de matrices para los dos agrupamientos asociados. También, la matriz de transformacién compuesta para esta secuencia de traslaciones es: 104) [1 0 4.4h, 28) 0 1 4,J=]0 1 4,41, oo1}loo 4 % Tltays t3,) * Myer ty) = Ty, + toys yy thy) (5.29) Jo cual demuestra que dos traslaciones sucesivas son aditivas. ~» Rotaciones compuestas bidimensionales Dos rotaciones sucesivas aplicadas a un punto P producen la posicién transformada: = R(G,)- (R(B)) P) = R(B,)- R(B,)} * P (5.30) Mediante la multiplicacién de dos matrices de rotacién, podemos verificar que dos rotaciones sucesivas son aditivas: R(G,) - R(G,) = RG, + 8) (631) ~ por tanto, las coordenadas rotadas finales de un punto pueden calcularse con la matriz de rotacién compues- tacomo P=R(O, + 0,)-P (5.32) »,Cambios de escala compuestos bidimensionales Concatenar matrices de transformacién para dos operaciones sucesivas de cambio de escala en dos dimensio- nes produce la siguiente matriz de cambio de escala compuesta: sy, 0 Olfs, 0 0] fs.-5, 0 0 15.33) 0 s, OF} 0 5, Of=| 0 0 0 0 1fJ[0 O21 oO 1 8, SU>_4 53) * Sy 49 81,) = Spee Sy 53) S34 ‘La matriz resultante en este caso indica que operaciones de cambio de escala sucesivas son multiplic -vas, Esto es, si quisigramos triplicar el tamaiio de un objeto dos veces seguidas, el tamafto final seri r veces mas grande que el original. 34 Transformaciones compuesta bidimensionales 249 Rotacién general sobre un punto de pivote bidimensional Cuando un paquete grifico offece sélo una funcién de rotacién con respecto al origen de coordenadas, pode~ ‘mos generar una rotacién bidimensional sobre cualquier otro punto de pivote (x,y) representando la siguien- te secuencia de operaciones traslacién-rotacién-traslacié (1) Trasladar el objeto de tal forma que la posicién del punto de pivote se mueva al origen de coordena- das, (2) Rotar el objeto sobre el eje de coordenadas. (3) Trasladar el objeto de tal forma que el punto de pivote vuelva a su posicién original. Esta secuencia de transformaciones se ilustra en la Figura 5.9. La matriz de transformacién compuesta para esta secuencia se obtiene con la concatenacién: 10 x] [cos@ -sin@ o][1 0 -x, sin@ cos@ Oo 1 -y, o 9 ifloo 1 (335) cos 8 =sin@ x,(1—cos @)+ sin @ cos y,(I-cos @)-. 0 0 in 8 sin 6 que puede expresarse en la forma: To.) ROT donde T(-x,,-y,) = T-'(x,.y,), En general, una funcidn de rotacién de una biblioteca gréfica, puede estructu- rarse para aceptar panimetros de coordenadas de un punto de pivote, asi como de un dngulo de rotaci6n, y para generar automiaticamente la matriz de rotacién de la Ecuacién 5.35. RUy,.¥,. Cambio de escala general de puntos fijos bidimensionales La Figura 5.10 ilustra una secuencia de transformaciones para producir un cambio de escala bidimensional con respecto a una posicidn fija seleccionada (x, ¥,) cuando tenemos una funcién que solo puede realizar un cambio de escala respecto al origen de coordenadas. Esta secuencia es: (1) Trasladar el objeto de tal forma que el punto fijo coincida con el origen de coordenadas. Gm) 6.9) | w © © @ Posicisn oviinal ‘Traslacién del Rotacign ‘ranslacdn del el objeto y det. ‘eto de modo gue alrededor objeto de mado unto de pivote el punio e pivote el origen ‘que el punta de (3) Se reve pivote vuelve ata aforigen posieion (, 95) FIGURA 5. Sccuencia de transformacién para la rotacién de un objeto sobre un punto de pivoie especificado usando ta ‘matriz de rotacién R(6) de la transformacién 5.19. 250 CAPITULO 5 Transformaciones geométricas oy. a9) @ © ® Posicin original Se taslada e objeto Se escalael objeto Se trastada el del objet y de de modo que el punto con respecto ‘bjeto de modo que punto fjo Ajo (3) se sta en alorigen punto fio vuelve ‘Lorigen ‘la posicibn (x. ¥) FIGURAS.10, Secuencia de transformacién para el cambio de escala de un objeto con respecto a una posi fijaespe- ccifica, usando la matriz de escala S(s,, s,) de transformacién 5.21. |) Cambiar de escala un objeto con respecto al origen de coordenadas. (3) Usar la inversa de la traslacidn del paso (1) para devolver el objeto a su pos jén original. La concatenacién de matrices para estas tres operaciones produce la requerida matriz de cambio de escala: 10 x,]fs, 0 o][1 0 0 x/(=s,) (337) 0 1 y,|{0 s, offo 1 5, ¥(=s,) oo 1Jlo o ajo o o 4 °, Top.) Sy 5) Tap = Sep Ym 555) (5.38) Esta transformacién se genera automaticamente en sistemas que ofrecen una funcidn de cambio de escala que acepta coordenadas para un punto fijo. Directrices generales para el cambio de escala bidimensional Los parimetros s, y s, cambian la escala de objetos a lo largo de las direcciones x ey. Podemos cambiar de escala un objeto Segiin otras direcciones mediante la rotacién del objeto para alinear la direccién del cambio de escala deseado con los ejes de coordenadas antes de aplicar la transformacién cambio de escala. ‘Supongamos que queremos aplicar factores de escala con valores especificados por los pardmetros s, y S> en las direcciones mostradas en la Figura 5.11. Para llevar a cabo el cambio de escala, sin cambiar la orienta- cin del objeto, primero se lleva a cabo la rotacién de forma que las direcciones para s, y s, coincidan con los ejes xe y, respectivamente. Después, se aplica la transformacién de cambio de escala S(s,, 53) seguida de una FIGURA5:11. Parimetros de cambio de escala 5, y sya lo largo de direccio- nes ortogones definidas pore! desplazamiento angular 6 54 Transformaciones compuestas bidimensionales 241 rotacién opuesta a los puntos de retomno de sus orientaciones originales. La matriz compuesta resultante del producto de estas tres transformaciones es: 5, cos’ @+s, sin’@ (s,-s,)cos@ sind 0 6.39) R'(8)-S(s,,s,)-R(O)=| (s,-s,)cos@ sind 5, sin" +s, cos’@ 0 ° 0 1 Como ejemplo de esta transformacién, giramos un cuadrado para convertirlo en un paralelogramo (Figura 5.12) estrechandolo a lo largo de la diagonal desde (0,0) hasta (1,1). Primero rotamos la diagonal sobre el eje y usando @= 45°, luego duplicamos su longitud con los valores de escala s, 1 y sy =2, y después lo rotamos de nuevo para devolver la diagonal a su orientacién original En la Ecuacién 5.39, asumimos que ese cambio de escala iba a ser realizado con relacién al origen. Podemos llevar esta operacién de cambio de escala un paso mas alld y concatenar la matriz con los operado- res de traslacién, de tal forma que la matriz compuesta incluiria los parametros para la especificacién de una posicién fija de cambio de escala, Propiedades de la concatenacién de matrices x La multiplicacién de matrices es asociativa. Para tres matrices cualesquiera, M,,M, y Ms, la matriz produc- to M; * M) - M, puede obtenerse multiplicando primero M, y M, 0 multiplicando primero M, y My: M,*M,°M, = (M, * M,)-M, = M, «(M+ M,) (4) Por tanto, dependiendo del orden en el que se hayan especificado las transformaciones, podemos construir una matriz. compuesta, bien multiplicando de izquierda a derecha (premultiplicando) o bien multiplicando de derecha a izquierda (postmultipliando). Algunos paquetes grificos requieren que las transformaciones se hhagan especificando el orden en el que deben ser aplicadas. En este caso, invocariamos primero la transfor- ‘macién M,, luego M, y después M,. A medida que se llama de manera sucesiva a cada rutina de transforma- cién, su matriz es concatenada a la izquierda de! producto de matrices previo. Otros sistemas gréficos, sin embargo, postmultiplican las matrices, asi que esta secuencia de transformaciones tendria que invocarse en el orden inverso: la Gltima transformacién invocada (que para este ejemplo es M,) es la primera en aplicarse, y la primera transformacién que fue Hamada (M, para nuestro ejemplo) es ta diltima en aplicarse. Por otra parte, el producto de transformaciones no puede ser conmutativo. El producto de las matrices M, - Mj en general no es igual que M, ‘ M,. Esto significa que si queremos trasladar y rotar un objeto, debe- ‘mos tener cuidado con el orden en se evaliia la matriz compuesta (Figura 5.13). Para algunos casos especia- les, tales como una secuencia de transformaciones todas del mismo tipo, la multiplicacién de matrices de 2.2) @D aa Gn, 172) oo 0) r 0.0) @) o FIGURA 5.12. Un cuadrado (a) se convierte en un paralelogramo (b) utilizando Ia matriz de transformacién compuesta 5.39, cons, = 1,s; =2y @= 45°. 252 CAPITULO 5 Transjormaciones geoméiricas a FIGURAS.19._Invertirel orden en el que se leva aeabo la seeuencia de transformaciones puede afectar ala posicién trans- formada de un objeto. En (a), un objeto primero se traslada en la direccién x y luego se rota en el sentido contario al de Jas agujas del reloj con un éngulo de 45°. En (b), el objeto primero se rota 45° en el sentido contrario al de las agujas det reloj y después es trasladadlo en la direccion x. transformacién es conmutativa. Como ejemplo, dos rotaciones sucesivas pueden llevarse a cabo en cualquier orden y la posicién final sera la misma, Esta propiedad conmutativa también se aplica para dos traslaciones sucesivas 0 dos cambios de escala sucesivos. Otro par de operaciones conmutativo es la rotacién y el cambio de escala uniforme (s, = 5,). Transformaciones compuestas bidimensionales generales y eficiencia de calculo Una transformacién bidimensional, que representa cualquier combinacién de traslaciones, rotaciones y cam= bios de escala se puede expresar como: Y] fra ry ms] fx y fel. ry ms, ly (4) ‘}Lo o lt Los cuatro elementos rj son los términos multiplicativos rotacién-escala en la transformacién, lo que implica s6lo dngulos de rotacién y factores de escala, Los elementos srs, y 1rs, son los términos traslaciona- les, que contienen combinaciones de distancias de traslacién, coordenadas de puntos de pivote y puntos fijos, ‘ngulos de rotacién y parimetros de escala, Por ejemplo, si se va a cambiar de escala y rotar un objeto sobre las coordenadas de su centroide (x, y,) ¥ luego se va a trasiadar, los valores de los elementos de la matriz. de transformacién compuesta son: Thr, 1.) RO, ¥,.8) Sx, 8) 8, 6080 5, sin® =| 5, sin@ 5, cos , 0080) —x,5, sind +1, 0 0 i cosd)+y.5, sind +, (42) ‘Aunque la Ecuacién de matrices 5.41 requiere nueve multiplicaciones y seis sumas, los calculos explici- tos para las coordenadas transformadas son: MSR TY My + My YAK Mg AY Ny Hats, (5.43) Por tanto, realmente necesitamos realizar cuatro multiplicaciones y cuatro sumas para transformer las posiciones de coordenadas. Este es el maximo nimero de calculos requerido para cualquier secuencia de transformacidn, una vez que las matrices individuales se han concatenado y se han evaluado los elementos de 5.4 Transformaciones compuestas bidimensionales 253, la matriz compuesta. Sin concatenacién, las transformaciones individuales se aplicarian una cada vez, y el niimero de eélculos podria incrementarse significativamente. Por tanto, una implementacién eficiente para las operaciones de transformacién es formular matrices de transformacién, concatenar cualquier secuencia de transformacién y calcular las coordenadas transformadas usando las Ecuaciones 5.43. En sistemas paralelos, las multiplicaciones directas de matrices con la matriz de transformacién compuesta de la Ecuaci6n 5.41 pue- den ser igualmente eficientes. Dado que los célculos de rotacién requieren evaluaciones trigonométricas y varias multiplicaciones para cada punto transformado, la eficiencia de célculo puede convertirse en algo importante a considerar en las transformaciones de rotacién. En animaciones y otras aplicaciones que implican muchas transformaciones repetidas y pequefas angulos de rotacién, podemos usar aproximaciones y célculos iterativos para reducir los caleulos en las ecuaciones de transformacién compuestas, Cuando el éngulo de rotacién es pequefio, las fun- ciones trigonométricas pueden ser sustituidas con valores aproximados basados en unos pocos primeros té minos de su desarrollo en serie de potencias. Para angulos suficientemente pequetios (inferiores a 10°) cos 8 es, aproximadamente, 1.0 y sind tiene un valor muy prdximo al valor de 6 radianes. Si estamos rotando en pequefios pasos angulares sobre el origen, por ejemplo, podemos igualar cos@ a 1.0 y reducir los cdlculos de transformacién a cada paso a dos multiplicaciones y dos sumas para cada juego de coordenadas que se qui ran rotar, Estos célculos de rotacién son x/=x-ysin 8, yl=rsin @+y (5.44) donde sin@ se evaltia una vez para todos los pasos, asumiendo que el angulo de rotacion no cambia. El error introducido en cada paso por esta aproximacion disminuye a la vez que disminuye el angulo de rotacién. Pero incluso con pequefios angulos de rotacién, el error acumulado a lo largo de muchos pasos puede ser bastante ‘grande. Podemos controlar el error acumulado estimando el error en x’ e y’ a cada paso y reinicializando la posicién del objeto cuando el error acumulado se vuelve demasiado grande. Algunas aplicaciones de anima- cién reinicializan autométicamente las posiciones de un objeto y fijan intervalos, por ejemplo, cada 360° 0 cada 180°. Las transformaciones compuestas a menudo implican matrices inversas. Por ejemplo, las secuencias de transformacién para direcciones de escalado generales y para algunas reflexiones e inclinaciones (Seccién 5.5) requieren rotaciones inversas. Como hemos podido ver, las representaciones de la matriz inversa para las transformaciones geométricas bisieas pueden generarse con procedimientos sencillos, Una matriz de trasla- cién inversa se obtiene cambiando los signos de las distancias de traslacién, y una matriz de rotacién inversa se obtiene mediante una matriz traspuesta (0 cambiando el signo de Jos términos en seno). Estas operaciones son mucho més simples que los calculos directos de matriz inversa Transformacién bidimensional de sdlido-rigido Si una matriz de transformacion incluye sélo parémetros de traslacién y rotacién, es una matriz de trans- formacin de sélido-rigido. La forma general para una matriz de transformacidn bidimensional de sélido- rigido es: rot, iy Ty ty (5.45) 001 donde los cuatro elementos 7, son los términos multiplicativos de la rotacién, y los elementos ér, y r, son los términos traslacionales. Un cambio en una posicidn de coordenadas de un sélido-rigido, a veces también se denomina transformacién de movimiento rigido. Todos los Angulos y distancias entre posiciones de coorde- nadas son inalterables mediante una transformacién. Ademés, la matriz 5.45 tiene la propiedad de que su sub- matriz de 2 por 2 superior izquierda es la matriz ortogonal. Esto significa que si consideramos cada fila (0 254 CAPITULO 5 Transformaciones geométricas cada columna) de la submatriz como un vector, entonces los dos vectores fila (r,.. 74) (0 los dos vectores columna) forman un juego ortogonal de vectores unidad. Tal juego de vectores, también se puede denominar juego de vectores ortonormal. Cada vector tiene como longitud la unidad: (5-46) ¥y los veetores son perpendiculares (su producto escalar es 0): Tele * Toy (347) Por tanto, si estos veetores unidad se transforman mediante la rotacién de Ia submatriz, entonces el vector (rag fy) Se convierte en un vector unidad a lo largo del eje x y el vector (r,,, %,) 5€ transforma en un vector unidad a lo largo del eje y del sistema de coordenadas: te tm fr] fi nm Olfr, [=]0 (548) 0 yuyu re ty Of] fo Tn Fy OL hy {| (5.49) oo itr} Por ejemplo, la siguiente transformacién de s6lido-rigido primero rota un objeto un éngulo @ alrededor del punto de pivote (x,, y,) y después traslada el objeto. cos —sin@ x,(I-cos®)+y, sind +2, Tit,,1,)-R(a,,),.8)=| sin@ cos®_y,(1—cos®)—x, sin +1, (6.50) 0 0 1 ‘Aqui, los vectores unidad ortogonales en la submatriz superior izquierda son (cos0, -sin8) y (sin8, cos0) y% cos? ~sin@ 0) { cos@ 1 sin@ cos 0}-|-sina|=|0 (351) oH De manera similar, el vector unidad ( en el vector unidad (0,1) en la direceién. 18, c0s6) se convierte, por la matriz de transformacién precedente, Construccién de matrices de rotacion bidimensionales La propiedad ortogonal de ta rotacién de matrices resulta itil para construir la matriz cuando conocemos la orientacién final de un objeto, en lugar de la cantidad de rotaciones angulares necesarias para colocar el obje- to en aquella posicién. Esta informacién de orientacién podria determinarse por la alineaciin de ciertos ob- jetos en una escena o por posiciones de referencia entre sistemas de coordenadas. Por ejemplo, podriamos querer rotar un objeto para alinear su eje de simetria con la direccién de visualizacién (de la camara) 0 podri ‘mos querer rotar un objeto de tal forma que estuviera encima de otro objeto. La Figura 5.14 muestra un obj to que vaa ser alineado con la direccién de los vectores unidad w’ y v’. Asumiendo que la orientacién del objeto original, como se muestra en la Figura 5.14(a), se alinea con el eje de coordenadas, construimos la 54 Transformaciones compuestas bidimensionales 258 @ © FIGURA 5.14, La matriz de rotacién para hacer girar un objeto desde una posicién (a) a una posicién (b) puede construir- ‘se cont los valores de los vectores unidad de orientacién u’ y v' relativos ala orientacién original, 0 v0 180 q 10 wo Cenmide — so 100150200 x @ FIGURA 5.15. Un triéngulo (a) es transformado a la posicin (b) usando los cileulos dé la matriz compuesta del procedi- miento transfornverts2D. transformacidn deseada asignando los elementos de u’ a la primera fila de la matriz de rotacién y los elemen- tos de v’ a la segunda fila, En una aplicacién de modelado, por ejemplo, podemos usar este método para obte- ner la matriz de transformacién dentro de un sistema de coordenadas de objetos locales cuando sabemos cual ‘va.a ser su orientacién dentro de las coordenadas universales de la escena, Una transformacién similar es la ‘conversién de descripciones de objeto desde un sistema de coordenadas a otro, en las Secciones 5.8 y 5.15 se estudian estos métodos mas detalladamente, Ejemplo de programacién de matrices bidimensionales compuestas Un ejemplo de implementacién para una secuencia de transformaciones geométricas se da en el siguiente pro- ‘grama, Inicialmente, la matriz compuesta, compat rix, se construye como la matriz identidad. En este ejem- plo, se usa una concatenacién de izquierda a derecha para construir la matriz de transformacién compuesta y se invocan las rutinas de transformacién en el orden en el que son ejecutadas. A medida que cada una de las rutinas de transformacion basicas (cambio de escala, rotacién y traslacién) se invoca, se establece una matriz. para aquella transformacién y se concatena por la izquierda con la matriz compuesta. Una vez que todas las, transformaciones se han especificado, la transformacién compuesta se aplica para transformar un tridngulo. Primero se cambia la escala del tridngulo con respecto a la posicién de su centroide (Apéndice A) luego, se rota sobre su centroide y, por tltimo, se traslada. La Figura 5.15 muestra las posiciones original y final de un

También podría gustarte