Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Transformaciones Geometricas PDF
Transformaciones Geometricas PDF
geomtricas
Traslacin, rotacin y escalado
ngel Alejandro Juan Prez
Cristina Steegmann Pascual
PID_00151936
FUOC PID_00151936
Transformaciones geomtricas
ndice
Introduccin ............................................................................................
Objetivos ...................................................................................................
2. Traslacin en 2D ................................................................................ 10
2.1. Traslacin de un punto .................................................................. 10
2.2. Traslacin de objetos ...................................................................... 12
3. Rotacin en 2D.................................................................................... 14
3.1. Rotacin de un punto alrededor del origen
de coordenadas ............................................................................... 14
3.2. Rotacin de un objeto alrededor del origen de coordenadas ........ 17
3.3. Rotacin de un objeto alrededor de un punto
de rotacin genrico ....................................................................... 18
4. Escalado en 2D ................................................................................... 21
4.1. Escalado de un punto a partir del origen de coordenadas ............. 21
4.2. Escalado de un objeto a partir del origen
de coordenadas ............................................................................... 22
4.3. Escalado de un objeto a partir de un punto fijo genrico .............. 24
5. Notacin matricial eficiente .......................................................... 26
6. Composicin de transformaciones ............................................... 31
7. Transformaciones afines en 2D ..................................................... 34
8. Transformaciones geomtricas en 3D ......................................... 35
8.1. Traslacin de puntos y objetos ....................................................... 35
8.2. Rotacin de puntos y objetos ......................................................... 37
8.3. Escalado de puntos y objetos .......................................................... 40
Resumen .................................................................................................... 43
Ejercicios de autoevaluacin ............................................................... 44
Solucionario ............................................................................................. 46
FUOC PID_00151936
Glosario ..................................................................................................... 64
Bibliografa .............................................................................................. 64
Transformaciones geomtricas
FUOC PID_00151936
Introduccin
La traslacin, el escalado y la rotacin son transformaciones geomtricas usadas con frecuencia en el campo de la informtica grfica. Estas transformaciones juegan un papel fundamental en la construccin y edicin de todo tipo de
imgenes digitales. Por ello, no es de extraar que opciones como la rotacin
o el zoom, habituales en cualquier software CAD o de edicin de imgenes, se
basen en transformaciones geomtricas. Otras aplicaciones de estas herramientas matemticas estn relacionadas con la creacin de objetos animados,
ya sea en el campo de los vdeo-juegos (movimientos de cmara caractersticos de juegos como Half Life 2) o en el campo cientfico-tcnico, con objeto
de estudiar sus propiedades cinemticas y dinmicas.
Es importante notar que la transformacin de un punto representa el ncleo
central en cualquier transformacin geomtrica. Ello se debe a que el punto es
el elemento geomtrico bsico de cualquier objeto 2D y 3D. As, por ejemplo,
un segmento de lnea recta viene unvocamente determinado por sus puntos
inicial y final. Por su parte, tambin las curvas, superficies y slidos se pueden
representar (de forma exacta o aproximada, segn el caso) mediante una coleccin de puntos. De este modo, la transformacin de un conjunto de puntos
da como resultado la transformacin de una lnea, de una curva, de una superficie o, incluso, de un slido.
En este mdulo se explicar la relacin existente entre la teora de matrices y
las transformaciones geomtricas citadas, y se mostrar cmo es posible aplicar traslaciones, escalados y rotaciones a objetos en 2D y 3D, con solo realizar
productos de matrices.
Transformaciones geomtricas
FUOC PID_00151936
Objetivos
Los objetivos docentes que se pretenden lograr con este mdulo son los siguientes:
1. Entender los conceptos geomtricos de traslacin, escalado y rotacin, tanto en 2D como en 3D.
2. Comprender cmo la teora de matrices permite formalizar los conceptos
anteriores.
3. Aprender a realizar, de una forma eficaz, transformaciones geomtricas mediante operaciones con matrices.
4. Saber que la traslacin, la rotacin y el escalado son casos particulares de
transformaciones afines.
5. Descubrir cmo el software matemtico en general puede ser de utilidad
para automatizar los clculos matriciales y representar las transformaciones.
Transformaciones geomtricas
FUOC PID_00151936
Conocimientos previos
Transformaciones geomtricas
FUOC PID_00151936
1. Ejemplo introductorio
En informtica grfica aparece con frecuencia la necesidad de aplicar transformaciones geomtricas a un objeto determinado por sus vrtices.
As, por ejemplo, dado un poliedro en 3D definido por sus vrtices, podramos
estar interesados en hallar las nuevas coordenadas de dichos vrtices tras aplicar una combinacin de traslaciones, rotaciones y escalados (en cualquier orden), ya que a partir de estas nuevas coordenadas nos ser posible re-dibujar
el objeto en la pantalla.
Figura 1
En este mdulo mostraremos cmo la teora de matrices nos permite re-calcular con relativa facilidad y eficiencia las nuevas coordenadas de los vrtices
que definen el objeto y, por consiguiente, facilita la dinamizacin de objetos
en la pantalla (los amantes de los vdeo-juegos tienen, por tanto, mucho que
agradecer al lgebra lineal).
Transformaciones geomtricas
10
FUOC PID_00151936
Transformaciones geomtricas
2. Traslacin en 2D
As, para trasladar un punto P a la nueva posicin P', se debern aadir distancias de traslacin, tx y ty a las coordenadas iniciales, i.e.:
x' x tx
y' y ty
(1)
(2)
Observar que, usando notacin matricial, se puede expresar la traslacin de un punto como:
P' P T
t
x'
x
donde: P ' , P y T x .
y '
y
ty
(3)
FUOC PID_00151936
11
Transformaciones geomtricas
Figura 4
El ejemplo anterior tambin se
puede realizar usando el programa
Wiris, tal y como se muestra
en la figura 4.
FUOC PID_00151936
12
Transformaciones geomtricas
La traslacin es una transformacin que mueve objetos sin causarles deformacin alguna, puesto que cada punto del objeto es trasladado en la misma
direccin y a la misma distancia. Para trasladar un objeto, basta con aplicar
las ecuaciones (3) de traslacin a los puntos clave que lo definen. As, por
ejemplo, para trasladar un segmento rectilneo es suficiente con trasladar
los dos extremos que lo delimitan y, posteriormente, reconstruir el nuevo
segmento a partir de los dos nuevos extremos. Anlogamente, los polgonos pueden trasladarse sin ms que trasladar cada uno de sus vrtices y,
posteriormente, reconstruir el polgono a partir de los nuevos vrtices (figura 5).
Figura 5
Comentario
En la figura 5 se ha hecho
uso del software Mathematica
para definir una funcin,
traslacion2D, que permite trasladar polgonos definidos por
sus vrtices.
En este caso se ha aplicado una
traslacin de vector (10, 7)
a un objeto en forma de E.
FUOC PID_00151936
13
Transformaciones geomtricas
Figura 6
Comentario
En la figura 6, se muestra la
traslacin anterior usando esta
vez el programa Wiris.
Estrategias similares pueden emplearse para trasladar objetos con lados curvilneos: para trasladar una circunferencia, por ejemplo, es suficiente con aplicar
las ecuaciones de traslacin a su punto central y, a continuacin, reconstruirla
usando su radio.
En general, para trasladar cualquier objeto ser suficiente con identificar los puntos y parmetros geomtricos que lo definen, trasladar los
puntos identificados y, despus, reconstruir el objeto a partir de los
puntos trasladados y de los parmetros geomtricos.
FUOC PID_00151936
14
3. Rotacin en 2D
Transformaciones geomtricas
15
FUOC PID_00151936
Transformaciones geomtricas
(4)
y r sin
(5)
Al sustituir las expresiones (5) en las ecuaciones (4) se obtienen las ecuaciones
de rotacin de un punto alrededor del origen de coordenadas:
x' x cos y sin
(6)
(7)
cos sin
x'
x
donde: P ' , P , y R =
es la matriz de rota sin cos
y '
y
cin.
FUOC PID_00151936
16
Transformaciones geomtricas
Figura 10
Comentario
El ejemplo anterior tambin
se puede realizar usando el
programa Wiris, tal y como
se muestra en la figura 10.
FUOC PID_00151936
17
Transformaciones geomtricas
De forma anloga a lo que ocurra con las traslaciones, las rotaciones tambin
son transformaciones que mueven los objetos sin deformarlos, dado que cada
uno de los puntos es rotado en un mismo ngulo .
As, por ejemplo, un segmento rectilneo se puede rotar sin ms que aplicar las
ecuaciones de rotacin a cada uno de sus dos extremos para, posteriormente,
reconstruir el segmento a partir de los puntos transformados. Para rotar un polgono, se pueden aplicar las ecuaciones de rotacin a los vrtices que lo definen y usar los puntos transformados para reconstruir el polgono (figuras 11 y
12). De forma similar, una elipse se puede rotar sin ms que rotar sus dos semiejes y proceder a su reconstruccin a partir de los mismos.
Figura 11
Comentario
En la figura 11 se ha hecho
uso del software Mathematica
para definir una funcin,
rotacion2D, que permite rotar
polgonos, definidos por sus
vrtices, alrededor del origen
de coordenadas.
En este caso se ha aplicado una
rotacin de 90 a un objeto.
FUOC PID_00151936
18
Transformaciones geomtricas
Figura 12
Comentario
En la figura 12, se muestra
la rotacin anterior usando
esta vez el programa Wiris.
Cuando se desee utilizar un punto de rotacin Pr distinto al origen de coordenadas, se puede hacer lo siguiente (figuras 13 y 14):
1) Aplicar una traslacin al objeto y al punto de rotacin de forma que este
ltimo coincida con el origen de coordenadas.
2) Rotar el objeto alrededor del origen de coordenadas.
3) Deshacer la traslacin inicial, de forma que el punto de rotacin vuelva a
su posicin original.
En la figura 13 se ilustra con un ejemplo estos tres pasos del procedimiento genrico.
FUOC PID_00151936
Figura 13
19
Transformaciones geomtricas
FUOC PID_00151936
20
Transformaciones geomtricas
Figura 14
Comentario
En la figura 14, se muestra
la rotacin anterior usando
esta vez el programa Wiris.
21
FUOC PID_00151936
Transformaciones geomtricas
4. Escalado en 2D
Inicialmente, se supondr que el punto fijo es el origen de coordenadas, es decir, el punto (0, 0). En la operacin de escalado, el nuevo punto P' se obtiene
multiplicando las coordenadas del punto inicial P por los llamados factores
de escala sx y sy:
x' = x sx
y' = y sy
(8)
0
es la matriz de escalado.
sy
(9)
FUOC PID_00151936
22
Transformaciones geomtricas
Los factores de escala, sx y sy, pueden tomar cualquier valor positivo. Factores
de escala superiores a 1 producen un alejamiento, en la direccin horizontal o
vertical segn el factor implicado, de P con respecto al origen de coordenadas.
Por el contrario, factores de escala inferiores a 1 producen un acercamiento,
en la direccin horizontal o vertical segn el caso, de P con respecto al origen.
Obviamente, factores de escala unitarios no modifican la posicin, sobre el eje
correspondiente, del punto P.
Ejemplo 3. Escalado de un punto en 2D
Figura 16
Comentario
En este ejemplo (figura 16)
se hace uso del programa
Mathcad para representar el
escalado del punto (2.2, 1.9) a
partir del origen de coordenadas. Se aplican dos escalados,
uno con factores de escala superiores a la unidad (que aleja
el punto del origen), y el otro
con factores de escala inferiores a la unidad (que acerca
el punto al origen).
A diferencia de lo que ocurra con las traslaciones y las rotaciones, una transformacin de escalado s que deformar el objeto, puesto que altera el tamao del mismo (excepto, obviamente, en el caso trivial en que ambos factores
de escala sean unitarios). Dicha deformacin puede ser uniforme, cuando sx
sy, o no uniforme, cuando sx sy. En el primero de los casos, aunque el tamao del objeto es alterado, se mantendrn las proporciones relativas del
mismo.
Al aplicar las ecuaciones (9) de escalado sobre los puntos que definen un objeto, no slo se modifica el tamao del mismo, sino que tambin se altera su
posicin con respecto al punto fijo (figura 17).
FUOC PID_00151936
23
Transformaciones geomtricas
Figura 17
Comentario
En la figura 17 se ha hecho
uso del software Mathematica
para definir una funcin,
escala2D, que permite escalar
polgonos, definidos por
sus vrtices, a partir del origen
de coordenadas.
En este caso se ha aplicado
un escalado de factores 1.5
(horizontal) y 3.5 (vertical).
FUOC PID_00151936
24
Cuando se desee escalar un objeto utilizando para ello un punto fijo P0 distinto del origen de coordenadas, se puede hacer lo siguiente (figura 18):
1) Aplicar una traslacin al objeto y al punto fijo de forma que este ltimo coincida con el origen de coordenadas.
2) Escalar el objeto a partir del origen de coordenadas.
3) Deshacer la traslacin inicial, de forma que el punto fijo vuelva a su posicin original.
Figura 18
Transformaciones geomtricas
FUOC PID_00151936
25
Transformaciones geomtricas
26
FUOC PID_00151936
Transformaciones geomtricas
Las aplicaciones grficas suelen hacer uso de transformaciones geomtricas sucesivas o encadenadas. As por ejemplo, para realizar una animacin puede resultar necesario a fin de lograr una sensacin de movimiento, trasladar y
rotar un objeto a cada incremento temporal. Por su parte, en el tratamiento de
imgenes es habitual realizar traslaciones, rotaciones y escalados de forma secuencial sobre la misma imagen. En ambos casos, resultar fundamental utilizar una notacin matricial que permita concatenar de forma eficiente una
sucesin de transformaciones.
De las ecuaciones (3), (7) y (9) se deduce que las transformaciones discutidas
(traslacin, rotacin y escalado) presentan expresiones de la forma general:
P M1 P M2,
(10)
x'
x
donde: P ' , P , M1 es una matriz 22 compuesta por factores muly
'
y
1 0
tiplicativos (M1 ser la matriz identidad, I2
, en el caso de traslacio0
1
0
el vector nulo, 0 , en el caso de rotaciones y escalados).
0
Pero la expresin (10) tiene un gran inconveniente: usando dicha notacin
matricial, cuando se trate de producir una secuencia de transformaciones, resultar necesario calcular las coordenadas transformadas en cada paso de la secuencia. En efecto: supongamos, por ejemplo, que sobre un punto se desea
aplicar primero un escalado, luego una rotacin y, finalmente, una traslacin.
En tal caso, ser necesario realizar los siguientes pasos:
1) Aplicar las ecuaciones de escalado sobre las coordenadas iniciales del punto, P.
2) Sobre las nuevas coordenadas, P', obtenidas en el paso anterior, aplicar rotacin para obtener las coordenadas P''.
3) Sobre las coordenadas P'' aplicar traslacin a fin de obtener las coordenadas
finales P'''.
Una forma ms eficiente (desde el punto de vista computacional) de llevar a
cabo la secuencia anterior de transformaciones consiste en combinarlas de forma que las coordenadas finales P''' se obtengan directamente de las iniciales P,
eliminando as el clculo de coordenadas intermedias.
27
FUOC PID_00151936
Transformaciones geomtricas
(10)
(11)
La inversa de la matriz de traslacin se puede obtener reemplazando los parmetros tx y ty por sus opuestos tx y ty.
Ejemplo 4. Traslacin de un objeto en 2D
Figura 19
Comentario
En este ejemplo (figura 19)
se hace uso del programa
Mathcad para representar la
traslacin de un polgono O1,
definido por sus vrtices, aplicando un vector de traslacin
de componentes (2.5, 2), con
lo que el resultado ser el nuevo polgono O2.
28
FUOC PID_00151936
Transformaciones geomtricas
Figura 20
Comentario
El ejemplo anterior tambin
se puede realizar usando el
programa Wiris, tal y como
se muestra en la figura 20.
En el caso de la rotacin de un punto alrededor del origen de coordenadas, la expresin (7) se puede rescribir como:
x ' cos sin 0 x
y ' sin cos 0 y
1 0
0
1 1
(12)
P' = R() P
(13)
FUOC PID_00151936
29
Transformaciones geomtricas
Figura 22
Comentario
El ejemplo anterior tambin
se puede realizar usando el
programa Wiris, tal y como
se muestra en la figura 22.
30
FUOC PID_00151936
Transformaciones geomtricas
x ' sx
y ' 0
1 0
0
sy
0
0 x
0 y
1 1
(14)
(15)
31
FUOC PID_00151936
6. Composicin de transformaciones
1 0 t x 2 1 0 t x1 1 0 t x1 t x 2
0 1 t y 2 0 1 t y1 0 1 t y1 t y 2
0 0 1 0 0 1 0 0
1
Es decir:
En el caso de rotaciones alrededor del origen de coordenadas, si se consideran dos rotaciones consecutivas de ngulos respectivos 1 y 2, se pueden calcular (aplicando asociatividad) las coordenadas finales como:
Transformaciones geomtricas
32
FUOC PID_00151936
Transformaciones geomtricas
cos 2
sin 2
0
sin 2
cos 2
0
0 cos 1
0 sin 1
1 0
Es decir:
sx 2
0
0
0
sy 2
0
0 sx1
0 0
1 0
0
sy 1
0
0 sx 2 sx1
0 0
1 0
0
sy 2 sy 1
0
O, en otras palabras:
0
1
FUOC PID_00151936
33
Transformaciones geomtricas
Figura 25
Comentario
El ejemplo anterior tambin
se puede realizar usando el
programa Wiris, tal y como
se muestra en la figura 25.
34
FUOC PID_00151936
Transformaciones geomtricas
7. Transformaciones afines en 2D
(15)
Observar que, en una transformacin afn, cada una de las coordenadas transformadas x' e y' es una funcin lineal de las coordenadas originales x e y, as
como de una serie de parmetros aij y bk.
La traslacin, la rotacin y el escalado son ejemplos de transformaciones afines en 2D. Las transformaciones afines tienen la interesante propiedad de que
las lneas paralelas son transformadas en lneas paralelas y un nmero finito
de puntos se transforma siempre en un nmero finito de puntos.
35
FUOC PID_00151936
Transformaciones geomtricas
8. Transformaciones geomtricas en 3D
La teora expuesta para las transformaciones geomtricas en 2D se puede extender a 3D mediante la incorporacin de la coordenada espacial z. En el caso
de la traslacin, el vector de traslacin tendr ahora tres componentes en lugar
de dos. En el caso del escalado, deberemos considerar tres factores de escala
(uno por cada eje de coordenadas). Finalmente, el concepto de rotacin tambin se puede generalizar a 3D, si bien ste presenta algunos aspectos tcnicos
que requieren de especial atencin: en 2D las rotaciones se producen slo en
el plano xy (i.e., el eje de rotacin siempre es paralelo al eje z); por su parte, en
3D las rotaciones se podrn efectuar tomando como eje de rotacin cualquier
recta del espacio tridimensional (no necesariamente paralela a alguno de los
tres ejes coordenados).
Las ecuaciones (10) y (11), referentes a la traslacin de un punto en 2D, se pueden generalizar para el caso tridimensional como sigue:
x' 1
y ' 0
z' 0
1 0
0 0 tx x
1 0 ty y
0 1 tz z
0 0 1 1
(16)
(17)
36
FUOC PID_00151936
Transformaciones geomtricas
y' y ty
z' z tz
(18)
La matriz inversa de la matriz de traslacin T(tx, ty, tz) se obtiene sin ms que
sustituir las componentes del vector de traslacin por otras de igual valor absoluto pero de signo contrario.
De forma anloga a lo que ocurra en 2D, la clave para trasladar un objeto en
3D consiste en aplicar las ecuaciones de traslacin a cada uno de los puntos
que caracterizan el objeto para, posteriormente, reconstruir el objeto a partir
de los puntos trasladados y de sus propiedades geomtricas (figura 27).
En la figura 27 se ha hecho uso del software Mathematica para definir una
funcin, traslacion3D, que permite trasladar poliedros definidos por sus caras. En este caso se ha aplicado una traslacin de vector (0, 2,1) a una pirmide.
FUOC PID_00151936
37
Figura 27
Cuando se trata de rotar un punto y, en general, cualquier objeto en 3D, resulta necesario especificar tanto el ngulo como el eje de rotacin er. A diferencia de lo que ocurra con las rotaciones en 2D, que se limitaban al plano xy
(es decir, el eje de rotacin era siempre una recta paralela al eje z, la cual cortaba al plano xy en el llamado punto de rotacin), una rotacin en 3D puede
usar como eje de rotacin cualquier recta del espacio tridimensional, la cual
puede o no ser paralela a alguno de los ejes de coordenadas (figura 28).
Transformaciones geomtricas
38
FUOC PID_00151936
Transformaciones geomtricas
Por lo que al ngulo de rotacin se refiere, siempre que ste sea positivo indicar rotaciones en el sentido contrario al que siguen las agujas del reloj (se supondr que siempre se contempla el objeto desde el correspondiente semieje
positivo). Por el contrario, valores negativos del ngulo de rotacin indican
movimientos en el sentido de las agujas del reloj.
Las ecuaciones (12) y (13), referentes a la rotacin de un punto en 2D alrededor del origen de coordenadas (i.e., usando como eje de rotacin el eje z), se
pueden generalizar para el caso tridimensional como sigue:
0 0 x
0 0 y
1 0 z
0 11
(18)
(19)
Como resulta evidente, la expresin matricial anterior es equivalente al siguiente sistema de ecuaciones:
x' x cos y sin
z' z
(20)
Por simetra, resulta sencillo comprobar que las expresiones matriciales asociadas a la rotacin de un punto P alrededor de los ejes x e y sern, respectivamente:
Nota
Otra forma de dar el ngulo
en 3D es considerar el sentido
contrario al del giro de avance
de un sacacorchos (para
diestros).
39
FUOC PID_00151936
0
0
x' 1
y
'
0
cos
sin
z ' 0 sin cos
0
0
1 0
x ' cos
y ' 0
z ' sin
1 0
Transformaciones geomtricas
0 x
0 y
0 z
11
(21)
0 sin 0 x
1
0
0 y
0 cos 0 z
0
0
11
(22)
40
FUOC PID_00151936
Transformaciones geomtricas
Finalmente, aadir que cuando lo que se desee sea aplicar una rotacin de ngulo
a un objeto alrededor de un eje cualquiera er (no necesariamente paralelo a ninguno de los ejes coordenados), ser suficiente con usar la siguiente metodologa:
1) Aplicar una traslacin de vector (tx, ty, tz) al objeto y a er de forma que este
das, para lo cual pueden necesitarse dos rotaciones de ngulos y , respectivamente, (tanto al objeto como a er) para primero llevar e, sobre un plano
coordenado (por ejemplo el yz rotando alrededor del eje y) y despus sobre el eje
coordenado elegido (por ejemplo el z rotando alrededor del eje x).
3) Aplicar al objeto la rotacin de ngulo alrededor de la nueva posicin del
eje de rotacin er' (observar que er' ser alguno de los ejes coordenados).
4) Deshacer la rotacin de ngulo (i.e.: aplicar una rotacin de ngulo ).
5) Deshacer la traslacin inicial (i.e.: aplicar una traslacin de vector (
t x, t y, tz)).
x ' sx
y ' 0
z ' 0
1 0
sy
0
0
sz
0 x
0 y
0 z
1 1
(23)
(24)
y' = y sy
z' = z sz
(25)
FUOC PID_00151936
41
Transformaciones geomtricas
La inversa de la matriz de escalado S(sx, sy, sz) se obtiene solo con sustituir las
componentes del vector de escalado por sus respectivos inversos.
Nuevamente, la clave para escalar un objeto en 3D consiste en aplicar las ecuaciones de escalado a cada uno de los puntos que caracterizan el objeto para,
posteriormente, reconstruir el objeto a partir de los nuevos puntos (figura 31).
Observar que al escalar un objeto en 3D ste no slo cambiar de tamao, sino
tambin de posicin con respecto al punto fijo. Adems, el objeto sufrir deformaciones (variarn sus proporciones relativas) a menos que el escalado
aplicado sea uniforme (i.e.: a menos que sx sy sz).
Figura 31
Comentario
En la figura 31 se ha hecho
uso del software Mathematica
para definir una funcin,
escalado3D, que permite
escalar, a partir del origen
de coordenadas, poliedros definidos por sus caras.
En este caso se ha aplicado un
escalado de vector (1.5, 2, 2)
a una pirmide.
FUOC PID_00151936
42
Transformaciones geomtricas
Por ltimo, cabe recordar que de forma anloga a lo explicado para el caso
2D, cuando se desee escalar un objeto a partir de un punto fijo genrico (no
necesariamente el origen de coordenadas), ser suficiente con seguir la siguiente metodologa:
1) Aplicar una traslacin al objeto y al punto fijo de modo que este ltimo co-
nadas.
3) Deshacer la traslacin inicial.
Ejemplo 8. Composicin de transformaciones en 3D
Figura 32
Comentario
En este ejemplo (figura 32)
se hace uso del programa
Mathcad para llevar a cabo
una composicin de tranformaciones en 3D y mostrar
el resultado grfico.
FUOC PID_00151936
43
Resumen
Transformaciones geomtricas
FUOC PID_00151936
44
Ejercicios de autoevaluacin
1. Considerad el polgono definido por los siguientes vrtices: (1, 1), (3, 2),
(3, 5) y (1, 4). Calculad las nuevas coordenadas del polgono tras haber aplicado sobre el mismo las transformaciones que se indican a continuacin (en
el orden establecido):
Una rotacin de 90 alrededor del punto (2, 3).
Un escalado, a partir del origen, con factores de escala 3 (eje x) y 2 (eje y).
2. Repetid el ejercicio anterior pero, esta vez, invirtiendo el orden de las transfor-
(5, 2), (3, 2), (3, 4), (5, 4), (5, 5) y (2, 5). Calculad las nuevas coordenadas del
polgono tras haber aplicado sobre el mismo las transformaciones que se indican a continuacin (en el orden establecido):
Una rotacin de 180 grados alrededor del punto (0, 1).
Un escalado, a partir de punto (1, 1), con factores de escala 2 (eje x) y 3 del
(eje y).
4. Considerad el poliedro definido por los vrtices: (0, 0, 2). (1, 1, 0), (1, 1, 0),
(1, 1, 0), (1, 1, 0). Calculad sus nuevas coordenadas tras aplicarle cada una de
las siguientes transformaciones:
a) Una traslacin de vector (2, 1, 3)
b) Una rotacin de 180 alrededor del eje x
c) Una rotacin de 180 alrededor del eje y
d) Una rotacin de 180 alrededor del eje z
e) Un escalado uniforme de factor 2 a partir del origen
f) Un escalado uniforme de factor 2 a partir del punto (1, 2, 1)
escalado uniforme a partir del origen, de manera que su rea sea cuatro veces
mayor.
b) Calculad las coordenadas del triangulo T despus de aplicar un giro de n-
nalmente, las coordenadas de los vrtices del tringulo han quedado A3 = (1, 0)
B3 = (2, 0) y C3 = (2, 1). Determinad la matriz que transforma los vrtices
Transformaciones geomtricas
45
FUOC PID_00151936
Aplicamos a P una traslacin T de vector (7, 9), despus una rotacin R de ngulo
45 y centro el punto (6, 5). Se pide:
a) Escribid las matrices de la traslacin T, la rotacin R y la composicin R T
b) Calculad las coordenadas de P tras aplicarle la composicin R T
c) Utilizad la Wiris para comprobar los resultados obtenidos en el apartado b)
(2, 2). Hallad el punto de rotacin sobre el cual se hace la transformacin. Utilizad coordenadas homogneas.
8. Considerad el polgono definido por los vrtices: (1, 1), (3, 1), (3, 4), y (0, 3).
Se pide:
a) Calculad las nuevas coordenadas del polgono despus de haberle aplicado
Transformaciones geomtricas
46
FUOC PID_00151936
Solucionario
Ejercicios de autoevaluacin
cos() sin() 0
R sin() cos() 0
0
0
1
donde:
, i.e.:
2
0 1 0
R 1 0 0
0 0 1
Ahora bien, dado que se trata de una rotacin genrica (no sobre el origen),
ser necesario: a) aplicar una traslacin antes de la rotacin (la traslacin que
desplace el punto de rotacin hasta el origen), y b) tras aplicar la rotacin, deshacer la traslacin.
Puesto que el punto de rotacin es el (2, 3), la matriz de traslacin ser:
1 0 2
T 0 1 3
0 0 1
A T1 R T
0 1 5
A 1 0 1
0 0 1
3 0 0
S 0 2 0
0 0 1
Por tanto, la matriz resultante de aplicar la rotacin ms el escalado (en ese orden) ser:
0 3 15
S A 2 0 2
0 0 1
Transformaciones geomtricas
47
FUOC PID_00151936
(observar que el orden de las matrices es el inverso al orden de las transformaciones asociadas, siendo la situada en el extremo derecho la primera en aplicarse y la situada en el extremo izquierdo la ltima).
Al multiplicar dicha matriz por cada uno de los vectores columna que contienen las coordenadas del polgono original, obtenemos las coordenadas del polgono resultante:
1 12
S A 1 4
1 1
3 9
S A 2 8
1 1
3 0
S A 5 8
1 1
1 3
S A 4 4
1 1
En la figura 33, generada con Mathcad, se muestra el polgono original y el polgono resultante tras la doble transformacin:
Figura 33
2. Las matrices de rotacin y escalado son las mismas que en el ejercicio an-
terior. Lo que cambia ahora es el orden en que dichas matrices se aplican. Ahora, la matriz resultante de aplicar el escalado ms la rotacin (en ese orden)
ser:
0 2 5
A S 3 0 1
0 0 1
Transformaciones geomtricas
48
FUOC PID_00151936
1 3
A S 1 4
1 1
3 1
A S 2 10
1 1
3 5
A S 5 10
1 1
1 3
A S 4 4
1 1
Queda claro, pues, que el orden en que se aplique cada transformacin es relevante para el resultado final (o, visto de otra forma, el producto de matrices
no es conmutativo).
La figura 34, obtenida con Mathcad, nos permite comprobarlo visualmente:
Figura 34
cos() sin() 0
R sin() cos() 0
0
0
1
donde: , i.e.:
1 0 0
R 1 1 0
0 0 1
Transformaciones geomtricas
49
FUOC PID_00151936
Ahora bien, dado que se trata de una rotacin genrica (no sobre el origen),
ser necesario: a) aplicar una traslacin antes de la rotacin (la traslacin que
desplace el punto de rotacin hasta el origen), y b) tras aplicar la rotacin, deshacer la traslacin.
Puesto que el punto de rotacin es el (0, 1), la matriz de traslacin ser:
1 0 0
T 0 1 1
0 0 1
T1
RT
1 0 0
A 0 1 2
0 0 1
El siguiente paso es determinar la matriz de escalado. Si se tratase de un escalado a partir del origen, la matriz sera:
2 0 0
S 0 3 0
0 0 1
U 0 1 1
0 0 1
EU
SU
2 0 1
E 0 3 2
0 0 1
Por tanto, la matriz resultante de aplicar la rotacin ms el escalado (en ese orden) ser:
2 0 1
E A 0 3 4
0 0 1
Transformaciones geomtricas
50
FUOC PID_00151936
Transformaciones geomtricas
Al multiplicar dicha matriz por cada uno de los vectores columna que contienen las coordenadas del polgono original, obtenemos las coordenadas del polgono resultante:
2 5
E A 1 1 E A
1 1
5 11
1 1 E A
1 1
5 11
2 2
1 1
3 7
E A 2 2
1 1
3 7
E A 4 8 E A
1 1
5 11
4 8 E A
1 1
5 11
5 8
1 1
2 5
E A 5 11
1 1
En la figura 35, generada con Mathcad, se muestra el polgono original y el polgono resultante tras la doble transformacin:
Figura 35
4.
a) La matriz con las coordenadas de los vrtices y la matriz de traslacin sern,
respectivamente:
0 1 1
0 1 1
O
2 0 0
1 1 1
1 1
1 1
0 0
1 1
0
T
0
3
2 1
1 2 2
OT
5 3
3
1
1
1
3 1
0 0
3 3
1 1
0 0 2
1 0 1
0 1 3
0 0 1
51
FUOC PID_00151936
Transformaciones geomtricas
Figura 36
0
0
1
0
cos(
sin(
)
R
0 sin() cos()
0
0
0
0
0
1 0 0
0 1 0
R
0 0 1
0 0 0
0 1
RO
2 0
1 1
Figura 37
1 1 1
1 1 1
0 0 0
1 1 1
0
0
52
FUOC PID_00151936
Transformaciones geomtricas
cos()
0
R
sin()
0 sin() 0
1
0
0
0 cos() 0
0
0
1
0
R
0
0
0 1 0
0 0 1
0
1
0
0
0 1 1 1
0 1 1 1
RO
2 0 0 0
1 1 1 1
1
0
Figura 38
cos() sin()
sin() cos()
R
0
0
0
0
0 0
0 0
1 0
0 1
1 0
0 1
R
0 0
0 0
0
RO
2
1 1 1 1
1 1 1 1
0 0 0 0
1 1 1 1
0 0
0 0
1 0
0 1
53
FUOC PID_00151936
Figura 39
0
S
0
0 0 0
2 0 0
0 2 0
0 0 1
0 2 2
SO
4 0
0
1
1
1
Figura 40
2 2
2 2
0 0
1 1
Transformaciones geomtricas
54
FUOC PID_00151936
0
S
0
0 0 0
2 0 0
0 2 0
0 0 1
0
T
0
0 0 1
1 0 2
0 1 1
0 0 1
As que la matriz resultante de aplicar traslacin-escalado-traslacin y las nuevas coordenadas del objeto sern, respectivamente:
2
0
T1 S T O
0
0
Figura 41
0 0 1
2 0 2
0 2 1
0 0 1
1 3 1 1 3
2 4 4 0 0
T1 S T O
3 1 1 1 1
1 1 1 1 1
Transformaciones geomtricas
55
FUOC PID_00151936
5.
a) El rea del triangulo inicial se calcula fcilmente, comprobando que se trata
k 0 0
0 k 0
0 0 1
k 0 0 1 k
0 k 0 1 k
0 0 1 1 1
k 0 0 2 2k
0 k 01 k
0 0 11 1
k 0 0 2 2k
0 k 0 2 2k
0 0 11 1
De manera que el triangulo que nos resulta, despus de aplicar el escalado, es:
T de vrtice A (k, k), B (2k, k) i C (2k, 2k).
El rea del triangulo final la podemos calcular, usando que T es un triangulo
rectngulo donde el ngulo recto est situado en A y las aristas de T en A miden k.
Por tanto, el rea de T es (k k)/2.
Finalmente, el enunciado nos dice que el rea de T ha de ser cuatro veces la
de T, es decir, 2. Por tanto, ha de verificarse que:
(k k)/2 2
De manera que, resolviendo la ecuacin, tenemos que k 2.
b) Para hacer un giro sobre un punto que no sea el origen, procederemos tal
Transformaciones geomtricas
56
FUOC PID_00151936
1 0 1
T 0 1 0
0 0 1
cos() sin() 0
sin() cos() 0
0
0
1
y como el ngulo de nuestro giro es /2, tenemos que la matriz de rotacin es:
0 1 0
R 1 0 0
0 0 1
1 0 1
T 1 0 1 0
0 0 1
1 0 1 0 1 0 1 0 1 0 1 1
A 0 1 0 1 0 0 0 1 0 1 0 1
0 0 1 0 0 1 0 0 1 0 0 1
0 1 1 1 2
1 0 1 1 2
0 0 1 1 1
Transformaciones geomtricas
57
FUOC PID_00151936
0 1 1 2 2
1 0 1 1 3
0 0 1 1 1
0 1 1 2 3
1 0 1 2 3
0 0 1 1 1
De manera que las nuevas coordenadas de T son:
A2 (2, 2) B2 (2, 3) y C2 (3, 3).
c) En primer lugar consideramos que una matriz de translacin es de la forma:
1 0 x
T 0 1 y
0 0 1
cos() sin() 0
R sin() cos() 0
0
0
1
Ahora imponemos que el vrtice A se convierta en A3 , el B, en B3 y el C, en el
C3:
sin() cos() y 1 sin() cos() y 0
0
1
0
1 1
1
cos() sin() x 2 2 cos() sin() x 2
sin() cos() y 1 2 sin() cos() y 0
0
1
0
1 1
1
cos() sin() x 2 2 cos() 2 sin() x 2
sin() cos() y 2 2 sin() 2 cos() y 1
0
1
0
1 1
1
Transformaciones geomtricas
58
FUOC PID_00151936
Transformaciones geomtricas
A sin() cos() y 0 1 1
0
0
1 0 0 1
6.
a) Matriz de la traslacin T:
1 0 7
0 1 9
0 0 1
Matriz de la rotacin R:
1 0 6
0 1 5
0 0 1
2
2
2
2
0
1 0 6
0 0 1 5
0 0 1
1
2
2
2
2
0
2
2
2
2
0
2
2
2
2
0
11 2
6
2
2
5
2
Matriz de la composicin R T:
2
2
2
2
0
11 2
6
2
1 0 7
2
5 0 1 9
2
0 0 1
1
2
2
2
2
0
2
2
2
2
0
2
2
2
2
0
9 2
6
2
17 2
5
2
b) Trasformado de P1(0, 8)
2
2
2
2
0
2
2
2
2
0
17 2
9 2
6
6
2
0 2
9 2
17 2
5 8
5
2
1 2
1
1
59
FUOC PID_00151936
Transformaciones geomtricas
Trasformado de P2(4, 0)
2
2
2
2
0
2
2
2
2
0
5 2
9 2
6
6
2
4 2
17 2
13 2
5 0
5
2
1 2
1
1
2
2
2
2
0
9 2
6
6
2
0 2
25 2
17 2
5 8
5
2
1 2
1
1
2
2
2
2
0
13 2
9 2
6
6
2
2
4
21 2
17 2
5 0
5
2
1 2
1
1
Trasformado de P3(0, 8)
2
2
2
2
0
Trasformado de P4(4, 0)
2
2
2
2
0
cos( 2 ) sin( 2 ) 0
0 1 0
), hallamos la
60
FUOC PID_00151936
Transformaciones geomtricas
Puesto que se trata de una rotacin genrica (no sobre el origen) ser necesario
aplicar una traslacin (la traslacin que desplace el punto de rotacin hasta el
origen) y, despus de aplicar la rotacin, deshacer la traslacin.
1 0 x
T 0 1 y
0 0 1
A T 1 R T
Por tanto, la matriz resultante de aplicar la rotacin inicial (la que se indica en
el enunciado del ejercicio) es:
0 1 x y
A 1 0 x y
0 0
1
Y, al multiplicar esta matriz por el punto inicial se obtiene las coordenadas del
punto transformado. Si aplicamos esto obtenemos el punto de rotacin y lo
igualamos al punto transformado, tenemos la solucin al ejercicio:
Observacin
Observad que el orden de las
matrices es inverso al orden de
las transformaciones asociadas,
siendo la situada en el extremo
derecho la primera transformacin en aplicarse, y la situada en
el extremo izquierdo, la ltima.
61
FUOC PID_00151936
8.
a) En primer lugar, encontraremos la matriz de rotacin R. Como , se tiene:
cos() sin() 0 1 0 0
R sin() cos() 0 0 1 0
0
0
1 0 0 1
Ahora bien, como se trata de una rotacin genrica, ser necesario: a) aplicar
una traslacin antes de la rotacin (para desplazar el punto de rotacin hasta
el origen), y b) despus de aplicar la rotacin, deshacer la traslacin anterior.
1 0 2
T 0 1 1
0 0 1
Por lo tanto, la matriz compuesta traslacin-rotacin-traslacin ser:
A T 1 R T
La matriz de escalado:
2 0 0
S 0 3 0
0 0 1
1 0 4
A 0 1 2
0 0 1
Transformaciones geomtricas
62
FUOC PID_00151936
2 0 8
S A 0 3 6
0 0 1
Al multiplicar esta matriz por cada un de los vectores columna que contienden
las coordenadas del polgono original, obtenemos las coordenadas del polgono resultante:
1 6
S A 1 3
1 1
3 2
S A 1 3
1 1
3 2
S A 4 6
1 1
0 8
S A 3 3
1 1
b) A continuacin se muestra un grfico que contiene los dos polgonos, el original el pequeo y el resultante el grande despus de aplicar las transformaciones pedidas (primero se muestran las intrucciones Wiris utilizadas y
posteriormente aparece el grfico que es el que se pide en el ejercicio; como
ya debis saber, la Wiris permite realizar rotaciones automticamente, con una
sola instruccin, sin embargo no se pueden hacer escalados si no se indican
las instrucciones que hay que seguir:
Transformaciones geomtricas
FUOC PID_00151936
63
Transformaciones geomtricas
FUOC PID_00151936
64
Glosario
ngulo de rotacin m ngulo que determina la magnitud de la rotacin alrededor del eje
de rotacin.
coordenadas homogneas f Dado un punto P(x, y) del plano, se llaman coordenadas homogneas del mismo a las coordenadas (xw, yw, w), siendo w un escalar no nulo (es frecuente
usar w 1 para simplificar). La idea se puede generalizar a ms dimensiones.
eje de rotacin m Eje alrededor del cual se produce el giro del punto u objeto.
escalado m Aplicar un escalado sobre un punto P consiste en multiplicar por factores de
escala (uno por eje) la distancia entre P y el punto fijo del escalado P0. El resultado ser un
nuevo punto P = S P, siendo S la matriz de escalado.
factores de escala m En un escalado, se consideran tantos factores de escala como ejes haya. Cada factor de escala se multiplica por la distancia, medida sobre cada eje, entre el punto
fijo y el punto a escalar.
punto fijo m Punto a partir del cual se produce el escalado (los factores de escala afectan a
la distancia existente entre el punto al que se le desea aplicar el escalado y el punto fijo).
rotacin f Aplicar una rotacin sobre un punto P consiste en hacer girar dicho punto alrededor de un eje de rotacin, tras lo cual se convertir en el punto P = R P, siendo R la matriz
de rotacin.
transformacin afn en 2D f Una transformacin afn en 2D sobre un punto P(x, y) es
una transformacin de coordenadas de la forma:
x = a11x + a12y + b1
y = a21x + a22y + b2
trasladar v tr Aplicar una traslacin sobre un punto P consiste en desplazarlo en lnea recta,
tras lo cual se convertir en el punto P = P + T, siendo T el vector de traslacin.
vector de traslacin m Vector que indica la direccin, el sentido y la distancia de desplazamiento asociada a una traslacin.
Bibliografa
Bibliografa bsica
Foley, J. y otros (1994). Introduction to Computer Graphics. Addison-Wesley
Considerado por muchos como uno de los mejores libros para introducirse en el mundo de
la programacin de grficos 3D. Presenta bastantes ejemplos realizados en C.
Hearn, D.; Pauline, M. (1996). Computer Graphics. C version. Prentice Hall.
Completo libro sobre generacin de grficos con ordenador. Incluye varios captulos dedicados a los fundamentos matemticos de la Informtica Grfica. Utiliza C en muchos ejemplos.
Schneider, P.; Everly, D. (2003). Geometric Tools for Computer Graphics. Morgan Kaufmann
Publishers.
Libro completo que trata con profundidad los conceptos desarrollados en este mdulo y
otros ms avanzados. Incluye cdigo en C de muchos ejemplos.
Bibliografa complementaria
Angel, E. (1996). Interactive Computer Graphics: A top-down approach with OpenGL. AddisonWesley.
Berg, M. y otros (2000). Computational Geometry. Springer.
Mortenson, M. (1999). Mathematics for Computer Graphics Applications. Industrial Press.
Watt, A. (1999). 3D Computer Graphics. Addison Wesley.
Transformaciones geomtricas