Logo Studenta

tema-3

¡Este material tiene más páginas!

Vista previa del material en texto

Transformaciones Geométricas Bidimensionales
 
 
 
 
 
3 TRANSFORMACIONES 
GEOMÉTRICAS 
BIDIMENSIONALES 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 Computación Gráfica 35 
Tema 3 
Con los procedimientos para desplegar primitivos de salida y sus atributos, podemos crear 
una variedad de imágenes y gráficas. En muchas aplicaciones también es necesario alterar 
o manipular los despliegues. Se crean aplicaciones de diseño y planos de construcciones al 
ordenar las orientaciones y los tamaños de las partes que componen la escena. Las 
transformaciones geométricas básicas son traslación, rotación y escalación. Otras 
transformaciones que se aplican con frecuencia en objetos incluyen la reflexión y el 
recorte. Primero analizamos los métodos para realizar transformaciones geométricas. 
 
 
3.1 Transformaciones Básicas 
 
Aquí, estudiamos primero los procedimientos generales para aplicar parámetros de 
traslación, rotación y escalación para cambiar la posición y el tamaño de objetos 
bidimensionales. Consideramos cómo se puede expresar ecuaciones de transformación en 
una formulación de matriz más conveniente que permite combinar de manera eficiente 
transformaciones de objetos. 
 
3.1.1 Traslación 
 
Se aplica una traslación en un objeto para cambiar su posición a lo largo de la trayectoria e 
una línea recta de una dirección de coordenadas a otra. Convertimos un punto 
bidimensional al agregar las distancias de traslación, tx y ty a la posición de coordenadas 
original (x, y) para mover el punto a una nueva posición (x’, y’) 
 
 x’ = x + tx , y’ = y + ty (3-1) 
 
El par de distancia de traslación (tx , ty) se llama vector de traslación o vector de cambio. 
Podemos expresar las ecuaciones de traslación 3-1 como una sola ecuación matricial al 
utilizar vectores de columna para representar las posiciones de coordenadas y el vector de 
traslación : 
 
 P = , P’ = , T =  (3-2) 





2
1
x
x






2
1
'
'
x
x





y
x
t
t
 
Esto nos permite expresar las dos ecuaciones de traslación bidimensional en la forma de 
matriz : 
 
 P’ = P + T (3-3) 
 
 
36 Dpl. Ing. Carlos Balderrama Vásquez 
 Transformaciones Geométricas Bidimensionales
 
 
 
Figura 3-1Traslación de un punto de la posición P a la posición P’ con el vector de 
traslación T. 
 
La traslación es una transformación de cuerpo rígido que mueve objetos sin deformarlos. 
Es decir, se traslada cada punto del objeto la misma distancia. Se traslada un segmento de 
línea recta al aplicar la ecuación de transformación 3-3 en cada uno de los extremos de la 
línea y se vuelve a trazar la línea entre las nuevas posiciones de los extremos. Los 
polígonos se trasladan al sumar el vector de traslación a la posición de coordenadas de 
cada vértice y se vuelve a generar el polígono utilizando el nuevo conjunto de coordenadas 
de vértices y las especificaciones actuales de los atributos. La figura 3-2 ilustra la 
aplicación de un vector de traslación específico para mover un objeto de una posición a 
otra. 
 
 
Figura 3-2 Movimiento de un polígono de la posición (a) a la posición (b) con el vector 
de traslación (-2.20, 3.72). 
 Computación Gráfica 37 
Tema 3 
3.1.2 Rotación 
Se aplica una rotación bidimensional en un objeto al cambiar su posición a lo largo de la 
trayectoria de una circunferencia en el plano de xy. Para generar una rotación, 
especificamos un ángulo de rotación θ y la posición (xr , yr ) del punto de rotación (o 
punto pivote) en torno al cual se gira el objeto (figura 3-3). Los valores positivos para el 
ángulo de rotación definen rotaciones en sentido opuesto a las manecillas del reloj 
alrededor del punto pivote, como en la figura 3-3, y los valores negativos giran los objetos 
en la dirección del reloj. También es posible describir esta transformación como una 
rotación sobre el eje de rotación que es perpendicular al plano de xy y pasa a través del 
punto pivote. 
 
Primero determinamos las ecuaciones de transformación para la rotación de la posición de 
un punto P cuando el punto pivote está en el origen de las coordenadas. Las relaciones 
angulares y de coordenadas de la posiciones de puntos originales y transformadas se 
ilustran en la figura 3-4. Al utilizar identidades trigonométricas estándar, podemos expresar 
las coordenadas transformadas en términos de los ángulos θ y ϕ como : 
 
 x’ = r cos (ϕ + θ) = r cos ϕ cos θ - r sen ϕ sen θ (3-4) 
y’ = r sen (ϕ + θ) = r cos ϕ sen θ + r sen ϕ cos θ 
 
Las coordenadas originales del punto en las coordenadas polares son : 
 
x = r cos ϕ , y = r sen ϕ (3-5) 
 
Al sustituir expresiones 3-2 en las 3-4, obtenemos las ecuaciones de transformación para 
girar un punto en la posición (x, y) a través de un ángulo θ alrededor del origen : 
 
 x’ = x cos θ - y sen θ (3-6) 
 y’ = x sen θ +y cos θ 
 
Con las representaciones del vector de columna 3-2 para las posiciones de coordenadas, 
podemos expresar las ecuaciones de rotación en la forma de matriz: 
 
 P’ = R · P (3-7) 
 
Figura 3-3 Rotación de un objeto través del ángulo θ alrededor del punto pivote (x, y). 
 
38 Dpl. Ing. Carlos Balderrama Vásquez 
 Transformaciones Geométricas Bidimensionales
 
 
Figura 3-4 Rotación de un punto desde la posición (x, y) a la posición (x’, y’) a través de 
un ángulo θ con respecto del origen de las coordenadas. El desplazamiento angular 
original del punto desde el eje de las x es ϕ. 
 
donde la matriz de rotación es : 
 
 R = 

 (3,8) 
 θ
θ
sen
cos


−
θ
θ
cos
sen
 
