You are on page 1of 50

Introduccin a la Computacin Grfica (1316)

Algoritmos bsicos de grficos de barrido para dibujar primitivas bidimensionales


Captulo 3 del libro: Introduccin a la Graficacin por Computador
Foley Van Dam Feiner Hughes - Phillips

Esquema General (I)


Ducto de salida Primitivas de salida

Programa de

Modelo de Aplicacin

Aplicacin

Control de Ventanas CopyPixel Control de dispositivo de entrada Medidas de disposit. de entrada Ducto de entrada

Biblioteca Grfica

Atributos de salida

Esquema General (II)

Memoria Biblioteca Grfica


Primitivas

Atributos

Mdulos de discretizacin

Memoria Grfica

Display

Esquema General (III)

Biblioteca Grfica

Primitivas

Controlador

Memoria Grfica

Atributos Copiado de pxeles a la memoria grfica Copiado de pxeles de la memoria grfica

Display

Hardware de pantalla

Discretizacin de lneas

Se considerarn solamente lneas de pendiente 0 <= m <= 1 y lneas de un pxel de grosor.

Discretizacin de lneas

Algoritmo incremental bsico


yi=mxi + B i y luego pintar el pxel (xi,round(yi))

Problemas?
(xi,yi)

(xi,Round(yi))

Discretizacin de lneas

Algoritmo incremental bsico


yi=mxi + B i

yi+1=mxi+1 + B =m(xi +x)+ B= yi + mx Si x=1 yi+1= yi + m


(xi,yi) (xi+1,Round(yi +m))

(xi+1,yi +m)

(xi,Round(yi))

Discretizacin de lneas

Algoritmo de lnea de punto medio


Aritmtica ENTERA <0 =0 NE Q M >0

P=(xp,yp)

Opciones Opciones Pxel para Pxel para Pxel anterior actual siguiente

Discretizacin de lneas

Algoritmo de lnea de punto medio


La representacin explcita de la recta:

y=(dy/dx)x + B
Se transforma en otra implcita:

F(x,y)= ax + by + c = dy x dx y + B dx = 0
Donde:

a=dy ; b=-dx ; c= B dx

Discretizacin de lneas

Algoritmo de lnea de punto medio


Propiedades de F(x,y)
NE Q

F(x,y)=0 en la lnea F(x,y)>0 en los puntos debajo de la lnea P=(xp,yp) F(x,y)<0 en los puntos sobre la lnea
Pxel anterior

M E

Opciones para Pxel actual

Opciones para Pxel siguiente

Aplicamos F al punto M ; d = F(M)=F(xp+1,yp+) Si d > 0 se elige el pxel NE Si d <= 0 se elige el pxel E

Discretizacin de lneas

Algoritmo de lnea de punto medio


d = a(xp + 1) + b(yp + ) + c Llamemos dviejo a este d
P=(xp,yp)
Pxel anterior

NE Q M

E
Opciones para Pxel actual Opciones para Pxel siguiente

Si se eligi el pxel E, cul es el valor dnuevo? dnuevo = a(xp + 2) + b(yp + ) + c

dnuevo = dviejo+ a = dviejo+ dy = dviejo + E

Discretizacin de lneas

Algoritmo de lnea de punto medio


dviejo = a(xp + 1) + b(yp + ) + c
Q NE M E
Opciones para Pxel actual Opciones para Pxel siguiente

P=(xp,yp)
Pxel anterior

Si se eligi el pxel NE, cul es el valor dnuevo? dnuevo = a(xp + 2) + b(yp + 3/2) + c

dnuevo = dviejo + (a+b) = dviejo + (dy-dx) =dviejo +NE

Discretizacin de lneas

Repaso: Algoritmo de lnea de punto medio


Quiero dibujar el segmento entre (x0,y0) y (xfin,yfin) que tienen coordenadas enteras => la recta tiene coeficientes enteros. El primer punto medio est en F(x0+1,y0+)=F( x0,y0)+a+b/2= a+b/2 Dibujo (x0,y0) Defino dnuevo= a + b/2 p=0 Mientras no llegu a xfin Segn el signo de dnuevo elijo y dibujo (xp+1,yp+1) M dnuevo p=p+1 Fin

Discretizacin de lneas

Repaso: Algoritmo de lnea de punto medio


El problema es que dinicio= a + b/2, por lo que hay una fraccin inicial que perjudica todos los clculos posteriores. Solucin?: Multiplicar la funcin F por 2 F(x,y)=(ax + by + c)=2(ax + by + c) Conclusiones: Para cada paso, dnuevo se calcula a partir de una suma entera. El algoritmo se puede generalizar para lneas con pendientes que no estn entre 0 y 1.

Discretizacin de circunferencias

Discretizacin de circunferencias Ecuacin del crculo centrado en el origen: X2 + y2 = R2 Funcin explcita: y=sqrt(R2-x2) y al discretizar queda: y=round(sqrt(R2-x2)) Problemas?

Discretizacin de Circunferencias

Problemas en la forma tradicional de discretizacin de circunferencias

