Sei sulla pagina 1di 31

1

Silvia Castro UNS DCIC - 2007


Dpto. de Ciencias e Ingeniera de la Computacin
Uni versidad Nacional del Sur
ElMundo2D
Silvia Castro UNS DCIC - 2007
Introduccin
Los distintos procedimientos que vimos para mostrar las
primitivas de salida y sus atributos nos permiten crear una
gran variedad deimgenes ygrficos.
A partir de estas primitivas podemos generar escenas 2D,
cambiando, por ejemplo, orientaciones y tamao de las
distintas componentes; tambin podemos generar
animaciones moviendo los objetos en la escena a lo largo de
distintoscaminos.
Estos cambios en orientacin, tamao y forma se llevan a
cabo mediante transformaciones geomtricas que alteran las
descripcionesdelascoordenadasdelosobjetos.
2
Silvia Castro UNS DCIC - 2007
Introduccin
La traslacin, la rotacin, el escalado y el sesgado son
ejemplos de transformaciones geomtricas. Estas
transformaciones son lineales; tambin podemos usar
transformacionesnolineales.
Veremosprimerocmollevaracaboestastransformacionesy
luego,apartirdeesto,veremoscmopodemoscrearescenas
2Dapartirdestasydeobjetosprimitivos.
Silvia Castro UNS DCIC - 2007
Transformaciones
Las transformaciones geomtricas nos permiten mapear
puntosdeunareginaotra
ypuedenaplicarsea:
Primitivasdedibujado
Coordenadasdepixel deunaimagen
3
Silvia Castro UNS DCIC - 2007
Transformaciones
Las transformaciones geomtricas nos permitirn, entre otras
cosas,
Mapear puntos de un sistema de coordenadas en otro.
Cambiar la forma de los objetos
Posicionar objetos en una escena
Crear mltiples copias de objetos en la escena
Proyectar escenas tridimensionales en la pantalla
Crear animaciones

Silvia Castro UNS DCIC - 2007


Transformaciones Geomtricas en 2D

y
x
t
t
y
x
y
x
1 0
0 1

Traslacin
Esta operacin se usa para mover un objeto o grupo de
objetos de manera lineal a una nueva ubicacin en el espacio
bidimensional.
Trasladar un objeto una distancia t
x
en x y una distancia t
y
en y se
expresa como:
y
x
t y y
t x x
+ =
+ =

4
Silvia Castro UNS DCIC - 2007
Transformaciones Geomtricas en 2D
Escalado
Es una transformacin que permite cambiar el tamao o
la proporcin de un objeto o grupo de objetos. Hay escalados
proporcionales ynoproporcionales.
Escalar unobjeto ene
x
segn xyene
y
segn y seexpresa como:

y
x
e
e
y
x
y
x
0
0

y e y
x e x
y
x
=
=

Silvia Castro UNS DCIC - 2007


Transformaciones Geomtricas en 2D
Sesgado
Un objeto se puede sesgar tanto en sentido horizontal
como ensentido vertical.
Sesgar unobjeto ensentido horizontalseexpresa como:

y
x a
y
x
1 0
1

y y
ay x x
=
+ =

5
Silvia Castro UNS DCIC - 2007
Transformaciones Geomtricas en 2D
Rotacin
Esta transformacin geomtrica se usa para mover un
objeto ogrupo deobjetos alrededor deunpunto.
Rotar unobjeto unngulo ensentido horario se expresa como:

y
x
y
x


cos sin
sin cos



cos sin
sin cos

y x y
y x x
+ =
=
Silvia Castro UNS DCIC - 2007
Transformaciones Geomtricas en 2D
La matriz de rotacin tiene ciertas
propiedades

y
x
y
x


cos sin
sin cos

Lanorma decada fila es uno:


