• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Graficacion unidad ii_2_2_al_2_7
 

Graficacion unidad ii_2_2_al_2_7

on

  • 1,945 views

Espero les sirva

Espero les sirva

Statistics

Views

Total Views
1,945
Views on SlideShare
1,944
Embed Views
1

Actions

Likes
0
Downloads
36
Comments
0

1 Embed 1

http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Graficacion unidad ii_2_2_al_2_7 Graficacion unidad ii_2_2_al_2_7 Document Transcript

    • 2.2 Coordenadas homogéneas y representación matricial.Muchas aplicaciones gráficas implican secuencias de transformaciones geométricas. Porejemplo, una animación podría requerir que se traslade y gire un objeto en cada incremento delmovimiento. En 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 posicionesapropiadas. Aquí, consideramos cómo se pueden volver a formular las representaciones dematriz que analizamos en las secciones anteriores de modo que se puedan procesar de maneraeficiente esas secuencias de transformación. En la sección 5-1 vimos que es posible expresar cada una de las transformacionesbásicas en la forma de matriz general P = M1 · P + M2 (5-15) Con las posiciones de coordenadas P y P representadas como columnas de vector. Lamatriz M1, es una matriz de 2 por 2 que contiene factores de multiplicación y M1, es una matrizde columnas de dos elementos que contiene términos de traslación. Para la traslación, M1 es lamatriz de identidad. Para la rotación o la escalación, M2 contiene los términos de traslaciónasociados con el punto pivote o el punto fijo de escalación. Con el fin de producir una secuenciade transformaciones con estas ecuaciones, como escalación seguida por rotación y luegotraslación, debemos calcular las coordenadas transformadas un paso a La vez. Primero, seescalan las posiciones de coordenadas, después se giran estas coordenadas escaladas y, porúltimo, se trasladan las coordenadas giradas. Un planteamiento más eficiente combinaría lastransformaciones de manera que se obtienen las posiciones de coordenadas finalesdirectamente a partir de las coordenadas iniciales para eliminar así el cálculo de valores decoordenadas intermedias. Para poder efectuar esto, necesitamos formular de nuevo la ecuación5-15 con el propósito de eliminar la adición de la matriz asociada con los términos de traslaciónen M2. Podemos combinar los términos de multiplicación y de adición para transformacionesgeométricas bidimensionales en una sola representación de matriz al ampliar lasrepresentaciones de matriz de 2 por 2 a matrices de 3 por 3. Esto nos permite expresar todaslas ecuaciones de matriz como multiplicaciones de matriz, si también ampliamos lasrepresentaciones de matriz para las posiciones de coordenadas. Para expresar cualquiertransformación bidimensional como una multiplicación de matriz, representamos cada posiciónde coordenadas cartesianas (x, y) con la tres coordenadas homogéneas (xh, yh, h), donde 7
    • (5-16) Por tanto, una representación general de coordenadas homogéneas se puede expresartambién como (h·x, h·y, h). Para transformaciones geométricas bidimensionales, seleccionamosel parámetro homogéneo h como cualquier valor no cero. Así, existe un número finito derepresentaciones homogéneas equivalentes para cada punto de coordenadas (x, y). Una opciónconveniente consiste en sólo establecer h = 1. Entonces, se representa cada posiciónbidimensional con las coordenadas homogéneas (x, y, 1). Se requieren otros valores para elparámetro h, por ejemplo, en las formulaciones de matriz de transformaciones de vistatridimensionales. En matemáticas, se utiliza el término coordenadas homogéneas para referirse al efectode esta representación de ecuaciones cartesianas. Cuando se convierte un punto cartesiano(x,y) a una representación homogénea (xh, yh, h) las ecuaciones que contienen x y y, como f(x,y)= 0, se convierten en ecuaciones homogéneas en los tres parámetros xh, yh y h. Esto sólosignifica que si se sustituye cada uno de los tres parámetros con cualquier valor v veces eseparámetro, el valor v se puede factorizar fuera de las ecuaciones. Expresar posiciones en coordenadas homogéneas nos permite representar todas lasecuaciones de transformación geométrica nos permite representar todas las ecuaciones detransformación geométrica como multiplicaciones de matriz. Se representan las coordenadascon vectores de columna de tres elementos y las operaciones de transformación se expresancomo matrices de 3 por 3. Para la traslación, tenemos:(5-17)Que podemos expresar en la forma abreviadaP = T(tx, ty ) · P (5-18)Con T(tx, ty) como la matriz de traslación de 3 por 3 en la ecuación 5-17. Se obtiene el inversode la matriz de traslación al reemplazar los parámetros de traslación tx y ty con sus valoresnegativos -tx y -ty.De modo similar, ahora se expresan las ecuaciones de transformación de rotación con respectodel origen de las coordenadas como: 8
    • (5-19)O comoP = R(ө) · P (5-20)El operador de transformación de rotación R(ө) es la matriz de 3 por 3 en la ecuación 5-19 conel parámetro de rotación ө. Obtenemos la matriz de rotación inversa cuando se sustituye ө con -ө.Por último, ahora se expresa una transformación de escalación con respecto del origen de lascoordenadas como la multiplicación de matriz(5-21)oP = S(sx, sy) · P (5-22)Donde S(sx, sy) es la matriz de 3 por 3 en la ecuación 5-21 con los parámetros sx y sy. Al sustituir sus inversos multiplicativos (1/sx, 1/sy) se obtiene la matriz de esacalacióninversa.Las representaciones de matriz son métodos estándar para implementar transformaciones ensistemas de gráficas. En muchos sistemas, las funciones de rotación y escalación producentransformaciones con respecto del origen de las coordenadas, como en las ecuaciones 5-19 y5-21. Así se manejan las rotaciones y escalaciones con respecto de otras posiciones dereferencia como una sucesión de operaciones de transformación. Un planteamiento alternativoen un paquete de gráficas consiste en dar los parámetros en las funciones de transformaciónpara las coordenadas del punto fijo de esacalación y las coordenadas del punto pivote. Lasmatrices generales de rotación y escalación que incluyen el punto pivote o fijo se establecenentonces en forma directa sin necesidad de invocar una sucesión de funciones detransformación. 9
    • 2.3 Composición de transformaciones bidimensionales.Con las representaciones de matriz de la sección anterior, podemos establecer una matriz paracualquier secuencia de transformaciones con una matriz de transformación compuesta alcalcular el producto de la matriz de las transformaciones individuales. La creación de productosde matrices de transformación a menudo se conoce como concatenación o composición dematrices. Para la representación de la matriz de columnas de las posiciones de coordenadas,formamos transformaciones compuestas al multiplicar las matrices de derecha a izquierda. Esdecir, cada matriz de transformación premultiplica el producto de las matrices de transformaciónprevias.2.3.1 Translaciones, rotaciones y escalaciones bidimensionales.TraslacionesSi se aplican dos vectores de traslación sucesivos (tx1, ty1) y (tx2, ty2) en la posición decoordenadas P, la localización transformada final P se calcula como:P = T(tx2, ty2) · {T(tx1, ty1) · P}= {T(tx2, ty2) · T(tx1, ty1) } · P (5-23)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 agrupacionesasociativas. Asimismo, la matriz de transformación compuesta para esta secuencia detransformación es:(5-24) 10
    • oT (tx2,ty2) · T(tx1,ty1) = T(tx1 + tx2, ty1 + ty2) (5-25)que demuestra que dos transformaciones sucesivas son aditivas.RotacionesDos rotaciones sucesivas que se aplican en el punto P producen la posición transformada:P = R(ө2) · {R(ө1) · P}= {R(ө2) · R(ө1)} · P (5-26)Al multiplicar las dos matrices de rotación, podemos verificar que dos rotaciones sucesivas sonaditivas:R(ө2) · R(ө1) = R(ө2 + ө1) (5-27)de modo que es posible calcular las coordenadas giradas finales con la matriz de rotacióncompuesta como:P= R(ө2 + ө1) · P (5-28)Escalaciones 11
    • Concatenar matrices de transformación para dos operaciones de escalación sucesivas producela siguiente matriz de escalación compuesta:(5-29)oS(sx2,sy2) · S(sx1,sy1) = S(sx1 · sx2, sy1 · sy2) (5-30)La matriz resultante en este caso indica que las operaciones de escalación sucesivas sonmultiplicativas. Es decir, si debiéramos triplicar el tamaño de un objeto dos veces en unasucesión, el tamaño final sería de nueve veces el tamaño original.2.3.2 Rotación de punto de pivote general.Con un paquete de gráficas que solo ofrece una función de rotación para girar objetos conrespecto del origen de las coordenadas, podemos generar casi cualquier punto pivoteseleccionado (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. 3. Traslade el objeto de manera que se regrese el punto pivote a su posición original. 12
    • En la figura 5-9 se ilustra esta secuencia de transformación. La matriz de transformacióncompuesta para esta secuencia se obtiene con la concatenación. que se puede expresar en la forma:T(xr,yr) · R(ө) · T(-xr, -yr) = (xt, yr, ө) (5-32)donde T(-xr,-yr) = T-1(xr, yr). En general, es posible determinar una función de rotación paraaceptar parámetros para las coordenadas del punto pivote, así como el ángulo de rotación, ygenerar en forma automática la matriz de rotación de la ecuación 5-31.2.3.3 Escalación del punto fijo general.La figura 5-10 ilustra una secuencia de transformación para producir escalación con respecto deuna posición fija seleccionada (xf, yf) al utilizar una función de escalación que sólo puedeescalar en relación con el origen de las coordenadas. 1. Traslade el objeto de modo que el punto fijo conincida con el origen de las coordenadas. 2. Escale el objeto con respecto del origen de las coordenadas. 3. Utilice la traslación inversa del paso 1 para regresar el objeto a su posición original. La concatenación de las matrices para estas tres operaciones produce la matriz de escalación requerida: 13
    • (5- 33)T(xf, yf) · S(sx, sy) · T(-xf, -yf) = S(xf, yf, sx, sy) (5-34)Esta transformación se genera de manera automática en sistemas que ofrecen una función deescalación que acepta las coordenadas para el punto fijo.Direcciones de escalación generalLos parámetros sx y sy escalan objetos a l largo de las direcciones de x y de y. Podemos escalarun objeto en otras direcciones al girar el objeto para alinear las direcciones de escalacióndeseadas con los ejes de las coordenadas antes de aplicar la transformación de escalación.Suponga que queremos aplicar factores de escalación con valores que se especifican con losparámetros s1 y s2 en las direcciones se representan en la figura 5-11. Para llevar a cabo laescalación sin cambiar la orientación del objeto, primero realizamos una rotación de modo quelas direcciones de s1 y s2 coincidan con los ejes de x y de y, en forma respectiva. Entonces seaplica la transformación de escalación, seguida por una rotación opuesta para asegurar lospuntos a sus orientaciones originales. La matriz compuesta resultante del producto de estastres transformaciones es:R-1(ө) · S (s1, s2) · R (ө)(5-35) Como un ejemplo de esta transformación de escalación, convertimos un cuadro unitarioen un paralelogramo (figura 5-12) al extenderlo a lo largo de la diagonal de (0, 0) a (1, 1).Giramos la diagonal sobre el eje de las y y duplicamos su longitud con los parámetros detransformación ө = 450, s1 = 1 y s2 = 2.En la ecuación 5-35, suponemos que se debió realizar la escalación con respecto del origen.Podríamos realizar un paso más con esta operación de escalación y concatenar la matriz con 14
    • operadores de traslación, de modo que la matriz compuesta incluirá los parámetros para laespecificación de una posición fija de escalación.2.3.4 Propiedades de concatenaciónPor tanto, podemos evaluar los productos matriciales al utilizar una agrupación asociativa yasea 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, elproducto matricial A · B no es igual que B · A. Esto significa que si queremos trasladar y girar unobjeto, debemos tener cuidado sobre el sentido en que se evalúa la matriz compuesta (figura5-13). Para algunos casos especiales, como una secuencia de transformaciones todas de lamisma clase, la multiplicación de las matrices de transformación es conmutativa. Como porejemplo, se podrían realizar dos rotaciones sucesivas en cualquier sentido y la posición finalsería la misma. Esta propiedad conmutativa se aplica también para dos traslaciones sucesivaso dos escalaciones sucesivas. Otro par conmutativo de operaciones es la rotación y laescalación uniforme (sx,sy).2.4 Transformación ventana-área de vistaCuando se transfieren las descripciones del objeto al marco de referencia de vista,seleccionamos la extensión de la ventana en coordenadas de vista y los límites del:Puerto de vista en coordenadas normalizadas. Realizamos esto al utilizar una transformaciónque mantiene la misma localización relativa que los objetos en un espacio normalizado teníanen coordenadas de vista. Si una posición de coordenadas se localiza, por ejemplo, en el centrode la ventana de vista, se desplegará en el centro del puerto de vista. 15
    • La figura 6-5 ilustra el mapeo de ventana a puerto de vista. Un punto en la posición (xw, yw) enel puerto de vista asociado. Con objeto de conservar la misma posición relativa en el puerto devista que en la ventana, es necesario que:(6-2)Al despejar estas expresiones para la posición del puerto de vista (xv, yv), tenemos:xv = xvmín + (xw - xwmín ) sxyv = yvmín + (yw – ywmín ) sy (6-3)donde los factores de escalación son:(6-4)También es posible derivar las ecuaciones 6-3 con un conjunto de transformaciones queconvierte el área de la ventana en el área del puerto de vista. Se efectúa esta conversión con lasiguiente secuencia de transformaciones: 1. Se realiza una transformación de escalación al utilizar una posición de punto fijo de (xwmín, ywmín) que escala el área de la ventana al tamaño del puerto de vista. 2. Se traslada el área escalada de la ventana a la posición del puerto de vista. Si los factores de escalación son los mismos (sx = sy), se mantienen las proporcionesrelativas de los objetos. De otro modo, los objetos mundiales se dilatarán o contraerán ya seaen la dirección de x o de y al desplegarse en el dispositivo de salida. Es posible manejar de dosmaneras las cadenas de caracteres al efectuar su mapeo al puerto de vista. El mapeo mapeomás sencillo mantiene un tamaño de carácter constante, aunque el área del puerto de vistapuede aumentar o reducir con respecto de la ventana. Se podría emplear este método cuandoel texto se forma con fuentes de carácter estándar que no es posible cambiar. En sistemas quepermiten cambiar el tamaño de los caracteres, se pueden realizar las transformaciones deventanas de las definiciones de cadena del mismo modo que los demás primitivos.En el caso de los caracteres que se forman con segmentos de línea, se puede llevar acabo elmapeo al puerto de vista como una secuencia de transformaciones lineales. A partir de lascoordenadas normalizadas, las descripciones de los objetos se mapean en los diversosdispositivos de salida. Se puede activar cualquier cantidad de dispositivos en una aplicación 16
    • particular y realizar otra transformación de ventana a puerto de vista para cada dispositivo desalida. Se realiza este mapeo, llamado transformación de estación de trabajo, al seleccionarun área de la ventana en un espacio normalizado y un área del puerto de vista en lascoordenadas del dispositivo de despliegue. Con la transformación de estación de trabajo,logramos cierto control adicional en la disposición de las partes de una escena en dispositivosde salida individuales. Como se ilustra en la figura 6-6, podemos utilizar transformaciones deestación de trabajo para dividir una vista de modo que se puedan desplegar distintas partes delespacio normalizado en diferentes dispositivos de salida.2.5 Transformaciones de la composiciónUna transformación bidimensional general, que representa una combinación de traslaciones,rotaciones y escalaciones, se puede expresar como: Los cuatro elementos rsij son los términos multiplicativos de rotación-escalación en latransformación que implican sólo ángulos de rotación y factores de escalación. Los elementostrsx y trsy son los términos de traslación que contienen combinaciones de distancias detraslación, coordenadas de punto pivote y de punto fijo, así como de ángulos de rotación yparámetros de escalación. Por ejemplo, si se debe escalar y girar un objeto con respecto de lascoordenadas de su centroide (xc, yc) y después trasladarlo, los valores para los elementos de lamatriz de transformación compuesta son: T (tx, ty) · R (xc, yc, ө) · S (xc, yc, sx, sy) (5-38) Aunque la ecuación de matriz 5-37 requiere nueve multiplicaciones y seis adiciones, loscálculos explícitos para las coordenadas transformadas son 17
    • x = x · rsxx + y · rsxy + trsx, y = y · rsyx + y · rsyy + trsy (5-39) Así en realidad, sólo necesitamos efectuar cuatro multiplicaciones y cuatro adicionespara transformar las posiciones de coordenadas. Este es el número máximo de cálculos que serequieren para cualquier secuencia de transformación, una vez que se han concatenado lasmatrices individuales y evaluando los elementos de la matriz compuesta. Sin concatenación, seaplicarán las transformaciones individuales una a la vez y se podría reducir en formaconsiderable el número de cálculos. De esta manera, una implementación eficiente de lasoperaciones de transformación consiste en formular matrices de transformación, concatenarcualquier secuencia de transformación y calcular las coordenadas transformadas al utilizar laecuación 5-39. En sistemas paralelos, las multiplicaciones matriciales directas con la matriz detransformación compuesta de la ecuación 5-37 pueden ser igual de eficientes.Se puede expresar una matriz de transformación de cuerpo general que sólo implicatraslaciones y rotaciones en la forma:(5-40)donde los cuatro elementos rij son los términos de rotación multiplicativos y los elementos trx y tryson los términos de traslación. En ocasiones, un cambio de cuerpo rígido en la posición decoordenadas se denomina transformación de movimiento rígido. Todos los ángulos ydistancias entre las posiciones de coordenadas permanecen sin cambio al realizar latransformación. Además, la matriz 5-40 tiene la propiedad de que su submatriz superiorizquierda de 2 por 2 está en una matriz como un vector, entonces los dos vectores (rxx, rxy) y (ryx,ryy) forman un conjunto ortogonal de vectores unitarios: cada vector tiene longitud unitariar2xx + r2xy = r2yx + r2yy = 1 (5-41)y los vectores son perpendiculares (su producto de punto es 0):rxxryx + rxyryy = 0 (5-42) 18
    • Por tanto, si estos vectores unitarios se transforman por la submatriz de rotación, (rxx, rxy) seconvierte en un vector unitario a lo largo del eje de x, y (ryx, ryy) se transforma en un vectorunitario a lo largo del eje y del sistema de coordenadas:Como un ejemplo, la siguiente transformación de cuerpo rígido primero gira un objeto a travésde un ángulo ө con respecto del punto pivote (xr, yr) y luego lo traslada:T (tx, ty) · R (xr, yr, ө)(5-45)Aquí, los vectores ortogonales en la submatriz superior izquierda de 2 por 2 son (cos ө, -sinө) y(sin ө, cos ө), y(5-46) De modo similar, el vector unitario (sin ө, cos ө) se convierte por la matriz detransformación de la ecuación 5-46 en el vector unitario en la dirección de y. La propiedad ortogonal de las matrices de rotación es útil para realizar una matriz derotación cuando conocemos la orientación final de un objeto en lugar de la cantidad de rotaciónangular necesaria para colocar el objeto en esa posición. Las direcciones para la orientacióndeseada de un objeto se podrían determinar mediante la alineación de ciertos objetos en unaescena o mediante posiciones seleccionadas en la escena. La figura 5-14 ilustra un objeto quese debe alinear con los vectores de dirección de unidad u y y. Al suponer que la orientaciónoriginal del objeto, como se muestra en la figura 5-14(a), está alineada con los ejes de lascoordenadas, realizamos la transformación deseada al asignar los elementos de u al primerrenglón de la matriz de rotación y los elementos de v al segundo renglón. Este puede ser unmétodo conveniente para obtener la matriz de transformación para la rotación en un sistema decoordenadas local (u “objeto”) cuando conocemos los vectores de orientación finales. Unatransformación similar es la conversión de descripciones de objetos de un sistema decoordenadas a otro, y en los temas anteriores, consideramos cómo establecer transformacionespara efectuar esta conversión de coordenadas. Dado que los cálculos de la rotación requieren evaluaciones trigonométricas y variasmultiplicaciones para cada punto que se transforma, la eficiencia computacional puede tornarseen una consideración importante en las transformaciones de rotación. En animaciones y otrasaplicaciones que implican muchas transformaciones repetidas y ángulos de rotación pequeños, 19
    • podemos utilizar aproximaciones y cálculos repetitivos para reducir los cálculos en lasecuaciones de transformación compuesta. Cuando el ángulo de rotación es pequeño, sepueden sustituir las funciones trigonométricas con valores de aproximación con base en losprimeros términos de sus expansiones de series de potencia. Para ángulos bastante pequeños(de menos de l00), cos ө es de alrededor de 1y sen ө tiene un valor muy cercano al valor de өen radianes. Por ejemplo, si giramos en pasos angulares pequeños alrededor del origen,podemos establecer cos ө como 1 y reducir los cálculos de la transformación en cada paso ados multiplicaciones y dos adiciones para cada conjunto de coordenadas que se deben girar: x = x – y sen ө y = y sen ө + y donde se evalúa sen ө una vez para todos los pasos, si se supone que el ángulo de rotaciónno cambia. El error que implica esta aproximación en cada paso disminuye conforme el ángulode rotación es menor. Pero incluso con ángulos de rotación pequeños, el error acumulado sobremuchos pasos puede tornarse muy grande. Podemos controlar el error acumulado al estimar elerror en x y y en cada paso y volver a especificar las posiciones del objeto cuando laacumulación del error es muy grande.Las transformaciones compuestas a menudo implican cálculos de la matriz inversa. Porejemplo, las secuencias de transformación para las reflexiones y recortes, se pueden describircon componentes de rotación inversa. Como hemos señalado, se pueden generar formacionesgeométricas básicas. Se obtiene una matriz de traslación inversa al realizar una transposiciónde matriz (o cambiar el signo de los términos del seno). Estas operaciones son más sencillasque los cálculos de matriz inversa.En el procedimiento siguiente se da una implementación de transformaciones compuestas. Seinicializa la matriz M para la matriz de identidad. Conforme se especifica cada transformaciónindividual, ésta se concatena con la matriz de transformación total M. Cuando se hanespecificado todas las transformaciones, se aplica esta transformación compuesta en un objetodeterminado. Para este ejemplo, se escala y gira un polígono con respecto de un punto dereferencia determinado y luego se traslada el objeto. En la figura 5-15 se ilustran las posicionesoriginal y final del polígono que se transforma mediante esta secuencia. Program transformObject (input, output); 20
    • TypeMatrix3x3 = array [1.. 3, 1..3] of real;vartheMatrix : Matrix3x3;pts : wcPts2;refPt : wcPt2;Procedure matrix3x3SetIdenty (var m : Matrix3x3);varr, c : integer;beginfor r : = 1 to 3 dofor c : = 1 to 3 doif r = c then m [r,c] : = 1 else m [r,c] : = 0end;procedure matrix3x3PreMultiply (m : Matrix3x3; var t : Matrix3x3);varr, c : integer;tmp : Matrix3x3;beginfor r : = 1 to 3 dofor c : = 1 to 3 dotmp [r, c] : m [r, 1]* t[1, c] + m[r, 2]* t[2, c] + m[r, 3]* t[3, c];for r : = 1 to 3 dofor c : = 1 to 3 do 21
    • t[r, c] : = tmp[r, c]end;procedure scale (sx, sy : real; refPt : wcPt2);varm : Matrix3x3;beginmatrix3x3SetIdentity (m);m [1, 1] : = sx;m [1, 3] : = (1 – sx) * refPt.x;m [2, 2] : = sy;m [2, 3] : = (1 – y) * refPt.y;matrix3x3Premultiply (m, theMatrix);end;procedure rotate (a : real; refPt : wcPt2);varm : Matrix3x3;function toRadians (a : real) ; real;begin toRadians : = a * 3.1416159 / 180 end;beginmatrix3x3SetIdentity (m);a : = toRadians (a);m [1, 1] : = cos (a);m [1, 2] : = -sin (a);m [1, 3] : = refPt.x * (1- cos (a)) = refPt.y * sin (a); 22
    • m [2, 1] : = sin (a);m [2, 2] : = cos (a);m [2, 3] : = refPt.y * (1 – cos (a)) – refPt.x * sin (a);matrix3x3Premultiply (m, theMatrix)end;procedure translate (tx, ty : integer);varm : Matrix3x3;beginmatrix3x3SetIdentity (m);m [1, 3] : = tx;m[2, 3] : = ty;matrix3x3Premultiply (m, theMatrix)end;procedure transformPoints (npts : integer; var pts : wcPts2);vark : integer;tmp : real;beginfor k : = 1 to npts dowith pts [k] dobegintmp : = theMatrix3x3[1, 1] * x + theMatrix[1, 2] * y + theMatrix [1, 3];y : = theMatrix[2, 1] * x + theMatrix[2, 2] * y + theMatrix [2, 3]; 23
    • x : = tmp; end end; begin pts [1] . x : = 50.0; pts [1] . y : = 50.0; pts [2] . x : = 150.0; pts [2] . y : = 150.0; pts [3] . x : = 100.0; pts [3] . y : = 100.0; refPt.Matrix3x3SetIdentity (theMatrix); pFillArea (3, pts); scale (0.5, 0.5, refPt); rotate (90, refPt); translate (0, 75); transformPoints (3, pts); pFillArea (3, pts); end;2.6 Representación matricial de transformaciones tridimensionalesAsí como las transformaciones bidimensionales se pueden representar con matrices de 3 X 3usando coordenadas homogéneas, las transformaciones tridimensionales se pueden 24
    • representar con matrices de 4 X 4, siempre y cuando usemos representaciones de coordenadashomogéneas de los puntos en el espacio tridimensional. Así, en lugar de representar un puntocomo (x, y, z), lo hacemos como (x, y, z, w), donde dos de estos cuádruplos representan elmismo punto si uno es multiplicador distinto de cero del otro; no se permite el cuádruplo (0, 0, 0,0). Como sucede en el espacio bidimensional, la representación estándar de un punto (x, y, z,w) con w ≠ 0 se indica con (x/w, y/w, z/w, 1). La transformación de un punto a esta forma sedenomina homogeneización, igual que antes. Además, los puntos cuya coordenada w es cerose llaman puntos en el infinito. También existe una interpretación geométrica. Cada punto en elespacio tridimensional se representa con una línea que pasa por el origen en el espacio decuatro dimensiones, y las representaciones homogeneizadas de estos puntos forman unsubespacio tridimensional de un espacio de cuatro dimensiones definido por la ecuación w= 1. El sistema de coordenadas tridimensionales que se emplea en este tema es de manoderecha, como se ilustra en la figura 5. 16. Por convención, las rotaciones positivas en elsistema de mano derecha son tales que, al ver hacia un eje positivo desde el origen, unarotación de 900 en sentido contrario al giro del las manecillas del reloj transformará un ejepositivo en otro. La tabla siguiente se desprende de esta convención:Eje de rotación Dirección de la rotación positivaxyazyzaxzxay Estas direcciones positivas también se ilustran en la figura 5.16. Tenga presente que notodos los libros sobre graficación siguen esta convención. Usamos el sistema de mano derecha porque se trata de una convención matemáticaestándar, aunque en la graficación tridimensional es conveniente pensar en un sistema demano izquierda sobrepuesta a la pantalla (véase la fig. 5.17), ya que un sistema de manoizquierda da la interpretación natural de que los valores mayores de z se encuentran más lejosdel observador. Observe que en un sistema de mano izquierda, las rotaciones positivas son elsentido del giro de las manecillas del reloj cuando se observa desde un eje positivo hacia elorigen. Esta definición de las rotaciones positivas permite que las matrices de rotación que sepresentan en esta sección puedan usarse para sistemas de coordenadas de mano derecha oizquierda. La traslación en el espacio tridimensional es una simple extensión de la que se lleva acabo en el espacio bidimensional: 25
    • Es decir, T (dx, dy, dz) · [x y z 1]T = [x + dx y + dy z + dz 1]T.El escalamiento se extiende en forma similar:Al revisar se observa que S(sx, sy, sz) · [x y z 1]T = [sx · x sy · y sz · z 1]T.La rotación bidimensional de la ecuación (5. 26) es simplemente una rotación tridimensional conrespecto al eje z, que esEs fácil verificar esta observación: una rotación de 900 de [1 0 1]T, que es el vector unidad sobreel eje x, debe producir el vector unidad [0 1 0 1]T sobre el eje y. Al evaluar el producto.Se obtiene el resultado previsto de [0 1 0 1]T.La matriz de rotación del eje x esLa matriz de rotación del eje y esLas columnas (y filas) de la submatriz superior izquierda de 3 X 3 de Rz (ө), Rx (ө) y Ry (ө) sonvectores unidad mutuamente perpendiculares y el determinante de la submatriz es 1, lo quequiere decir que las tres matrices son ortogonales especiales, además, la submatriz superiorizquierda de 3 X 3 formada por una secuencia arbitraria de rotaciones es ortogonal especial.Recuerde que las transformaciones ortogonales conservan las distancias y los ángulos.Todas estas matrices de transformación tienen inversas. La inversa de T se obtiene cambiandoel signo de dx, dy, dz; la de S, reemplazando sx, sy y sz por sus recíprocos; y la inversa de cadauna de las tres matrices de rotación, negando el ángulo de rotación. 26
    • La inversa de una matriz ortogonal B es la transpuesta de B: B-1 = BT. De hecho, para tomar latranspuesta no es intercambiar los elementos del arreglo que contiene a la matriz: bastaintercambiar los índices de las filas y las columnas al acceder a la matriz. Observe que estemétodo para hallar la inversa es consistente con el resultado del cambio de signo de ө parahallar la inversa de Rx, Ry y Rz.Es posible multiplicar juntas cualquier cantidad de matrices de rotación, escalamiento ytraslación. El resultado siempre tiene la formaComo en el caso bidimensional, la submatriz superior izquierda de 3 X 3 R nos da la rotación yel escalamiento combinados, mientras que T nos da la traslación subsecuente. Podemosobtener mayor eficiencia computacional si efectuamos la transformación en forma explicita,comoDonde R y T son submatrices de la ecuación (5.43).Existen tres matrices de sesgo tridimensional correspondientes a las matrices de sesgobidimensional, el sesgo (x, y) esAl aplicar SHxy al punto [x y z 1] T se obtiene [x + shx · z y + shy · z 1]T. Los sesgos sobre los ejesx y y tienen forma similar.Hasta ahora hemos centrado nuestra atención en la transformación de puntos individuales. Latransformación de líneas, definidas éstas por dos puntos, se obtiene transformando los puntosextremos. Los planos, si están definidos por tres puntos, se pueden manejar de la misma forma,pero por lo general se definen con una ecuación del plano y los coeficientes de esta ecuacióndebe transformarse de manera distinta. También puede ser necesario transformar la normal alplano N = [A B C D]T. Entonces, un plano está definido por todos los puntos P tales que N · P =0, donde el símbolo “·” es el producto punto vectorial y P = [x y z 1] T. Este producto punto dalugar a la conocida ecuación del plano Ax + By + Cz + D = 0, que también se puede expresar 27
    • como el producto del vector columna P: NT · P = 0. Suponga ahora que transformamos todos lospuntos P en el plano con una matriz M: Para mantener NT · P = 0 para todos los puntostransformados, quisiéramos transformar N por una matriz Q (por determinarse) que de lugar a laecuación (Q · N) T · M = 0. A su vez, esta ecuación se puede reescribir como NT · QT · M · P = 0usando la identidad (Q · N)T = NT · QT. La ecuación será verdadera si QT · M es múltiplo de lamatriz identidad. Si el multiplicador es 1, esta situación nos lleva a QT = M-1 o Q = (M-1). Por lotanto, el vector columna N de coeficientes de un plano transformado por M se expresa comoN = (M-1) T · N (5. 46)Por lo general no es necesario que exista la matriz (M-1) T, ya que el determinante de M puedeser cero. Esta situación ocurriría si M incluye una proyección. Si sólo se transformará la normalal plano y si M sólo consiste en una composición de matrices de traslación, rotación yescalamiento uniforme, entonces se simplifican las matemáticas. La N de la ecuación (5. 46) sepuede simplificar a [A B C 0] T. (con un componente W igual a cero, un punto homogéneorepresenta un punto en el infinito, lo cual se puede considerar como una dirección).2.7 Composición de transformaciones tridimensionales Analizaremos la forma de componer matrices de transformación tridimensionales usandoun ejemplo que será de utilidad. El objetivo es transformar los segmentos de Línea dirigida P1 yP2 y P1 P3 en la fig. 5.18 de su posición inicial en la parte (a) a su posición final en La parte (b).De esta manera, el punto P1 se trasladará al origen, P1P2, quedará en el eje z positivo y P1P3quedará en la mitad del eje y positivo del plano (y, z). Las longitudes de las líneas no se veránafectadas por la transformación. Para trabajar con las transformadas primitivas, de nuevo dividimos un problema difícil envarios más sencillos. En este caso, la transformación deseada se puede realizar en cuatropasos: 1. Traslación de P1 al origen. 2. Rotación sobre el eje y para que P1P2 esté en el plano (y, z). 3. Rotación sobre el eje x para que P1P2 esté en el eje z. 4. Rotación sobre el eje z para que P1P3 esté en el plano (y, z). Paso 1: Traslación P1 al origen. La traslación es 28
    • (5.47) Al aplicar T a P1, P2 y P3 se obtiene(5.48)(5.49)(5.50) Paso 2: Rotación sobre eje y. En la figura 5.19 se muestra P1P2 después del paso 1, asícomo la proyección de P1P2 sobre el plano (x, z). El ángulo de rotación es – (90 - ө) = ө - 90.Entonces,(5.51) donde Al sustituir estos valores en la ecuación (5.42) se obtiene Como era de esperar, el componente x de P2. Es cero y el componente z es la longitudD1. Paso 3: Rotación sobre el eje x. En la figura 5. 20 se muestra P1P2 después del paso 2.El ángulo de rotación es Ф, para el cualdonde D2 = |P1 P2|, la longitud de la línea P1 P2. Sin embargo, la longitud de la línea P1 P2es igual a la longitud de la línea P1 P2, ya que las transformaciones de rotación traslaciónconservan la longitud; por lo tanto, El resultado de la rotación en el paso 3 esEs decir, P1P2 coincide ahora con el eje z positivo.Paso 4: Rotación sobre el eje z. En la figura 5. 21 se muestran P1P2 y P1P3 después del paso3, con P2 en el eje z y P3 en la posiciónCon la rotación a través del ángulo positivo α, concos α = y3 /D3, sen α = x3 /D3 D3 √ x32 + y32 (5.58) Con el paso 4 se obtiene el resultado que se presenta en la figura 5.18 (b). La matrizcompuestaRz (α) · Rx (Ф) · Ry (ө - 90) · T (-x1, -y1, -z1) = R · T. (5.59)es la transformación requerida, con R= Rz (α) · Rx (Ф) · Ry (ө - 90). Dejaremos que usted apliqueesta transformación a P1, P2 y P3 para verificar que P1 se transforme al origen, P2 se transforme 29
    • al al eje z positivo y que P3 se transforma a la mitad y positiva del plano (y, z). La segundamanera de obtener la matriz R es usar las propiedades de las matrices ortogonales.Rz = [r1x r2x r3x]T =(5. 61)Como Rz es el vector unidad sobre P1P2 que rotará hacia el eje z positivo,|P1P2|Además, el vector unidad Rx es perpendicular al plano de P1, P2 y P3 y rotará hacia el eje xpositivo, de manera que Rx debe ser el producto cruz normalizado de dos vectores en el planoFinalmente,Rx = [r1x, r2x, r3x]T = Rz X Rx (5. 63)rotará hacia el eje y positivo. La matriz compuesta se expresa comoDonde R y T son como en la ecuación (5.59). En la figura 5.22 se muestran los vectoresindividuales Rx, Ry y Rz. Considere otro ejemplo. En la figura 5.23 se muestra un aeroplanodefinido en el sistema de coordenadas xp, yp, zp y centrado en el origen. Queremos transformarel aeroplano para que apunte en la dirección indicada por el vector DDV (dirección de vuelo),esté centrado en p y no esté inclinado, como se muestra en la figura 5.24. La transformaciónnecesaria para llevar a cabo esta reorientación consiste en una rotación para apuntar elaeroplano en la dirección correcta, seguida por una traslación del origen a P. para hallar lamatriz de rotación sólo hay que determinar en qué dirección apuntan los ejes xp, yp y zp en lafigura 5.24, asegurarse de que las direcciones estén normalizadas y luego usar estasdirecciones como vectores columna en una matriz de rotación.El eje zp debe transformarse a la dirección DDV, mientras que el eje xp debe transformarse a unvector horizontal perpendicular a DDV, o sea, en la dirección y X DDV, el producto cruz de y yDDV. La dirección yp está indicada por zp X xp = DDV X (y X DDV), el producto cruz de zp y xp;por lo tanto, las tres columnas de la matriz de rotación son los vectores normalizados |y X DDV|,|DDV X (y X DDV)| y |DDV|: 30