Cuando las posiciones de coordenadas se representan como vectores de renglón en vez de 
vectores de columna, el producto de la matriz en la ecuación de rotación 3-7 se transpone, 
de modo que el vector de coordenadas de renglón transformado [x’ y’] se calcula como: 
 
 P’T = (R · P)T 
 = PT · RT 
 
donde PT = [x y] y se obtiene la transposición RT de la matriz R con sólo cambiar el signo 
de los términos del seno. 
 
 
Figura 3-5 Rotación de un punto desde la posición (x, y) a la posición (x’, y’) a través de 
un ángulo θ con respecto del punto de rotación (x r , y r). 
 
 
En la figura 3-2 se ilustra la rotación de un punto alrededor de una posición pivote 
arbitraria. Al utilizar las relaciones trigonométricas en esta figura, podemos generalizar las 
ecuaciones 3-6 para obtener las ecuaciones de transformación para la rotación de un punto 
con respecto a cualquier posición de rotación específica (x r , y r) : 
 
x’ = x r + (x – x r) cos θ - (y – y r) sen θ (3-9) 
y’ = y r + (x – x r) sen θ + (y – y r) cos θ 
 
 Computación Gráfica 39 
Tema 3 
Estas ecuaciones generales de rotación difieren de las ecuaciones de rotación 3-6 por la 
inclusión de términos aditivos, así como los factores de multiplicación en los valores de las 
coordenadas. 
 
 
3.1.3 Escalación 
 
Una transformación de escalación altera el tamaño de un objeto. Se puede realizar esta 
operación para polígonos, para multiplicar los valores de coordenadas (x, y) de cada vértice 
por los factores de escalación s x y s y para producir las coordenadas transformadas (x’,y’): 
 
 x’ = x · s x , y’ = y · s y (3-10) 
 
El factor de escalación s x escala objetos en la dirección de x, mientras el factor de 
escalación s y lo hace en dirección de y. También se pueden expresar las ecuaciones de 
transformación 3-10 en la forma matricial: 
 
 = · (3-11) 





'
'
y
x



0
xs



ys
0






y
x
 
 P’ = S · P (3-12) 
 
Donde S es la matriz de escalación de 2 por 2 en la ecuación 3-11. Se pueden asignar 
valores numéricos positivos cualesquiera a los factores de escalación s x y s y. Los valores 
menores que 1 reducen el tamaño de los objetos y los valores mayores que 1 producen una 
ampliación. Cuando se asigna el mismo valor a s x y s y se genera una escalación 
uniforme que mantiene las proporciones relativas de los objetos. Cuando s x y s y tienen 
valores distintos, se obtiene una escalación diferencial. 
 
Los objetos que se transforman con las ecuaciones 3-11 se escalan y cambian de posición. 
Los factores de escalación con valores menores que 1 acercan los objetos al origen de las 
coordenadas, en tanto que los valores mayores que 1 alejan las posiciones de coordenadas 
de origen. La figura 3-7 ilustra la escalación de una línea al asignar el valor de 0.2 tanto a s 
x como a s y en la ecuación 3-11. Tanto la longitud de la línea como la distancia desde el 
origen se reducen por un factor de ½. 
 
Podemos controlar la localización de un objeto escalado al seleccionar una posición, 
llamada punto fijo, que debe permanecer sin cambios después de la transformación de 
escalación. Se puede seleccionar las coordenadas para el punto fijo (x f , y f) como uno de 
los vértices, el centroide del objeto, o cualquier otra posición (figura 3-8). Así, se escala 
un polígono con respecto del punto fijo al escalar la distancia desde cada vértice al punto 
fijo. Para un vértice con coordenadas (x, y), se calculan las coordenadas escaladas (x’, y’) 
como 
 
40 Dpl. Ing. Carlos Balderrama Vásquez 
 Transformaciones Geométricas Bidimensionales
 
 x’ = x f + (x – x f) s x , y’ = y f + (y – y f) s y (3-13) 
 
Podemos volver a expresar estas transformaciones de escalación para separar los términos 
de multiplicación y de adición : 
 
 x’ = x · s x + x f (1 - s x ) 
 y’ = y · s y + y f (1 - s y ) (3-14) 
 
donde los términos aditivos x f (1 - s x ) y y f (1 - s y ) son constantes para todos los 
puntos en el objeto. 
 
 
Figura 3-6 Conversión de un cuadrado (a) en un rectángulo (b) con los factores de 
escalación s x =2 y s y = 1. 
 
 
 
 
Figura 3-7 Una línea escalada con la ecuación 3-12 al utilizar s x = s y = 0.2 se reduce en 
tamaño y se aproxima al origen de las coordenadas. 
 
 
 
 
Figura 3-8 Escalación con respecto de un punto fijo seleccionado (x f , y f ).Las distancias 
desde cada vértice del polígono al punto fijo se escalan mediante las ecuaciones de 
transformación3-13. 
 
 Computación Gráfica 41 
Tema 3 
3.2 Representaciones De Matriz Y Coordenadas 
Homogéneas . 
 
En la sección anterior vimos que es posible expresar cada una de las transformaciones 
básicas en la forma de matriz general 
 
 P’ = M 1 · P + M 2 (3-15) 
 
con las posiciones de coordenadas P y P’ representadas como columnas de vector. La 
matriz M 1 es matriz de 2 por 2 que contiene factores de multiplicación y M 2 contiene los 
términos de traslación asociados con el punto pivote o el punto fijo de escalación. Con el 
fin de producir una secuencia de transformaciones con estas ecuaciones, como escalación 
seguida por rotación y luego traslación, debemos calcular las coordenadas transformadas 
un paso a la vez. Primero, se escalan las posiciones de coordenadas, después se giran estas 
coordenadas escaladas y, por último se trasladan las coordenadas giradas. 
 
Para expresar cualquier transformación bidimensional como una multiplicación de matiz, 
representamos cada posición de coordenadas cartesianas (x, y) con las tres coordenadas 
homogéneas (x h ,y h , h), donde 
 
 x =
h
hx , y = 
h
yh (3-16) 
 