Lasfilassonortogonales:
Decimosquelasmatricesderotacinsonortonormales.
Teniendo esto en cuenta vemos entonces que la inversa de una
matrizortonormal essutraspuesta.
( ) ( ) 1 cos sin
2 2
= +
( ) 0 cos sin sin cos = +
6
Silvia Castro UNS DCIC - 2007
Transformaciones Geomtricas en 2D
Las transformaciones de traslacin y rotacin se conocen
como transformaciones de cuerpo rgido. Estas
transformaciones preservan las distancias ylosngulos.
Sialastransformacionesdecuerporgidolesadicionamoslas
transformaciones de reflexin y escalado uniforme, tenemos
las transformaciones de similaridad. stas preservan los
ngulos, las distancias entre puntos cambian en una
proporcin fija y se mantiene una forma similar (tringulos
similares,crculosmapean acrculos,).
Silvia Castro UNS DCIC - 2007
Transformaciones Geomtricas en 2D
Si a las transformaciones de similaridad les adicionamos las
transformaciones de desplazamiento y escalado no uniforme,
tenemoslastransformacionesafines.
staspreservanlaslneasparalelas.
7
Silvia Castro UNS DCIC - 2007

y
x
t
t
y
x
y
x
*
1 0
0 1

Si tenemos las transformaciones :

y
x
e
e
y
x
y
x
*
0
0

y
x
y
x
*
cos sin
sin cos



podemos escribir cada punto transformado como:
p =p+T
p =Ep
p =Rp
Transformaciones Geomtricas en 2D
Silvia Castro UNS DCIC - 2007
Transformaciones Geomtricas en 2D
Qu ocurre cuando queremos realizar una determinada
transformacin conrespecto aunpunto cualesquiera?
Supongamos que queremos rotar 90 grados con respecto al punto
(1.5,5)
8
Silvia Castro UNS DCIC - 2007
Transformaciones Geomtricas en 2D
No podemos aplicar las frmulas que vimos
directamente ya que definen rotaciones con
respecto alorigen.
Cmo se ubicara la casita si aplicamos la transformacin que
vimos?
Qu pasos debemos seguir para
lograr nuestro objetivo?
Silvia Castro UNS DCIC - 2007

1
*
1 0 0
1 0
0 1
1

y
x
t
t
y
x
y
x
Escribimos las transformaciones como:
Estamos trabajando en coordenadas homogneas.
As podemos escribir cada punto como:
p =Tp
p =Ep
p =Rp

1
*
1 0 0
0 0
0 0
1

y
x
e
e
y
x
y
x

1
*
1 0 0
0 cos sin
0 sin cos
1

y
x
y
x


Transformaciones Geomtricas en 2D
9
Silvia Castro UNS DCIC - 2007
podemos aplicar sucesivas transformaciones a un punto concatenando las
matrices de transformacin, incluida la traslacin. Para responder a la
pregunta:
Al poder escribir cada punto como:
p =Tp
p =Ep
p =Rp
p =T
1
pp=Rp p=T
1
p
p=T
1
R p
p=T
1
R T
1
p

Aplicamos las transformaciones del siguiente modo:


Qu transformaciones tenemos que aplicar se queremos rotar un objeto
alrededor de un punto cualesquiera?
Transformaciones Geomtricas en 2D
Las matrices aparecen en orden reverso al que son aplicadas las transformaciones.
Silvia Castro UNS DCIC - 2007
La matriz de transformacin que se aplica a cada punto es:
Dadas las transformaciones:
p=T
1
R T
1
p
Esto significa que estamos haciendo primero la translacin T
1
, luego la
rotacin R y luego la translacin T
1
.
Transformaciones Geomtricas en 2D
M
T
=T
1
R T
1
El orden importa! Recuerden que
AB BA
10
Silvia Castro UNS DCIC - 2007
Ejemplo:
Se aplican las transformaciones de rotacin de 90 y reflexin sobre x.
Transformaciones Geomtricas en 2D
Silvia Castro UNS DCIC - 2007
DelMundodelosObjetos2D
alaPantalla
11
Silvia Castro UNS DCIC - 2007
Del mundo a la pantalla
Vistas 2D de un mundo 2D
Silvia Castro UNS DCIC - 2007
Consideraremos ahora los mecanismos formales para mostrar vistas de un
mundo 2D en un dispositivo de salida.
Vistas 2D de un mundo 2D
12
Silvia Castro UNS DCIC - 2007
Cules son las distintas etapas que deben atravesarse?
Vistas 2D de un mundo 2D
Coord. del objeto Coord. del mundo
x
w
y
w
Silvia Castro UNS DCIC - 2007
Del mundo a la pantalla
Vistas 2D de un mundo 2D
x
w
y
w
x
w
y
w
x
v
y
v
13
Silvia Castro UNS DCIC - 2007
Del mundo a la pantalla
Vistas 2D de un mundo 2D
Del Objeto Del Mundo Del Viewport Del Viewport
Cules son las transformaciones que deben aplicarse para ir
desde las coordenadas del objeto a las de la pantalla?
Silvia Castro UNS DCIC - 2007
Dibujamos varios rectngulos en OpenGL
Supongamos que queremos dibujar el siguiente grupo de objetos en OpenGL
glLoadIdentity()
DibujoR()
glLoadIdentity()
glTranslate()
DibujoR()
glLoadIdentity()
glRotate()
DibujoR()
Hacerlo de este modo es muy ineficiente, porque se debe especificar la
transformacin de viewing y luego el resto cada vez que se dibuja un
rectngulo.
Una mejor forma de hacerlo es con las pilas de matrices. La matriz de
modelado y la de vista conforman una nica matriz que es el tope de la pila
de matrices.
14
Silvia Castro UNS DCIC - 2007
Cmo dibujaramos el grupo de rectngulos?
Me sito en el origen de un sistema de referencia Dibujo el rectngulo
negro y dejo marca para volver aqu. Me traslado a donde debo dibujar el
rectngulo rojo y lo dibujo. Recupero la marca y vuelvo all.
DibujarRectnulos()
DibujarRectngulo()
glPushMatrix()
glTranslatef()
DibujarRectangulo()
glPopMatrix()
glPushMatrix()
glRotatef()
DibujarRectangulo()
glPopMatrix()

Dibujamos varios rectngulos en OpenGL


Silvia Castro UNS DCIC - 2007
Del mundo al viewport
Transformacin del mundo al viewport

=
min
min max
min max
min
min max
min max
XW
XW XW
XV XV
XV x
XW XW
XV XV
x
w v
min max
min
min max
min
YW YW
YW y
YV YV
YV y
w v

Del mundo al viewport podemos despejar cada coordenada; para x es


min max
min
min max
min
XW XW
XW x
XV XV
XV x
w v