Precisa utilizar raz cuadrada y redondeo Uso de punto flotante Dibujo de la circunferencia con huecos

Discretizacin de Circunferencias

Simetra de 8 lados

Discretizacin de Circunferencias

Algoritmo de crculo de punto medio


P=(xp,yp) E

ME

>0
SE MSE

=0

<0

Opciones Pxel Pxel anterior para actual

Opciones para Pxel siguiente

Discretizacin de Circunferencias

Algoritmo de crculo de punto medio


Se considera solo 45de un crculo, de x=0 a x=y=R/sqrt(2) . dviejo = F(xp+1,yp-)= ( xp+1)2 + (yp-) 2 R2=0 Si dviejo < 0 se escoge E y luego el punto medio es ME dnuevo = F(xp+2,yp-)= ( xp+2)2 + (yp-) 2 R2 dnuevo = dviejo + (2xp + 3) E = (2xp + 3) Si dviejo >= 0 se escoge SE y luego el punto medio es MSE dnuevo = F(xp+2,yp-3/2)= (xp+2)2 + (yp- 3/2)2 R2 dnuevo = dviejo + (2xp2yp+5) SE = (2xp2yp+5 )

Discretizacin de Circunferencias

Algoritmo de crculo de punto medio


E y SE varan en cada paso (en el caso lineal son ctes.).
Las operaciones para el clculo de los dnuevo son enteras. Falta ver cmo comienza el algoritmo. Si se parte del punto (0,R), con R entero el siguiente punto medio es (1,R-), o sea: F(1,R-)=1+( R2-R+)-R2= 5/4 R= dviejo Problema? Solucin: pasar a h=d - hviejo = 1-R Esto funciona porque h comienza y contina con valores enteros

Discretizacin de Circunferencias

Algoritmo de crculo de punto medio


En lugar de preguntar por d<0 se pregunta por h<-1/4 Como h se inicia con enteros y luego sigue con enteros, entonces resulta igual preguntar por h<0 Si un entero es menor que -1/4, tambin es menor que 0.

Discretizacin de Circunferencias

Algoritmo de crculo de punto medio

Rellenado de polgonos

Lnea de rastreo

Rellenado de polgonos

Se utiliza el algoritmo del punto medio

Solamente se dibujan los puntos interiores del polgono.

Rellenado de polgonos
1. Hallar las intersecciones de la lnea de rastreo con todas las aristas del polgono Ordenar las intersecciones aumentando la coordenada x Colocar todos los pxeles entre pares de intersecciones que se encuentren dentro del polgono, utilizando la regla de paridad impar: La paridad es inicialmente par y cada interseccin cambia la paridad; solo se dibuja cuando la paridad es impar.

2. 3.

Rellenado de polgonos

Preguntas a responder para realizar el paso 3


Colocar todos los pxeles entre pares de intersecciones que se encuentren dentro del polgono, utilizando la regla de paridad impar 3.1 Dada una interseccin con un valor X arbitrario y fraccionario, cmo determinamos cul de los dos pxeles a cada lado de la interseccin es el interior? 3.2 Cmo tratamos el caso especial de las intersecciones en coordenadas enteras de los pxeles? 3.3 Cmo tratamos el caso especial del paso 3.2 para vrtices compartidos? 3.4 Cmo tratamos el caso especial del paso 3.2 si los vrtices definen una arista horizontal?

Rellenado de polgonos

Preguntas a responder para realizar el paso 3


3.1 Dada una interseccin con un valor x arbitrario y fraccionario, cmo determinamos cul de los dos pxeles a cada lado de la interseccin es el interior?

Solucin:
Si nos movemos hacia la derecha a una interseccin fraccionaria, y estamos dentro del polgono, redondeamos hacia abajo en la coordenada x de la interseccin (definiendo el pxel interior). Si estamos fuera, redondeamos hacia arriba la coordenada x (definiendo tambin un pxel interior).

Rellenado de polgonos

Preguntas a responder para realizar el paso 3


3.2 Cmo tratamos el caso especial de las intersecciones en coordenadas enteras de los pxeles?

Solucin:
Si el pxel del extremo izquierdo de un tramo tiene coordenada x entera, lo definimos como interior. Si el pxel de extremo derecho tiene coordenada x entera, lo definimos como exterior.

Rellenado de polgonos

Preguntas a responder para realizar el paso 3


3.3 Cmo tratamos el caso especial del paso 3.2 para vrtices compartidos?

Solucin:
En el clculo de paridad, contamos solo los vrtices ymin de las aristas y no los vrtices ymax.

Rellenado de polgonos

Preguntas a responder para realizar el paso 3


3.4 Cmo tratamos el caso especial del paso 3.2 si los vrtices definen una arista horizontal

Solucin:
No se cuentan los vrtices de las aristas horizontales. No son ni ymin ni ymax.

Rellenado de polgonos

Astillas
Cuando hay polgonos con aristas tan cercanas que crean una astilla. Pueden haber lneas de rastreo sin pintar. Se puede solucionar si en lugar de 2 valores posibles para el pxel, se permiten valores de intensidad que varen como funcin de la distancia entre el centro del pxel y la primitiva.