Por tanto, una representación general de coordenadas homogéneas se puede expresar 
también como (h · x, h · y, h). Para transformaciones geométricas bidimensionales 
seleccionamos el parámetro homogéneo h como cualquier valor no cero. Así, existe un 
número finito de representaciones homogéneas equivalentes para cada punto de 
coordenadas (x, y). Una opción conveniente consiste en solo establecer h = 1. Entonces, se 
presenta cada posición bidimensional con las coordenadas homogéneas (x, y, 1). Se 
requieren otros valores para el parámetro h, por ejemplo, en las formulaciones de matriz de 
transformaciones de vista tridimensionales. 
 
Expresar posiciones en coordenadas homogéneas nos permite representar todas las 
ecuaciones de transformación geométrica como multiplicaciones de matriz. Se representan 
las coordenadas con vectores de columnas de tres elementos y las operaciones de 
transformación se expresan como matrices de 3 por 3. Para la traslación, tenemos 
 
 = · (3-17) 










1
'
'
y
x





0
0
1
0
1
0





1
y
x
t
t










1
y
x
 
que podemos expresar con la forma abreviada 
 
 P’ = T(t x , t y) · P (3-18) 
42 Dpl. Ing. Carlos Balderrama Vásquez 
 Transformaciones Geométricas Bidimensionales
 
 
Con T(t x , t y) como la matriz de traslación de 3 por 3en la ecuación 3-17. Se obtiene el 
inverso de la matriz de traslación al reemplazar los parámetros de traslación t x y t y con 
sus valores negativos -t x y -t y. 
 
De modo similar, ahora se expresan las ecuaciones de transformación de rotación con 
respecto del origen de las coordenadas como 
 
 = 
 · 
 (3-19) 










1
'
'
y
x


0
cos
θ
θ
sen
0
cosθ
θsen−





1
0
0







1
y
x
o como 
 
 P’ = R(θ) · P (3-20) 
 
El operador de transformación de rotación R(θ) es la matriz de 3 por 3 en la ecuación 3-19 
con el 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 
las coordenadas como la multiplicación de matriz. 
 










1
'
'
y
x
 = · (3-21) 





0
0
xs
0
0
ys





1
0
0










1
y
x
o 
 
 P’ = S(s x , sy) · P (3-22) 
 
Donde S(s x , sy) es la matriz de 3 por 3 en la ecuación 3-21 con los parámetros s x y sy. Al 
sustituir sus inversos multiplicativos (1/s x ,1/ sy) se obtienen la matriz de escalación 
inversa. 
 
 
3. 3 Transformaciones Compuestas 
 
Con las representaciones de matriz de la sección anterior, podemos establecer una matriz 
para cualquier secuencia de transformaciones como una matriz de transformación 
compuesta al calcular el producto de la matriz de las transformaciones individuales. La 
creación de productos de matrices de transformación a menudo se conoce como 
concatenación o composición de matrices. 
 
 Computación Gráfica 43 
Tema 3 
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. 
Es decir, cada matriz de transformación premultiplica el producto de las matrices de 
transformaciónprevias. 
 
3.3.1 Traslaciones 
 
Si se aplican dos vectores de traslación sucesivos (t x1 , t y1) y (t x2 , t y2) en la posición de 
coordenadas P, la localización final P’ se calcula como : 
 
 P’ = T(t x2 ,t y2) · |T(t x1, t y1) · P | 
 
 = |T(t x2, t y2) · T(t x1, t y1 )| · P (3-23) 
 
donde se representa P y P’ como vectores de columna de coordenadas homogéneas. 
 
Podemos verificar este resultado al calcular el producto de la matriz para las dos 
agrupaciones asociativas. Así mismo, la matriz de transformación compuesta para esta 
secuencia de transformaciones es 
 





0
0
1
0
1
0





1
2
2
y
x
t
t
 · = (3-24) 





0
0
1
0
1
0
t
t





1
1
1
y
x





0
0
1
0
1
0
1
t
t





+
+
21
21
yy
xx
t
t
 
o 
 
 T(t x2 ,t y2) · T(t x1, t y1) = T (t x1, + t x2 , t y1+ t y2) (3-25) 
 
 
que demuestre que dos transformaciones sucesivas son aditivas. 
 
 
3.3.2 Rotaciones 
 