( ) B Ax AXW XV Ax x
w w v
+ = + =
min min
15
Silvia Castro UNS DCIC - 2007
La transformacin del mundo al viewport se hace
habitualmente en dos etapas: del mundo al espacio de clipping
y de ste al espacio de la pantalla.
Transformacin del mundo al viewport
Silvia Castro UNS DCIC - 2007
OpenGL brinda una funcin para establecer la transformacin del Viewport
Transformacin del mundo al viewport
16
Silvia Castro UNS DCIC - 2007
Clipping
Es el proceso de determinar qu primitivas y partes de primitivas
caen dentro del volumen de clipping definido por el programa de
aplicacin.
Generalmente, cualquier proce-
dimiento que identifica aquellas
porciones de una escena que
estn dentro o fuera de una
regin especificada se
denomina algoritmo declipping.
La regin contra la cual se
clipea un objeto se denomina
ventana declipping.
Silvia Castro UNS DCIC - 2007
Las primitivas que caen dentro de la ventana de clipping son
aceptadas para su posteriorrenderizacin.
Las primitivas que no caen dentro de la ventana de clipping son
rechazadas.
Lasprimitivas que estn slo parcialmente dentro delaregin devista
deben ser recortadas de modo tal que cualquier parte de las mismas
que est fuera delaregin searemovida.
Clipping
17
Silvia Castro UNS DCIC - 2007
Consideraremos algoritmos para elclippingdelossiguientes tipos de
primitivas:
- Clippingdepuntos
- Clippingderectas
- Clippingdepolgonos
- Clippingdecurvas
El clipping de rectas y polgonos son componentes estndar de la
mayora de los paquetes grficos. Los objetos curvos se aproximan
con lneas rectas y polgonos planos a los que se aplican los
algoritmos declippingderectas ypolgonos.
Clipping
Silvia Castro UNS DCIC - 2007
Silaprimitiva es unpunto:
Eneste caso sabemos que si severifica que:
elpunto est dentro delaventana;si no,est fuera delamisma.
xmin <x<xmax ymin <y<ymax
Clipping
18
Silvia Castro UNS DCIC - 2007
tenemos las siguientes posibilidades:
- Lneas que estn completamente dentro delaventana
- Lneas que estn completamente afuera delaventana
- Lneas que intersectan laventana
Silaprimitiva es una lnea:
Clipping
Silvia Castro UNS DCIC - 2007
Elalgoritmo declippingdebe:
-Identificar y dibujar las lneas que estn completamente dentro de la
ventana (AB).
- Identificar ydescartar las lneas que estn completamente afuera dela
ventana (GH,EF).
- Encontrar las intersecciones de las lneas que estn parcialmente
dentro de la ventana y dibujar las secciones de las mismas que estn
dentro delaventana (IJ,CD).
Clipping
19
Silvia Castro UNS DCIC - 2007
Para
Identificarydibujarlaslneasqueestncompletamentedentrodelaventana.
Identificarydescartarlaslneasqueestncompletamenteafueradelaventana.
Encontrar las intersecciones de las lneas que estn parcialmente dentro de la
ventanaydibujarlasseccionesdelasmismasqueestndentrodelaventana.
necesitamos las representaciones matemticas de esas rectas y de la
ventana.
Por fuerza bruta podramos resolver ecuaciones simultneas usando la
ecuacin delarectapara lamisma (y=mx +b)yloscuatro lados dela
ventana.
Problemas:
- Lafrmula slo maneja lneas infinitas
- Nomaneja lneas verticales
Clipping
Silvia Castro UNS DCIC - 2007
Paralalnea utilizaremos laecuacin paramtrica ya que es adecuada
para unsegmento derecta:
x = x
0
+ t(x
1
x
0
) 0 <t <1
y = y
0
+ t(y
1
y
0
)
p(t) = p
0
+ t(p
1
p
0
)
Clipping
20
Silvia Castro UNS DCIC - 2007
Algoritmo de Clipping de Cohen-
Sutherland
( 2D)
Silvia Castro UNS DCIC - 2007
Divideelplano en9regiones:
Ventana
Algoritmo de Cohen-Sutherland
21
Silvia Castro UNS DCIC - 2007
Paraidentificar rpidamente las lneas que estn dentro yfuera delaventana,
les asigna un cdigo de regin de 4 bits a cada uno de los puntos extremos
delsegmento derecta
Losbitssonpuestos en1(uno)deacuerdo a:
bit1punto porarriba delaventana
bit2punto pordebajo delaventana
bit3punto aladerecha delaventana
bit4punto alaizquierda delaventana
Cdigo
Algoritmo de Cohen-Sutherland
Silvia Castro UNS DCIC - 2007
1001 1000 1010
0001 0010
0101 0110 0100
0000
SiCdigo1=0yCdigo2=0
entonces
elsegmento delnea est dentro delaventana
sino
sino
si (Cdigo1andCdigo2)0
entonces
elsegmento delnea est fuera delaventana
nosabemos
Algoritmo de Cohen-Sutherland
22
Silvia Castro UNS DCIC - 2007
Entoncesconsideramostrescasos
Una lnea es trivialmente aceptada si los cdigos de ambos puntos
extremosson 0000.
Unalneapuedesertrivialmente rechazadasilaoperacinAND bit abit
delos cdigos de lospuntosextremos NO es 0000.
Deotromodo,serequierems procesamiento yaquelalneanopuede
serni trivialmente aceptada nitrivialmenterechazada.
Algoritmo de Cohen-Sutherland
Silvia Castro UNS DCIC - 2007
Ejemplos:
ABestrivialmenteaceptadaporque
A:0000
B:0000
CDestrivialmenterechazadaporque
D:0110
C:0101
AND=0100
1001 1000 1010
0001 0010
0101 0110 0100
0000
A
B
C
D
Algoritmo de Cohen-Sutherland
23
Silvia Castro UNS DCIC - 2007
Ejemplos:
GH : es clipeada contra el lmite sup
para obtener as H
HH es rechazada,
GH necesita ms procesamiento(clip
con los bordes superior, inferior,
derecho y luego izquierdo de acuerdo a
como se tienen en cuenta los bordes),
clipeado contra el borde izquierdo se
obtiene G
GG es rechazado,
GH es trivialmente aceptado.
EF necesita ms procesamiento: (no puede ser trivialmente
aceptada o rechazada)
F: 1000 AND E: 0001 = 0000
G
1001 1000 1010
0001 0010
0101 0110 0100
0000
A
B
C
D
G
H
H
E
E
F
Algoritmo de Cohen-Sutherland
Silvia Castro UNS DCIC - 2007
Aplicamos el algoritmo de clipping sobre un segmento de recta. Si ste no puede
aceptarse o rechazarse trivialmente, debemos subdividirlo en dos segmentos;
entonces aplicamos elalgoritmo declippingsobre cada uno deestos segmentos.
Sedebe convenir unorden para chequear cada uno deloslados delaventana:
arriba abajo derecha izquierda
Para realizar la subdivisin en dos
segmentos se calcula el punto de
interseccin; el lado contra el que se
clipea fija o bien x o bien y, que puede
entonces sustituirse enlaecuacin dela
recta
Loscdigos sepueden usar para elegir
ellado delaventana que secruza conel
segmento de recta: si los cdigos
difieren en el bit del lado, los puntos
extremos deben cruzar ese lado.
G
1001 1000 1010
0001 0010
0101 0110 0100
0000
A
B
C
D
G
H
H
E
E
F
Algoritmo de Cohen-Sutherland
24
Silvia Castro UNS DCIC - 2007
Algoritmo Cdigo
DE: p (coord. x,y)
Ventana (coord. xmin,ymin,xmax,ymax)
DS: codigo
codigo centro
si x<xmin
entonces
codigo codigo or izquierda
sino
si x>xmax
entonces
codigo codigo or derecha
si y<ymin
entonces
codigo codigo or abajo
sino
si y>ymax
entonces
codigo codigo or arriba
Suponemos que el cdigo
es una constante:
centro 0000
izquierda 0001
derecha 0002
abajo 0004
arriba 0008
Algoritmo de Cohen-Sutherland
Silvia Castro UNS DCIC - 2007
Algoritmo Descartar Segmento
DE: codigo
p0(coord x0,y0), p1(coord x1,y1)
Ventana (coord xmin,ymin,xmax,ymax)
DS: p (coord x,y)
si (codigo and arriba)<>0
entonces
x = x0 + (x1 x0) * (ymax y0)/(y1 y0); y = ymax;
sino
si (codigo and abajo)<>0
entonces
x = x0 + (x1 x0) * (ymin y0)/(y1 y0); y = ymin;
sino
si (codigo and derecha)<>0
entonces
y = y0 + (y1 y0) * (xmax x0)/(x1 x0); x = xmax;
sino
si (codigo and izquierda)<>0}
entonces
y = y0 + (y1 y0) * (xmin x0)/(x1 x0); x = xmin;
Algoritmo de Cohen-Sutherland
25
Silvia Castro UNS DCIC - 2007
Algoritmo Clipping
DE:p0(coord.x0,y0),p1(coord.x1,y1)
Ventana (coordenadas xmin,ymin,xmax,ymax)
DS:p0(coordenadasx0,y0),p1(coordenadasx1,y1)
SeDibuja (booleano)
Cdigo(p0,Ventana,codigo0);Cdigo(p1,Ventana,codigo1);
si (codigo0=centro)and(codigo1=centro)
entonces
SeDibuja verdadero
sino
si (codigo0andcodigo1)<>centro
entonces
SeDibuja falso
sino
si codigo0<>centro
entonces
Descartar Segmento (codigo0,p0,p1,p)
Clipping(p,p1,Ventana,SeDibuja);p0p
sino
Descartar Segmento (codigo1,p1,p0,p)
Clipping(p0,p,Ventana,SeDibuja);p1p
Algoritmo de Cohen-Sutherland
Silvia Castro UNS DCIC - 2007
El clipping de polgonos no puede hacerse con los algoritmos de
clippingdelneas ya que noseobtiene unrea cerrada.
Elclippingdelneas individuales conducea:
Algoritmo de Sutherland-Hodgeman
26
Silvia Castro UNS DCIC - 2007
Polgonodeentrada:<1,2,3> donde 12,23,31sonlados
Elclippingdepolgonos debe hacerse demodo tal que seobtenga el
polgono:
Dadoelpolgono que seve enlafigura:
Polgonodesalida:<1,2,3,4,5,6>
Algoritmo de Sutherland-Hodgeman
Silvia Castro UNS DCIC - 2007
Podemos hacer lo siguiente: por cada pixel en el polgono, decidir si
est dentro del volumen de vista. Esto funciona, pero es demasiado
ineficiente ya que hace laconversin scandetodo elpolgono aunque
slo dibuja las partes visibles.Esteproceso es denominado scissoring
(clippingonthefly durante laconversin scan).
Algoritmo de Sutherland-Hodgeman
27
Silvia Castro UNS DCIC - 2007
El algoritmo de Sutherland-
Hodgeman procesa cada polgono,
en orden, con cada uno de los
bordes.
Izquierdo Derecho Abajo Arriba
Algoritmo de Sutherland-Hodgeman
Silvia Castro UNS DCIC - 2007
Paracada uno delosbordes delaventana,seprocesan todos losvrtices
del polgono; se genera un conjunto de vrtices que se utilizar con el
prximo borde.
En cada paso del procesamiento, pueden presentarse 4 casos posibles
cuando seva deunpunto extremo delsegmento delnea alotro.
Afuera Adentro
Guardar 1,2
Adentro Adentro
Guardar 3
Adentro Afuera
Guardar 4
Afuera Afuera
No guardar nada
Elclippingdelpolgono 1234conelborde izquierdo delaventana genera
elpolgono 1234.
Algoritmo de Sutherland-Hodgeman
28
Silvia Castro UNS DCIC - 2007
Entrada
Salida
Izquierdo Derecho Inferior Superior
{I
4
, I
2
}
3
I
3
1
I
1
{I
2
,3}
{I
4
, I
2
}
3
I
3
1
2
3
1
I
1
{I
2
,3}
Ejemplo
Algoritmo de Sutherland-Hodgeman
Silvia Castro UNS DCIC - 2007
El algoritmo de Sutherland-Hodgeman clipea correctamente los polgonos
convexos.Lospolgonoscncavoslosclipea conlneasextraas:
Esto ocurre porque los polgonos cncavos pueden generar mltiples reas
pero elalgoritmo slo generauna lista devrtices deentrada.
Enelejemplo,elpunto 1 seune alpunto 6alolargodelborde izquierdo de
laventana.
Algoritmo de Sutherland-Hodgeman
29
Silvia Castro UNS DCIC - 2007
La Bounding Box ms simple (o extent) es el menor rectngulo,
alineado conlaventana, que contiene al polgono.Se puede evitar el
clipeado detallado depolgonos complejos chequeando si labounding
box est completamente dentro ocompletamente fuera delaventana.
Siest parcialmente adentro,es necesario unclipping detallado.
Clipping de otras primitivas
Silvia Castro UNS DCIC - 2007
Para curvas y superficies es dificultoso encontrar algoritmos
generales.
Elproblema seevita aproximando las curvas por segmentos delneas
y las superficies mediante polgonos planos y clipeando estas
primitivas deacuerdo alovisto.
Clipping de otras primitivas
30
Silvia Castro UNS DCIC - 2007
Del mundo a la pantalla
Del mundo 2D a la pantalla
E. del Objeto E del Mundo E del Viewport
Qu tareas se llevan a cabo dentro de cada Espacio? Qu
transformaciones? Cules son las transformaciones que
permiten pasar de un espacio al otro?
E de Clipping
Silvia Castro UNS DCIC - 2007
Bibliografa
ACMSIGGRAPHProceedings
Angel, Edward, Interactive Computer Graphics. A top-down approach with
OpenGL,AddisonWesley,1997,1rstEdition.
Foley, J., van Dam, A., Feiner, S. y Hughes, J., Computer Graphics.
PrinciplesandPractice,AddisonWesley,1992,2ndEdition.
Hearn, D., Baker, M.P., Computer Graphics, C Version, Prentice Hall Inc.,
1997,2ndEdition.
31
Silvia Castro UNS DCIC - 2007

Potrebbero piacerti anche