Algoritmo de recorte de lneas de Cohen-Sutherland


F D D B E A G I C H G J I H J A D B C H G

Algoritmo de recorte de lneas de Cohen-Sutherland

Asignacin de cdigos de regin


1001 1000 1010

0001

0000

0010

0101

0100

0110

Algoritmo de recorte de lneas de Cohen-Sutherland


F 1001 B E 0001 0000 C H A G G 0101 0100 I D 1000 D H 1010

E & F = 0001 & 1001 = 0001 C & D = 0000 & 1000 = 0000

0010 J

A & B = 0000 & 0000 = 0000 G & H = 0100 & 0010 = 0000

J I 0110

I & J = 0100 & 0010 = 0000

Se asigna un nmero a cada extremo de un segmento y se le aplica la operacin lgica AND (bit a bit). Si da 0000 se rechaza la lnea trivialmente

Algoritmo de recorte de lneas de Cohen-Sutherland


1001 D 1000 D 0000 C H G G 0101 0100 0110 H 0010 1010

0001

Si no se puede rechazar trivialmente la lnea, se la divide en 2 segmentos / uno o ambos se puedan descartar.

Se divide considerando las aristas que crucen la lnea. Eso se conoce a travs de los cdigos de los puntos extremos. El orden de las aristas es arriba, abajo, derecha, izquierda.

Algoritmo de recorte de lneas de Cohen-Sutherland


D 1001 C 1000 B A 0001 0000 F E 0101 0100 0110 G 0010 1010 I H

Si no se puede rechazar trivialmente la lnea, se la divide en 2 segmentos / uno o ambos se puedan descartar. AD DB y BA Ignoramos DB y a B le asignamos 0000

IE IH y HE. Ignoramos IH. H 0010 HE HF y FE. Ignoramos FE. F 0000 HF HG y GF. Ignoramos HG. G 0000

Recorte de Polgonos

Recorte de Polgonos

Algoritmo de Sutherland-Hodgman

Recorte de Polgonos

Algoritmo de Sutherland-Hodgman
El polgono se compone de una serie de vrtices v1, v2, ..., vn Las aristas se forman de vi a vi+1 y de vn a v1 El algoritmo recorta el polgono con respecto a una sola arista de la ventana por vez. El algoritmo recorre el polgono arista por arista. En cada paso se aaden cero, uno o dos vrtices a la lista de salida. i: primera Hay 4 casos posibles a analizar: salida
Exterior Interior Exterior Interior Exterior p p: segunda s p: salida i: salida (no hay salidas) p s
salida

Interior s

Interior

Exterior s

Recorte de Polgonos

Algoritmo de Sutherland-Hodgman
1. 2. 3. 4. La arista est completamente dentro de las fronteras de recorte se agrega el vrtice p a la lista de salida. Se agrega el punto de interseccin i con la frontera se agrega a la lista de salida. Ambos vrtices se hallan fuera de las fronteras, por lo que no hay salida. El punto de interseccin i y el vrtice p se aaden a la lista de salida.
i: primera
salida

Interior s

Exterior

Interior

Exterior

Interior

Exterior p

Interior

Exterior s

p: segunda s p: salida i: salida (no hay salidas) p s


salida

Eliminacin de Artefactos de Discretizacin (Antialiasing)


Las aristas a veces sufren el efecto de serramiento o escalonamiento. Esto es un efecto del fenmeno de aliasing.

ANTIALIASING

Solucin 1: Aumento de la resolucin

ANTIALIASING

Solucin 2: Muestreo de rea no ponderada


5

Pxel
4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10

Lnea de (1,1) a (9,4)

La lnea se considera como un rectngulo de color que cubre una porcin de la malla. Los pxeles se los consideran como un embaldosado de azulejos. Por columna no hay en general un solo pxel pintado.

ANTIALIASING

Solucin 2: Muestreo de rea no ponderada


5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10

Segn el porcentaje del pxel cubierto por la lnea, es el porcentaje del color negro.

ANTIALIASING

Solucin 2: Muestreo de rea no ponderada


Funcin de ponderacin de caja W Pxel

Regin de superposicin Subvolumen Ws

Lnea deseada

El cubo tiene volumen = 1 Segn el volumen Ws, es la tonalidad de gris del pxel.

ANTIALIASING

Solucin 2: Muestreo de rea no ponderada

reas iguales, a distinta distancia del centro del pxel, se consideran de igual forma en rea no ponderada, y de distinta forma en rea ponderada

ANTIALIASING

Solucin 3: Muestreo de rea ponderada No ponderada versus ponderada rea no ponderada: La intensidad del pxel se define exclusivamente por el rea muestreada.

rea ponderada: La intensidad del pxel est en funcin del rea y de la distancia de la misma al centro del pxel.

ANTIALIASING

Solucin 3: Muestreo de rea ponderada


Funcin de ponderacin de cono W Pxel

Regin de superposicin

Lnea deseada

Segn el porcentaje del pxel cubierto por la lnea, es el porcentaje del color negro.

You might also like