Dos rotaciones sucesivas que se aplican en el punto P producen la posición transformada: 
 
 P’ = R (θ2) · {R(θ1) · P} (3-26) 
 
 = {R (θ2) · {R(θ1)} · P 
 
Al multiplicar las dos matrices de rotación, podemos verificar que dos rotaciones sucesivas 
son aditivas : 
 
44 Dpl. Ing. Carlos Balderrama Vásquez 
 R(θ2) · R(θ1) = R(θ1+θ2) (3-27) 
 Transformaciones Geométricas Bidimensionales
 
 
de modo que es posible calcular las coordenadas giradas finales con la matriz de rotación 
compuesta como : 
 
 P’ = R(θ1+θ2) · P (3-28) 
 
 
3.3.3 Escalaciones 
 
Concatenar matrices de transformación para dos operaciones de escalación sucesivas 
produce la siguiente matriz de escalación compuesta : 
 
 





0
0
2xS
0
0
2yS





1
0
0





0
0
1xS
0
0
1yS





1
0
0
= (3-29) 





0
0
· 21 xx SS
0
·
0
21 yy SS





1
0
0
 
 
o 
 S( s x2, sy2) · S(s x1, sy1 ) = S(s x1 · s x2, sy1 · sy2) (3-30) 
 
La matriz resultante en este caso indica que las operaciones de escalación sucesivas son 
multiplicativas. Es decir, si deberíamos triplicar el tamaño de un objeto dos veces en una 
sucesión, el tamaño final sería de nueve veces el tamaño original. 
 
 
3.4 Rotación del punto pivote general 
 
 
Con un paquete de graficas que sólo ofrece una función de rotación para girar objetos con 
respecto del origen de las coordenadas, podemos generar casi cualquier punto pivote 
seleccionado (x r, y r) 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. Gires 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. 
 
 
 Computación Gráfica 45 
Tema 3 
 
Figura 3-9 Secuencia de transformación para girar un objeto con respecto de un punto 
pivote específico al utilizar la matriz de rotación R( θ) de la transformación 
 





0
0
1
0
1
0





1
r
r
y
x
 · · = 





0
cos
θ
θ
sen
0
cosθ
θsen−





1
0
0





0
0
1
0
1
0





−
−
1
r
r
y
x





0
cos
θ
θ
sen
0
cosθ
θsen−





−−
+−
1
)cos1(
)cos1(
θθ
θθ
senxy
senyx
rr
rr
(3-31) 
 
 
Que se puede expresar en la forma 
 
 
T (x r , y r) · R(θ) · T(-x r, -y r) = R(x r, y r, θ) (3-32) 
 
Donde T(-x r, -y r) = T-1 (x r, y r). En general, es posible determinar una función de rotación 
para aceptar parámetros para las coordenadas del punto pivote, así como el ángulo de 
rotación, y generar en forma automática la matriz de rotación de la ecuación 3-31. 
 
 
3.5 Escalación del punto fijo general 
 
La figura 3-10 ilustra una secuencia de transformación para producir escalación con 
respecto de una posición fija seleccionada (x f, y f) al utilizar una función de escalación que 
solo puede escalar en relación con el origen de las coordenadas. 
 
1. Traslade el objeto de modo que el punto fijo coincida con el origen de las 
coordenadas. 
2. Escale el objeto con respecto del origen de las coordenadas. 
46 Dpl. Ing. Carlos Balderrama Vásquez 
 Transformaciones Geométricas Bidimensionales
 
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. 
 
 





0
0
1
0
1
0





1
f
f
y
x
 · · 
 1 − = (3-33) 





0
0
xs
0
0
ys





1
0
0


0
0
1
0
0




−
1
f
f
y
x





0
0
xs
0
0
ys





−
−
1
)1(
)1(
yf
xf
sy
sx
 
o 
 
 T(x f, y f) · S(s x,s y) · T(-x f, -y f) = S(x f, y f , s x,s y) (3-34) 
 
Esta transformación se genera de manera automática en sistemas que ofrecen una función 
de escalación que acepta las coordenadas para el punto fijo. 
 
 
3.6 Direcciones de escalación 
 
Los parámetros s x y s y escalan objetos a lo largo de las direcciones de x y de y. Podemos 
escalar un objeto en otras direcciones al girar el objeto para alinear las direcciones de 
escalación deseadas 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 
los parámetros s 1 y s2 en la direcciones que se presentan en la figura 3-11. Para llevar a 
cabo la escalación sin cambiar la orientación del objeto, primero realizamos una rotación 
de modo que las direcciones de s y s coincidan con los ejes de x e y , en forma respectiva. 
Entonces se aplica la transformación de escalación, seguida por una rotación opuesta para 
regresar los puntos a sus orientaciones originales. La matriz compuesta resultante del 
producto de estas tres transformaciones es: 
 
 
R-1(θ)·S(s1,s2)·R(θ) = 





−
+
0
cos)(
cos
12
2
2
2
1
θθ
θθ
senss
senss
0
cos
cos)(
2
2
2
1
12
θθ
θθ
ssens
senss
+
−





1
0
0
(3-35) 
 
 
 
 Computación Gráfica 47 
Tema 3 
 
Figura 3-10 Secuencia de transformación para escalar un objeto con respecto de una 
posición fija específica utilizando la matriz de escalación S(s x, s y) de la transformación. 
 
 
 
Figura 3-11 Los parámetros de escalación s1 y s2 se debe aplicar en direcciones 
ortoganales definidas por el desplazamiento angular θ. 
 
Como un ejemplo de estas transformaciones de escalación, convertimos un cuadro unitario 
en un paralelogramo (figura 3-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 de 
transformación θ = 42 ,s 1 = 1 y s 2 = 2. 
 
En la ecuación 3-32, 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 operadores de traslación, de modo que la matriz compuesta incluiría los parámetros 
para la especificación de una posición fija de escalación. 
 
 
3.7 Propiedades de concatenación 
 
La multiplicación de matrices es asociativa. Para tres matrices cualquiera ; A, B y C, el 
producto matricial A · B · C se puede llevar a cabo al multiplicar primero A por B o 
multiplicar primero B y C: 
48 Dpl. Ing. Carlos Balderrama Vásquez 
 Transformaciones Geométricas Bidimensionales
 
 
 A · B · C = (A · B) · C = A · (B · C) (3-36) 
 
Por tanto, podemos evaluar los productos matriciales al utilizar una agrupaciónasociativa 
ya sea de izquierda a derecha o de derecha a izquierda. 
 
Por otro lado, los lados de transformación tal vez no sean conmutativos: en general, el 
producto matricial A · B no es igual que B · A. Esto significa que si queremos trasladar y 
girar un objeto, debemos tener cuidado sobre el sentido en que se evalúa la matriz 
compuesta (figura 3-13). 
 
Para casos especiales, como una secuencia de transformación es conmutativa. Como un 
ejemplo, se podría realizar dos rotaciones sucesivas en cualquier sentido y la posición final 
sería la misma. Esta propiedad conmutativa se aplica también para dos traslaciones 
sucesivas o dos escalaciones sucesivas. Otro par conmutativo de operaciones es la rotación 
y la escalación uniforme (s x =s y). 
 
 
3.8 Otras Transformaciones 
 
Las transformaciones básicas como la traslación, rotación y escalación se incluyen en la 
mayor parte de los paquetes de las gráficas. Algunos paquetes proporcionan algunas 
transformaciones adicionales que son útiles para ciertas aplicaciones. Dos de estas 
transformaciones son la reflexión y el recorte. 
 
 
3.8.1 Reflexión 
 
Una reflexión es una transformación que produce una imagen de espejo de un objeto. La 
imagen de espejo para una reflexión bidimensional se genera en relación con un eje de 
reflexión al girar el objeto a 180º alrededor al eje de reflexión. 
 
Podemos elegir un eje de reflexión en el plano de xy o perpendicular al plano xy. Cuando 
el eje de reflexión es una línea en el plano xy, la trayectoria de rotación alrededor de este 
eje es un plano perpendicular al plano de xy. Para los ejes de reflexión que son 
perpendiculares al plano xy , la trayectoria de rotación está en el plano xy . 
 
Los siguientes son ejemplos de algunas reflexiones comunes . 
 
 
 
 
 
 
 
 Computación Gráfica 49 
Tema 3 
 
 y 1 
 
 
 
 
 2 3 
 
 x 
 
 2’ 3’ 
 
 
 
 1’ 
 
Figura 3-16 Reflexión de un objeto con respecto del eje de las x. 
 
La reflexión alrededor de la línea y=0, el eje de x, se logra con la matriz de 
transformación. 
 





0
0
1
 (3-37) 
0
1
0
−





1
0
0
 
 
Esta transformación conserva iguales los valores de x, pero “gira” los valores de y de las 
posiciones de las coordenadas. La orientación que resulta de un objeto después de que la 
reflexión alrededor del eje x se muestra en la figura 3-16. 
 
Una reflexión alrededor del eje de y gira las coordenadas de x en tanto que mantiene 
iguales las coordenadas de y. La matriz para esta transformación es: 
 
 




−
0
0
1
 1 (3-38) 
0
0





1
0
0
 
 
La figura 3-17 ilustra el cambio de la posición de un objeto que se reflejó alrededor de la 
línea x = 0. En este caso, la rotación equivalente es 180º a través del espacio 
tridimensional alrededor del eje de y. 
 
 
50 Dpl. Ing. Carlos Balderrama Vásquez 
 Transformaciones Geométricas Bidimensionales
 
________________ 
Figura 3-17 Reflexión de un objeto con respecto del eje de las y. 
 
 
Giramos tanto las coordenadas de x como de y de un punto mediante la reflexión con 
respecto de un eje que es perpendicular al plano de xy y que pasa a través del origen de las 
coordenadas. 
 
Esta transformación, que se conoce como una reflexión en relación con el origen de las 
coordenadas, tiene la representación matricial: 
 
 




−
1
0
1
 (3-39) 
0
1
0
−





1
0
0
 
 
Un ejemplo de reflexión alrededor del origen se muestra en la figura 3-18. La matriz de 
reflexión 3-20 es la matriz de rotación R(θ) con θ = 180º. Simplemente giramos el objeto 
en el plano de xy media vuelta alrededor del origen. 
 
________________ 
Figura 3-18 Reflexión de un objeto con respecto de un eje perpendicular al plano xy y que 
pasa a través del origen de las coordenadas. 
 
La reflexión 3-20 se puede generalizar para cualquier punto de reflexión en el plano xy 
(figura 3-19). Esta reflexión es igual a una rotación de 180º en el plano de xy al utilizar el 
punto de reflexión como el punto de pivote. 
 Computación Gráfica 51 
Tema 3 
 
 
 
______________________________________________ 
Figura 3-19 Reflexión de un objeto con respecto de perpendicular al plano xy y que pasa a 
través del punto Prft. 
 
 
 
Figura 3-20 Reflexión de un objeto con respecto un eje de la línea y = x 
 
 
 
 
 
________________ 
Figura 3-21 Secuencia de transformaciones para reducir la reflexión con respecto de la 
línea y=x (a) rotación a 42º en el sentido de las manecillas del reloj, (b) reflexión con 
respecto del eje de las x y (c) rotación a 42º en sentido inverso a la dirección de las 
manecillas del reloj. 
 
Si elegimos el eje de reflexión como la línea diagonal y = x (figura 3-20), la matriz de 
reflexión es : 
 
52 Dpl. Ing. Carlos Balderrama Vásquez 
 Transformaciones Geométricas Bidimensionales
 





0
1
0
0
0
1





1
0
0
 (3-40) 
 
 
Para obtener una matriz de transformación para una reflexión alrededor de la diagonal y = -
x, podemos concatenar las matrices para la secuencia de transformación : (1) rotación de 
45º en sentido de las manecillas del reloj, (2) reflexión alrededor del eje de y y (3) rotación 
45º en sentido opuesto a las manecillas del reloj. La matriz de transformación que resulta es 
: 
 
 (3-41) 





−
0
1
0
0
0
1−





1
0
0
 
La figura 3-22 muestra las posiciones original y final de un objeto que se transforma con 
una matriz de reflexión. 
 
 
 
Figura 3.22 Reflexión con respecto de la línea y = -x. 
 
Las reflexiones alrededor de cualquier línea y = mx + b en el plano de xy puede lograr con 
una combinación de transformación de traslación-rotación-reflexión. 
 
 
3.8.2 Recorte 
 
Una transformación que distorsiona la forma de un objeto de manera que la forma que se 
transforma aparece como si el objeto estuviera compuesto por capas internas que se 
deslizaron una sobre otra se llama recorte. Dos transformaciones comunes de recorte son 
aquellas que cambian los valores de las coordenadas de x y aquellas que cambian los 
valores de y. 
 
 Computación Gráfica 53 
Tema 3 
Un recorte de la dirección de x en relación con ele eje de x se produce con la matriz de 
transformación. 
 





0
0
1
0
1
xsh





1
0
0
 (3-42) 
 
que transforma las posiciones de las coordenadas como : 
 
 
 x’ = x + sh x · y , y’ = y (3-43) 
 
Cualquier número real se puede asignar para el parámetro de recorte sh x . Entonces una 
posición de las coordenadas (x, y) se cambia en forma horizontal por una cantidad 
proporcional a su distancia (valor de y ) del eje de x (y = 0). 
 
Por ejemplo, al establecer sh x para 2, cambia el cuadro de la figura 3-23 es un 
paralelogramo. Los valores negativos para sh x cambia las posiciones de las coordenadas 
hacia la izquierda. 
 
Podemos generar los recortes de la dirección de x en relación con otras líneas de referencia 
con : 
 





0
0
1
0
1
xsh
 (3-44) 




−
1
0
· refx ysh
 
Con las posiciones de las coordenadas transformadas como : 
 
 
 x’ = x + sh x (y – y ref) , y’ =y (3-45) 
 
Un ejemplo de estas transformaciones de recorte se da en la figura 3-24 para un valor de 
parámetros de recorte de ½ en relación con la línea y ref = -1. 
 
Un recorte de dirección de y en relación con la línea x = x ref se genera con la matriz de 
transformación: 





0
1
ysh 1 (3-46) 
0
0





−
1
·
0
refy xsh
 
 
que genera las posiciones delas coordenadas transformadas : 
54 Dpl. Ing. Carlos Balderrama Vásquez 
 Transformaciones Geométricas Bidimensionales
 
 
Figura 3-23 Se convierte un cuadrado unitario (a), en un paralelogramo (b) al utilizar la 
matriz de recorte en la dirección de x, con sh x =2. 
 
 
 
Figura 3-24 Se transforma en cuadrado unitario (a), en un paralelogramo cambiado (b) 
con shx = ½ y y ref = -1 en la matriz de recorte. 
 
x’ = x , y’ = sh y (x – x ref) + y (3-47) 
 
 
Esta transformación cambia una posición de las coordenadas en forma vertical por una 
cantidad proporcional a su distancia de la línea de referencia x = x ref .La figura 3-25 ilustra 
la conversión de cuadrado en un paralelogramo con sh y = ½ y x ref = -1. 
 
 
 
 __________________________________________________________ 
Figura 3-25 Se convierte el cuadrado unitario, (a) en un paralelogramo cambiado (b) con 
los valores de los parámetros sh x =1/2 y x ref =-1 en la dirección de y al utilizar la 
transformación de recorte. 
 
 
 
 
 
 
 
 Computación Gráfica 55 
Tema 3 
3.9 Vistas en dos dimensiones 
 
 
Las proyecciones en dos dimensiones no tiene muchos problemas en la representación en la 
pantalla. Puesto que para ello manejamos ventanas de visión. 
 
 
 
 Ywmax ventana yvmax puerto de vista 
 
 
 
 
 Yw yvmin 
 
 Xwmin xwmax xv min xvmax 
 
 Coordenadas mundiales coordenadas de dispositivo 
 
Figura 3-26 Transformación de vista al utilizar rectángulos estándar para la ventana y el 
puerto de vista 
 
Uno de las principales aspectos que debemos tomar en cuenta son las coordenadas del 
dispositivo de proyección y las coordenadas Universales en la que están los objetos. 
 
 
 Ymundial 
 
 Y vista 1 
 
 Yo ventana Puerto de vista 
 
 Xvista 
 0 
 
 Xo X mundial 1 
 
 Coordenadas mundiales Coordenadas de dispositivo 
 Normalizado 
Figura 3-27 Establecimiento de una ventana girada en coordenadas de vista y el puerto de 
vista en coordenadas normalizadas. 
 
 
 
 
 
56 Dpl. Ing. Carlos Balderrama Vásquez 
 Transformaciones Geométricas Bidimensionales
 
 Y Y Y 
Mundial Mundial vista 
 
 
 
 Yo yvista 
 T 
 
 x vista 
 Xo Xmundial x mundial 
 R 
 
 Xvista 
 (a) (b) 
 
Figura 3-28 Se mueve un marco de coordenadas de vista para coincidir con el marco 
mundial en dos pasos: (a) se traslada al origen de las coordenadas de vista al origen de 
las coordenadas mundiales, luego (b) se gira para alinear los ejes de los dos sistemas. 
 
 
 
 
 Ywmax yvmax 
 (xv, yv) 
 (xw, yw) 
 yvmin 
 ywmin 
 
 xwmin xwmax xvmin xvmax 
 
Figura 3-29 Un punto en una posición (xy, yw) en una ventana designada se transforma a 
las coordenadas de puerto de vista (xv, yv) de modo que las posiciones relativas en las dos 
áreas son las mismas. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 Computación Gráfica 57 
Tema 3 
 Ventana de coordenadas 
 Vista. 
 
 Espacio normalizado 
 Puerto de vista 
 
 1 
 ventana de la 
 estación 
 
 0 1 
 
 ventana de la 
 estación de 
 trabajo 1 
 puerto de vista de la puerto de vista de la 
 
 
 
 
 Estación de trabajo 1 Estación de trabajo 2 
 
 Monitor1 Monitor 2 
 
Figura 3-30 Transformación de partes seleccionadas de una escena en coordenadas 
normalizadas a diferentes monitores de vídeo con transformaciones de estación de trabajo. 
 
3.10 Recorte De Lineas 
 
 
P9 
 
 
 Ventana P10 Ventana 
 
 P4 P2 P2 
 P1 P1 
 
P3 P5 P6 P8 P5 P6 P8 
 
 P7 P7 
 
 Antes del recorte Después del recorte 
(a) (b) 
Figura 3-31 Recorte de líneas contra una ventana de recorte rectangular. 
 
 
58 Dpl. Ing. Carlos Balderrama Vásquez 
 Transformaciones Geométricas Bidimensionales
 
 
 P2 
 
 P'2 P''2 
 
 
 P'1 ventana 
 P3 
 P1 
 P'3 
 P4 
 
Figura 3-32 Las lineas que se extienden de una región de coordenadas a otra pueden pasar 
através de la ventanade recorte opueden intersectar las fronteras de recorte sin entrar en 
la ventana. 
 
 
 
 
 P1 * 
 
 
 P1 * P1 * 
 
 
 
 P1 en ventana P1 en región de arista P1 en región de esquina 
 (a) (b) (c) 
 
Figura 3-33 Tres posiciones posibles para un extremo de la línea P1 en el algoritmo de 
recorte de líneas de NLN. 
 
 
3.11 Recorte De Poligonos 
 
 
 
 
 
 
 
 Antes del corte Después del corte 
 
Figura 3-34 Despliegue de un polígono que se procesó por medio de un algoritmo de recorte de 
líneas. 
 
 Computación Gráfica 59 
Tema 3 
 
 
 
 
 
 
 
 
 
 
 
Figura 3-35 Despliegue de un polígono que se recortó de manera correcta. 
 
 
 
 
 
 
 
 Polígono Recorte Recorte Recorte Recorte 
 Original izquierda derecha abajo arriba 
 
Figura 3-36 recorte de un polígono contra fronteras sucesivas de la ventana. 
 
 
 
 
 V1 V2 
V1 V2 V1 
 
 
 V2 V1 
 V2 V1 V1 
 
 Afuera adentro adentro adentro adentro afuera afuera afuera 
 Guardar V1,V2 guardar V2 guardar V1 no guardar ningún 
 Vértices 
Figura 3-35 procesamiento sucesivo de pares de vértices del polígono contra la frontera 
izquierda de la ventana. 
 
 
3.12 Programas 
 
program transformaciones_geometricas; 
uses crt,graph; 
var 
60 Dpl. Ing. Carlos Balderrama Vásquez 
 Transformaciones Geométricas Bidimensionales
 
 x,y:array[1..10] of real; {arreglos para puntos} 
 i,j,k:integer; {manejo de ciclos} 
 mx,my,m2x,m2y,m210x,m210y:integer; {manejo de pantalla} 
 dg,mg:integer; {inicializar pantalla gráfica} 
 t:integer; {tamaño unidad} 
 t1:string; {impresión de números} 
 tecla:char; {tecla de opción} 
 canpun:integer; {cantidad de puntos} 
 retardo:integer; {retardador de aparición de puntos} 
 
{trazado de escala y ejes*********************************} 
 
procedure trazado_escala; 
begin 
 cleardevice; 
 
 {trazado lineas verticales} 
 
 setcolor(1); 
 m2x:=mx div 2; 
 m210x:=m2x div t; 
 for i:=1 to m210x do 
 begin 
 line(m2x+(i*t),0,m2x+(i*t),my); 
 line(m2x-(i*t),0,m2x-(i*t),my) 
 end; 
 
 {trazado de lineas horizontales} 
 
 m2y:=my div 2; 
 m210y:=m2y div t; 
 for i:=1 to m210y do 
 begin 
 line(0,m2y+(i*t),mx,m2y+(i*t)); 
 line(0,m2y-(i*t),mx,m2y-(i*t)) 
 end; 
 
 {trazado de ejes centrales y marco} 
 
 setcolor(7); 
 line(0,m2y,mx,m2y); 
 line(m2x,0,m2x,my); 
 rectangle(0,0,mx,my); 
 str(t,t1); 
 setcolor(15); 
 outtextxy(10,10,'Valor unidad (pixeles): '+t1); 
end; 
 Computación Gráfica 61 
Tema 3 
 
{menu**************************************************} 
 
procedure menu; 
begin 
 setcolor(10); 
 outtextxy(10,40,'Opciones disponibles:'); 
 outtextxy(10,60,'i:Ingresar puntos'); 
 outtextxy(10,70,'t:Traslación'); 
 outtextxy(10,80,'r:Rotación'); 
 outtextxy(10,90,'e:Escalación'); 
 outtextxy(10,100,'x:Reflexión eje X'); 
 outtextxy(10,110,'y:Reflexión eje Y'); 
 outtextxy(10,120,'-:Reducir'); 
 outtextxy(10,130,'+:Ampliar'); 
 outtextxy(10,140,'f:Finalizar'); 
end; 
 
{trazado de figura ****************************************} 
 
procedure trazado_figura(x1,y1:array of real;canpun1:integer); 
var xx1,yy1,xx2,yy2:integer; 
begin 
 setcolor(12); 
 if canpun1>0 then 
 begin 
 for k:=0 to (canpun1-2) do 
 begin 
 xx1:=m2x+(round(x1[k])*t); 
 yy1:=m2y+((round(y1[k])*t)*(-1)); 
 xx2:=m2x+(round(x1[k+1])*t); 
 yy2:=m2y+((round(y1[k+1])*t)*(-1)); 
 line(xx1,yy1,xx2,yy2); 
 delay(retardo); 
 end; 
 xx1:=m2x+(round(x1[0])*t); 
 yy1:=m2y+((round(y1[0])*t)*(-1)); 
 line(xx1,yy1,xx2,yy2); 
 end; 
end; 
 
{trazado de puntos************************************} 
 
procedure trazado_puntos(x1,y1:array of real;canpun1:integer); 
var xx1,yy1:integer; 
begin 
 if canpun1>0 then 
62 Dpl. Ing. Carlos Balderrama Vásquez 
 Transformaciones Geométricas Bidimensionales
 
 begin 
 setcolor(14); 
 for k:=0 to (canpun1-1) do 
 begin 
 xx1:= m2x+(trunc(x1[k])*t); 
 yy1:= m2y+((trunc(y1[k])*t)*(-1)); 
 circle(xx1,yy1,2); 
 end; 
 end; 
end; 
 
{incremento de unidad de escala***************************} 
 
procedure mas_escala; 
begin 
 t:=t+1; 
 trazado_escala; 
 menu; 
 trazado_puntos(x,y,canpun); 
 retardo:=1; 
 trazado_figura(x,y,canpun); 
end; 
 
{decremento de unidad de escala****************************} 
 
procedure men_escala; 
begin 
 if (t-1)>=1 then 
 begin 
 t:=t-1; 
 trazado_escala; 
 menu; 
 trazado_puntos(x,y,canpun); 
 retardo:=1; 
 trazado_figura(x,y,canpun); 
 end; 
end; 
 
{ingreso de datos de la figura **************************} 
 
procedure ing_datos; 
begin 
 trazado_escala; 
 setcolor(15); 
 repeat 
 outtextxy(10,50,'¨ Puntos ? ( 2<P<10 ):'); 
 gotoxy(25,4); 
 Computación Gráfica 63 
Tema 3 
 readln(canpun) 
 until ((canpun>2) and (canpun<10)); 
 trazado_escala; 
 
 {borrado de puntos} 
 
 for j:=1 to 10 do 
 begin 
 x[j]:=0; 
 
 y[j]:=0; 
 end; 
 for j:=1 to canpun do 
 begin 
 setcolor(15); 
 str(j,t1); 
 outtextxy(10,50,'Ingresar punto X'+t1+' : '); 
 gotoxy(23,4); 
 readln(x[j]); 
 str(j,t1);outtextxy(10,70,'Ingresar punto Y'+t1+' : '); 
 gotoxy(23,5); 
 readln(y[j]); 
 trazado_escala; 
 trazado_puntos(x,y,j); 
 end; 
 menu; 
 delay(1000); 
 retardo:=1000; 
 trazado_figura(x,y,canpun); 
 menu; 
end; 
 
{procedimiento traslación ***************************} 
 
procedure traslacion(var x1,y1:array of real;canpun1:integer); 
var tx,ty,txx,tyy:integer; 
begin 
 setcolor(15); 
 outtextxy(10,150,'Ingresar traslaci¢n X : '); 
 gotoxy(26,10); 
 readln(tx); 
 outtextxy(10,165,'Ingresar traslaci¢n Y : '); 
 gotoxy(26,11); 
 readln(ty); 
 
 {traslaci¢n en eje x} 
64 Dpl. Ing. Carlos Balderrama Vásquez 
 Transformaciones Geométricas Bidimensionales
 
 
 for txx:=1 to abs(tx) do 
 begin 
 for k:=0 to (canpun-1) do 
 begin 
 if tx<0 then 
 x1[k]:=x1[k]-1 
 else 
 x1[k]:=x1[k]+1; 
 end; 
 retardo:=1; 
 trazado_figura(x1,y1,canpun); 
 delay(200) 
 end; 
 
 {traslaci¢n en eje y} 
 
 for tyy:=1 to abs(ty) do 
 begin 
 for k:=0 to (canpun-1) do 
 begin 
 if ty<0 then 
 y1[k]:=y1[k]-1 
 else 
 y1[k]:=y1[k]+1; 
 end; 
 retardo:=1; 
 trazado_figura(x1,y1,canpun); 
 delay(200) 
 end; 
 delay(100); 
 trazado_escala; 
 menu; 
 trazado_puntos(x1,y1,canpun); 
 retardo:=1000; 
 trazado_figura(x1,y1,canpun); 
end; 
 
{procedimiento rotación *********************************} 
 
procedure rotacion(var x1,y1:array of real;canpun1:integer); 
var ar,pr:integer; 
 agr,xr,yr,x11,y11:real; 
begin 
 setcolor(15); 
 outtextxy(10,150,'Angulo de rotaci¢n : '); 
 gotoxy(26,10); 
 Computación Gráfica 65 
Tema 3 
 readln(ar); 
 outtextxy(10,165,'Punto de rotaci¢n : '); 
 gotoxy(26,11); 
 readln(pr); 
 xr:=x1[pr-1]; 
 yr:=y1[pr-1]; 
 {rotaci¢n} 
 agr:=ar*pi/180; 
 for k:=0 to (canpun-1) do 
 begin 
 x11:=(xr+((x1[k]-xr)*cos(agr))-((y1[k]-yr)*sin(agr))); 
 y11:=(yr+((x1[k]-xr)*sin(agr))+((y1[k]-yr)*cos(agr))); 
 x1[k]:=round(x11); 
 y1[k]:=round(y11); 
 end; 
 trazado_escala; 
 menu; 
 trazado_puntos(x1,y1,canpun); 
 retardo:=1000; 
 trazado_figura(x1,y1,canpun); 
end; 
 
{procedimiento escalaci¢n *****************************} 
 
procedure escalacion(var x1,y1:array of real;canpun1:integer); 
var sx,sy,sxx,syy:real; 
begin 
 setcolor(15); 
 outtextxy(10,150,'Ingresar escalaci¢n X : '); 
 gotoxy(26,10); 
 readln(sx); 
 outtextxy(10,165,'Ingresar escalaci¢n Y : '); 
 gotoxy(26,11); 
 readln(sy); 
 for k:=0 to (canpun-1) do 
 begin 
 x1[k]:=x1[k]*sx; 
 y1[k]:=y1[k]*sy; 
 end; 
 trazado_escala; 
 menu; 
 trazado_puntos(x1,y1,canpun); 
 retardo:=1000; 
 trazado_figura(x1,y1,canpun); 
end; 
 
{procedimiento reflexi¢n eje X ***************************} 
66 Dpl. Ing. Carlos Balderrama Vásquez 
 Transformaciones Geométricas Bidimensionales
 
 
procedure reflexionX(var x1,y1:array of real;canpun1:integer); 
begin 
 for k:=0 to (canpun-1) do 
 begin 
 y1[k]:=y1[k]*(-1); 
 end; 
 trazado_escala; 
 menu; 
 trazado_puntos(x1,y1,canpun); 
 retardo:=1000; 
 trazado_figura(x1,y1,canpun); 
end; 
 
{procedimiento reflexi¢n eje Y *************************} 
 
procedure reflexionY(var x1,y1:array of real;canpun1:integer); 
begin 
 for k:=0 to (canpun-1) do 
 begin 
 x1[k]:=x1[k]*(-1); 
 end; 
 trazado_escala; 
 menu; 
 trazado_puntos(x1,y1,canpun); 
 retardo:=1000; 
 trazado_figura(x1,y1,canpun); 
end; 
 
{*********programa principal**********************} 
 
begin 
 {valores iniciales} 
 t:=10; 
 canpun:=0; 
 {inicializando pantalla grafica} 
 initgraph(dg,mg,'c:\bp\bgi'); 
 if GraphResult<>grOK then 
 begin 
 clrscr; 
 writeln('Error de modo gr fico : ',GraphErrorMsg(GraphResult)); 
 halt 
 end; 
 mx:=getmaxx; 
 my:=getmaxy; 
 trazado_escala; 
 setcolor(10); 
 Computación Gráfica 67 
Tema 3 
 trazado_escala; 
 menu; 
 tecla:=' '; 
 repeat 
 case tecla of 
 '+':mas_escala; 
 '-':men_escala; 
 'i','I':ing_datos; 
 't','T':traslacion(x,y,canpun); 
 'r','R':rotacion(x,y,canpun); 
 'e','E':escalacion(x,y,canpun); 
 'x','X':reflexionX(x,y,canpun); 
 'y','Y':reflexionY(x,y,canpun); 
 end; 
 tecla:=upCase(readkey); 
 until (tecla='F'); 
 cleardevice; 
 closegraph; 
 writeln('Presionar ENTER para cerrar programa.'); 
 readln; 
end. 
 
 
68 Dpl. Ing. Carlos Balderrama Vásquez

Continuar navegando

Materiales relacionados