4.- graf-240215 sem-5

55
Ing. Alejandro Coutiño Alfaro Ingeniería en Sistemas Computacionales Instituto Tecnológico de Bochil Fundamentos de Bases de Datos Graficación Graficación 2D. 2.1 Trazo de líneas rectas. 2.2 Representación y trazo de polígonos. 2.3 Transformación bidimensional. 08/03/2015 1 Instituto Tecnológico de Bochil

Upload: gina-edy-hernandez

Post on 23-Sep-2015

234 views

Category:

Documents


5 download

DESCRIPTION

graficacion en 2d

TRANSCRIPT

  • Ing. Alejandro Coutio Alfaro

    Ingeniera en Sistemas Computacionales

    Instituto Tecnolgico de Bochil

    Fundamentos de Bases de Datos

    Graficacin

    Graficacin 2D. 2.1 Trazo de lneas rectas.

    2.2 Representacin y trazo de polgonos.

    2.3 Transformacin bidimensional.

    08/03/2015 1 Instituto Tecnolgico de Bochil

  • La computacin grfica en 2D es la generacin de imgenes digitales por computadora - sobre todo de modelos bidimensionales (como modelos geomtricos, texto y imgenes digitales 2D) y de tcnicas especficas para ello. La palabra puede referirse a la rama de las ciencias de la computacin que comprende dichas tcnicas, o a los propios modelos. La computacin grfica 2D se utiliza principalmente en aplicaciones que fueron desarrolladas originalmente sobre tecnologas de impresin y de dibujo tradicionales, tales como la tipografa, la cartografa, el dibujo tcnico, publicidad, etc. En estas aplicaciones, la imagen bidimensional no es slo una representacin de un objeto del mundo real, sino un artefacto independiente con valor semntico aadido; los modelos bidimensionales son preferidos por lo tanto, porque dan un control ms directo de la imagen que los grficos 3D por computadora (cuyo enfoque es ms semejante a la fotografa que a la tipografa). En muchas areas, tales como la autoedicin, ingeniera y negocios, una descripcin de un documento basado en las tcnicas de computacin 2D pueden ser mucho ms pequeas que la correspondiente imagen digital. Esta representacin tambin es ms flexible ya que puede ser renderizada (Del ingls rendering representacin, reproduccin, interpretacin, versin.) en diferentes resoluciones para adaptarse a los diferentes dispositivos de salida. Por estas razones, documentos e ilustraciones son a menudo almacenados o transmitidos como archivos grficos en 2D.

    08/03/2015 2 Instituto Tecnolgico de Bochil

  • 2.1 Trazo de lneas rectas.

    Linea Recta:

    En geometra euclidiana, la recta o la lnea recta, se extiende en una misma direccin, existe en una sola dimensin y contiene infinitos puntos; est compuesta de infinitos segmentos (el fragmento de lnea ms corto es el que une dos puntos). Tambin se describe como la sucesin continua e indefinida o infinita de puntos en una sola dimensin, es decir, no posee principio ni fin.

    La recta o la lnea recta es un trazo largo y continuo en una sola direccin, la que permanecer invariable durante toda su extensin.

    La linea es una de las primitivas bsicas en Computacin Grfica y de la Geometria Computacional. Viene dada por la ecuacin y=mx+b, donde m es la pendiente de la recta y b es el corte con el eje Y.

    08/03/2015 3 Instituto Tecnolgico de Bochil

    A B

  • Trazo: Delineacin con que se forma el diseo o dibujo de cualquier cosa.

    Punto: es una "seal" muy pequea con forma circular originalmente y perceptible a simple vista; y la unin sucesiva de stos forma una linea que tiene una direccin, magnitud, un punto de origen (DONDE SE INICIA EL TRAZO DE LA RECTA ) y punto final (HASTA DONDE LLEGA EL TRAZO); y al aplicarse estos elementos en algn grfico o imagen, describe un contorno o un borde al que se llama trazo.

    Renderizacin. Es el proceso de generar una imagen desde un modelo 2D o 3D (o modelos en lo que colectivamente se podra llamar un archivo de escena), por medio software. Adems, los resultados de un modelo de este tipo puede ser llamado un renderizado.

    08/03/2015 4 Instituto Tecnolgico de Bochil

  • Lneas punto a punto Es la tcnica ms rpida, una vez determinados los puntos a unir se comienza moviendo el lpiz desde uno de ellos hacia el otro. Mientras se hace este movimiento se debe mantener la vista sobre el punto de destino. Esto ltimo nos permitir conservar la direccin.

    Tipos de Lineas

    Lneas compuestas Una segunda tcnica es proceder mediante trazos; como si se estuviesen dibujando una sucesin de lneas ms cortas. La interrupcin del trazo permite verificar el rumbo del trazo y se corregir si es necesario. Los trazos sucesivos no se superponen a fin de posibilitar uniformidad de espesor. Se deja una pequesima luz entre ellos de forma tal que apenas resulte perceptible la interrupcin y mantenga el espesor uniforme.

    08/03/2015 5 Instituto Tecnolgico de Bochil

  • Lneas de construccin Una tercera tcnica, particularmente aplicable cuando se est planteando el dibujo, es utilizar lneas de tanteo. Resulta un poco ms lenta que las anteriores, pero es de gran ayuda para obtener lneas rectas particularmente cuando son muy largas. Consiste en insinuar la lnea en forma apenas visible con trazos muy suaves. Idealmente, solo el dibujante debera percibir esos trazos de tanteo. Se observa el resultado obtenido. Se introducen las correcciones necesarias hasta lograr definir el trayecto correcto. Entonces se comienza el trazado de la lnea en forma similar al primer mtodo, pero ahora con una gua visual. Si fuese necesario, porque se utilizaron demasiadas lneas de tanteo, se podrn borrar las que no sirven, antes del trazado definitivo.

    08/03/2015 6 Instituto Tecnolgico de Bochil

  • Los algoritmos de graficacion resuelven problemas relacionados con las aplicaciones graficas.

    Ejemplos de tales aplicaciones son:

    Despliegue de funciones matematicas de dos variables que dificilmente se pueden dibujar a mano. Realizacion de prototipos. Antes de construir un dispositivo, equipo o incluso automoviles y aviones es importante que sus diseos puedan apreciarse y corregirse de manera eficaz y economica. Simulacion por computadora. Para saber si una solucion a un problema de ingenieria realmente funciona resulta muy practico observar la solucion en accion, un ejemplo de esto son los simuladores de trafico donde al construir digamos un distribuidor vial podemos validar su correcto diseo o jugar con el para hacerle mejoras

    Algoritmos de graficacion

    08/03/2015 7 Instituto Tecnolgico de Bochil

  • Videojuegos. Muchos programas de simulacion terminan luego convirtiendose en videojuegos. Sin embargo, los video-juegos son una industria por si misma que ha evolucionado a grandes pasos. Animacion por computadora. En realidad los video-juegos son una rama de la animacion por computadora donde el usuario interactua, sin embargo, la animacion por computadora ha permitido la produccion de peliculas en menor tiempo, a menor costo y con mejores efectos especiales. Recorridos virtuales. La arquitectura se ha beneficiado de esta rama, en lugar de hacer una maqueta, un arquitecto puede disear un inmueble y presentarlo a un cliente dandole.

    08/03/2015 8 Instituto Tecnolgico de Bochil

  • Algoritmos de lneas rectas

    Existen varios algoritmos que permiten trazar una lnea recta, entre estos estn: Algoritmo bsico Algoritmo DDA (analizador diferencial digital/digital differential analyzer) Algoritmo de lnea de Bresenham Algoritmo de Xiaolin Wu

    Un Algoritmo para el trazado de una lnea recta es aquel que a traves de una secuencia logica de comandos y tomando como base los principios, asi como tambien conceptos de la geometria analitica y del algebra lineal.

    Un algoritmo de lineas rectas debe cumplir con lo siguiente:

    La secuencia de pxeles debe ser lo ms recta que se pueda. Las lneas deben tener el mismo grosor e intensidad sin importar el grado de inclinacin Las lneas deben dibujarse lo ms rpido posible

    Un algoritmo es un conjunto ordenado y finito de pasos que nos permite hallar una solucin a un problema. Tambin se puede decir que es una secuencia de pasos que conducen a la realizacin de una tarea.

    08/03/2015 9 Instituto Tecnolgico de Bochil

  • Algoritmo bsico de la recta o mtodo general El algoritmo bsico. Es un algoritmo basado en la ecuacin de la recta y utiliza la ecuacin de la recta expresada como: y = mx + b

    El algoritmo del mtodo general, resulta de la implementacin directa de la ecuacin general de la lnea recta: y = m x + b donde y = y2 y1 y x = x2 x1 en la cual normalmente se despeja b (que es el valor de y2 para la X indicada) quedando:

    08/03/2015 10 Instituto Tecnolgico de Bochil

  • Este algoritmo presenta tres problemas: Si la pendiente es mayor que 1 se presentan espacios entre los puntos Los valores calculados son reales, lo cual requiere un proceso de redondeo que consume tiempo La multiplicacin sucesiva de la pendiente m que consume tiempo (10 veces ms) que una simple suma

    b = y1 m x Otra formula que se usa en este proceso es el valor de la pendiente entre puntos que delimitan una lnea: m = (y2 y1) / (x2 x1) La ecuacin b = y1 mx se traza con un proceso cclico en el cual x cambia unitariamente desde x2 y x1 y se calcula y2, la cual toma el lugar de y1.

    Se necesita una multiplicacin flotante, una suma y un redondeo por cada paso!

    08/03/2015 11 Instituto Tecnolgico de Bochil

  • Pseudo Cdigo - Algoritmo bsico

    Basico/general(entero x1, entero y1, entero x2, entero y2) inicio flotante m entero x, y, xi, yi, xf, yf si x1=x2 si es afirmativo inicio para y=y1 hasta yx2 si-si inicio xi=x2; yi=y2; xf=x1; yf=y1 fin si-no inicio xi=x1; yi=y1; xf=x2; yf=y2 fin m=(flotante)(yf - yi) / (xf - xi) para x=xi hasta x

  • Explicacin del algoritmo

    Es un algoritmo que se basa en el clculo y la evaluacin de X (x) y un Y(y). Por medio de las siguientes ecuaciones:

    DeltaX = DeltaY / m DeltaY = m * DeltaX

    Se efecta un muestreo de la lnea en intervalos unitarios en una coordenada y se determinan los valores enteros correspondientes ms prximos a la trayectoria de la lnea para la siguiente coordenada.

    Se aceptan como datos de entradas las dos posiciones de los pixeles correspondientes a los extremos de la lnea P1(Xinicial, Yinicial) y P2(Xfinal, Yfinal). Las diferencias horizontal y vertical entre las posiciones de los extremos dados, se asignan a las varialbles X y Y respectivamente. La diferencia con la mayor magnitud determina el valor del parmetro Pasos. Se procede a determinar la compensacin necesaria (incremento), para generar la posicin del pixel siguiente a lo largo de la trayectoria de la lnea. Luego, se ilumina la posicin en la pantalla. y se repite este proceso cclico Pasos Veces, hasta obtener la lnea deseada.

    08/03/2015 13 Instituto Tecnolgico de Bochil

  • public static void RectaSimple(int x0, int y0, int x1, int y1, Graphics g){ int dx = x1 - x0; int dy = y1 - y0; g.drawLine(x0, y0, x0, y0); if (dx != 0){ float m = (float) dy / (float) dx; float b = y0 - m*x0; if(x1 > x0) dx = 1; else dx = -1; while (x0 != x1) { x0 += dx; y0 = Math.round(m*x0 + b); g.drawLine(x0, y0, x0, y0); } } } }

    Cdigo Java - Algoritmo bsico

    08/03/2015 14 Instituto Tecnolgico de Bochil

  • El siguiente algoritmo es una mejora sobre el anterior. el algoritmo dibuja rectas con cualquier pendiente

    public void RectaSimple(int x0, int y0, int x1, int y1, Graphics g) { int dx = x1 - x0; int dy = y1 - y0; g.drawLine( x0, y0, x0, y0); if (Math.abs(dx) > Math.abs(dy)) { float m = (float) dy / (float) dx; float b = y0 - m*x0; if(dx

  • if (dy != 0) { // slope >= 1 float m = (float) dx / (float) dy; // compute slope float b = x0 - m*y0; if(dy
  • Algoritmo DDA (analizador diferencial digital/digital differential analyzer).

    Es un algoritmo de conversin de rastreo que se basa en el clculo ya sea de y o x por medio de las ecuaciones.

    Deltay = m Deltax Deltax = Deltay / m

    Se efecta un muestreo de la lnea en intervalos unitarios en una coordenada y se determina los valores enteros correspondientes ms prximos a la trayectoria de la lnea para la otra coordenada.

    Este Algoritmo se usa para la interpolacin lineal de variables sobre un intervalo entre un punto de comienzo y un punto de fin.

    El analizador diferencial digital se usa para rastreo de lineas, triangulos y polgonos. En la implementacin mas simple del algoritmo analizador diferencial digital interpola valores en intervalo [(xinicio, yinicio), (xfin, yfin)] por calculo para cada xi las equacines:

    xi = xi1+1 yi = yi1 + y/x,

    donde

    x = xfin xinicio y y = yfin yinicio.

    08/03/2015 17 Instituto Tecnolgico de Bochil

  • El Algoritmo DDA busca determinar los valores enteros correspondientes ms prximos a la trayectoria de la lnea para la otra coordenada. Para una pendiente positiva, |m| 1, se realiza el muestreo de x en intervalos y se calcula el valor sucesivo de y con la siguiente ecuacin: Yk+1 = Yk +m El subndice k crece con razn 1 hasta alcanzar el valor final, y m toma valores entre 0 y 1 reales, los valores de y calculados deben ser redondeados. Si la pendiente es negativa, se utiliza un caso anlogo con la siguiente ecuacin: Xk+1 = Xk + 1/m

    Desventajas del Algoritmo DDA Presenta errores de acumulacin Redondeo lento Se puede mejorar Separando los incrementos m y 1/m en parte entera y fraccionaria, para reducir a operaciones de enteros.

    08/03/2015 18 Instituto Tecnolgico de Bochil

  • Pseudo Cdigo - Algoritmo DDA (Digital Diferential Analizer)

    Algoritmo DDA(entero x1, entero y1, entero x2, entero y2) inicio entero dx, dy, aux, k flotante x, y, xi, yi dx=x2-x1 dy=y2-y1 si abs(dx)>abs(dy) sisi aux=abs(dx) sino aux=abs(dy) xi=dx/aux yi=dy/aux x=x1 y=y1 dibujarPixel(redondear(x), redondear(y)) para k=1 hasta k

  • void Line(Display* display, Window win, GC gc, int x0, int y0, int x1, int y1){ float x, y, xs, ys; int dx, dy, steps; dx = x1 x0; dy = y1 y0; x = x0; y = y0; if (abs(dx) > abs(dy)) steps = abs(dx); else steps = abs(dy); if (steps == 0) { XdrawPoint(display,win,gc,round(x),round(y)); fprintf(stderr,this line is a point); Return; } xs = dx/steps; ys = dy/steps; for (i = 0; i
  • Algoritmo de Bresenham El algoritmo busca cual de dos pxeles es el que esta mas cerca segn la trayectoria de la lnea. Consideremos el proceso de conversin para lneas con pendiente positiva 0
  • 1. Se capturan los dos extremos de la lnea y se almacena el extremo izquierdo en (x0,y0). 2. Se traza el primer punto (x0, y0). 3. Se calculan las constantes y, x, 2y, 2y - 2x, y se obtiene el valor inicial para el parmetro de decisin como p0 = 2y - x. 4. En cada xk a lo largo de la lnea, que inicia en k = 0, se efecta la prueba siguiente: si pk < 0, el siguiente punto que se debe trazar es (xk+1, yk) y pk +1 = pk + 2y. De otro modo, el siguiente punto en trazarse es (xk+1, yk+1) y pk +1 = pk + 2 y - 2x. 5. Se repite el paso 4 otras x veces. Se basa en una idea similar a la del mtodo DDA (o ADD), pero adems considera que para cada nuevo punto a trazar solo existen dos posibles candidatos. La mayor parte de las operaciones est basada en sumas.

    08/03/2015 22 Instituto Tecnolgico de Bochil

  • Explicacin del algoritmo

    Es considerado uno de los algoritmos ms efectivos para dibujar lneas mediante rastreo. Emplea clculos incrementales con valores enteros. La forma de determinar el siguiente pixel a dibujar en la generacin de una lnea, se describe a continuacin: 1. Punto inicial P1(Xinicial,Yinicial). 2. Se desplaza una columna (incrementando la posicin en X) 3. Se traza el pixel cuyo valor de Y de la lnea de rastreo se aproxima ms a la trayectoria

    de la lnea. Se capturan los dos extremos de la lnea P1(Xinicial,Yinicial) y P2(Xfinal,Yfinal) 1. Se dibuja el primer pixel correspondiente al extremo izquierdo de la lnea(P1) 2. Se calculan los parmetros que permitien decidir cul ser el proximo pixel a dibujar

    (DeltaX, DeltaY y ConstanteP). 3. Dependiendo del valor que tome el Parmetro ConstanteP se evala y determina la

    coordenada a dibujar que puede ser: a) (X+1,Y) para ConstanteP < 0

    b) Sino (X+1,Y+1) El proceso anterior debe repetirse 4DeltaX veces.

    08/03/2015 23 Instituto Tecnolgico de Bochil

  • Para mejorar el algoritmo de Bresenham.

    Dibujar rectas en dispositivos de grficos rasterizados de manera que se reduzca el aliasing.

    Esta basado en dibujar parejas de pxeles a lo largo del trazado de la lnea con diferentes intensidades, en funcin de la a la recta real.

    Aliasing es la apariencia de escaleras o escalones (Pixeleado) que se forman debido a la discretizacin de lo pxeles.

    08/03/2015 24 Instituto Tecnolgico de Bochil

  • Pseudo Cdigo - Algoritmo de Bresenham

    algoritmobresenhamlinea(entero x1, entero y1, entero x2, entero y2) inicio entero dx, dy, x, y, xf, p, c1, c2, in dx=abs(x2-x1) dy=abs(y2-y1) p=2*dy-dx c1=2*dy c2=2*(dy-dx) si x1>x2 si es si inicio x=x2, y=y2, xf=x1 fin si es no inicio x=x1, y=y1, xf=x2 fin si y2

  • public void Bresenham(Graphics g,int x0, int y0, int x1, int y1) int x, y, dx, dy, p, incE, incNE, sx, sy; dx = (x1 - x0); dy = (y1 - y0); if (dy < 0) { dy = -dy; Sy = -1; } else sy = 1; if (dx < 0) { dx = -dx; Sx = -1; } else sx = 1; x = x0; y = y0; g.drawLine( x0, y0, x0, y0); if(dx>dy){ p = 2*dy - dx; incE = 2*dy; incNE = 2*(dy-dx); while (x != x1){ x = x + sx;

    Cdigo Java - Algoritmo de Bresenham

    08/03/2015 26 Instituto Tecnolgico de Bochil

  • while (x != x1){ x = x + sx; if (p < 0){ p = p + incE; } else { y = y + sy; p = p + incNE; } g.drawLine( x0, y0, x0, y0); } }else{ p = 2*dx - dy; incE = 2*dx; incNE = 2*(dx-dy); while (y != y1){ y = y + sy; if (p < 0){ p = p + incE; } else { x = x + sx; p = p + incNE; } g.drawLine( x0, y0, x0, y0);

    08/03/2015 27 Instituto Tecnolgico de Bochil

  • Algoritmo de Xiaolin Wu Es una mejora del algoritmo de Bresenham que permite dibujar rectas en dispositivos de grficos rasterizados reduciendo el aliasing.

    Este algoritmo se basa en dibujar parejas de pixeles a lo largo del trazado de la recta con diferentes intensidades en funcin de la cercana a la recta real.

    funcin dibujarLinea(x1,y1,x2,y2) es dx = x2 - x1 dy = y2 - y1 Si abs(dx) < abs(dy) entonces intercambiar x1, y1 intercambiar x2, y2 intercambiar dx, dy Si x2 < x1 intercambiar x1, x2 intercambiar y1, y2 gradiente = dy / dx xend = redondear(x1) yend = y1 + gradiente * (xend - x1) xgap = rfpart(x1 + 0.5) xpxl1 = xend ypxl1 = ipart(yend) dibujar(xpxl1, ypxl1, rfpart(yend) * xgap) dibujar(xpxl1, ypxl1 + 1, fpart(yend) * xgap) intery = yend + gradiente

    Pseudo Cdigo - Algoritmo Xiaolin Wu

    08/03/2015 28 Instituto Tecnolgico de Bochil

  • xend = redondear(x2) yend = y2 + gradiente * (xend - x2) xgap = fpart(x2 + 0.5) xpxl2 = xend ypxl2 = ipart (yend) dibujar (xpxl2, ypxl2, rfpart (yend) * xgap) dibujar(xpxl2, ypxl2 + 1, fpart (yend) * xgap) // ciclo principal for x from xpxl1 + 1 to xpxl2 - 1 do dibujar(x, ipart (intery), rfpart (intery)) dibujar(x, ipart (intery) + 1, fpart (intery)) intery = intery + gradiente fin

    Rosetta Code - Xiaolin Wu's Line Algorithm . Recuperado Noviembre 8, 2011 de http://rosettacode.org/wiki/Xiaolin_Wu%27s_line_algorithm

    08/03/2015 29 Instituto Tecnolgico de Bochil

  • 2.2 Representacin y trazo de polgonos.

    Polgono Son figuras planas cerradas y simples que esta formada por segmentos. Es la superficie plana encerrada dentro de un contorno formado por segmentos rectos unidos en sus extremos. Cada uno de los segmentos se denomina lado. El punto de unin de cada par de segmentos se denomina ngulo. El numero de lados, ( y por tanto de ngulos) ha de ser mayor o igual a tres.

    08/03/2015 30 Instituto Tecnolgico de Bochil

  • Elementos de un polgono

    Lados. Son los segmentos que lo limitan.

    Vrtices. Son los puntos donde concurren dos lados.

    ngulos interiores de un polgono. Son los determinados por dos lados consecutivos.

    Poligono Irregular Poligono Irregular Linea o trazo

    08/03/2015 31 Instituto Tecnolgico de Bochil

  • Los polgonos se clasifican: Polgonos regulares. Son los que tienen sus lados y sus ngulos interiores iguales. Polgonos irregulares. Son aquellos que no son regulares, porque no tienen sus angulos internos y sus caras o lados regulares o del mismo tamao.

    Los poliedros irregulares se clasifican: Prismas: Son poliedros irregulares que tienen dos bases en forma de polgonos y sus caras laterales tienen forma de rectngulo. Pirmides: Son poliedros irregulares que tienen una base en forma de polgono y sus caras laterales tienen forma de tringulo. Tanto los prismas como las pirmides, reciben un nombre especial segn la forma de su base.

    Superficies de polgonos. Cualquier objeto tridimensional puede representarse como un conjunto de superficies poligonales planas. Para algunos objetos, como un poliedro, esto define precisamente las caractersticas de la superficie. En otros casos, una representacin de un polgono ofrece una descripcin aproximada del objeto.

    08/03/2015 32 Instituto Tecnolgico de Bochil

  • 08/03/2015 33 Instituto Tecnolgico de Bochil

    Existen varios algoritmos que permiten trazar una lnea recta, entre estos estn:

    Algoritmo de Bresenham para trazado de circunferencias Algoritmo del punto medio para trazado de circunferencias Algoritmo de Bresenham para generacin de elipses Algoritmo del punto medio para generacin de elipses

  • 08/03/2015 34 Instituto Tecnolgico de Bochil

    Algoritmo basado en la ecuacion de la circunferencia.

  • 08/03/2015 Instituto Tecnolgico de Bochil 35

    Algoritmo de Bresenham para trazado de circunferencias

    Es decir:

  • 08/03/2015 36 Instituto Tecnolgico de Bochil

    Algoritmo del Punto Medio Hay que determinar el pixel ms cercano a la circunferencia Consideremos el centro del crculo en (0,0) Comenzaremos en el punto (0,R) e iremos desde x=0 hasta x=y, donde la pendiente va de 0 a -1 Slo pintaremos el primer octante Sea la funcin:

    Este test lo ejecutaremos en los puntos medios entre los pixels que hay que decidir

  • 08/03/2015 37 Instituto Tecnolgico de Bochil

    Algoritmo del Punto Medio Funcion PuntoMedio (int xc, yc, float R) Pintar Pixel (0, R) Calcular p0 = 5/4 R // si R es entero, p0 = 1-r Para cada xk si pk < 0 Pintar Pixel (xk+1, yk) pk+1 = pk + 2xk + 3 si pk > 0 Pintar Pixel (xk+1, yk-1) pk+1 = pk + 2xk 2yk+ 5 Determinar por simetra los puntos de los otros 7 octantes Pintar Pixel (x+xc, y+yc) Proceso

  • 08/03/2015 Instituto Tecnolgico de Bochil 38

    Algoritmos de generacion de elipses

    Algoritmo

  • 08/03/2015 39 Instituto Tecnolgico de Bochil

    El algoritmo de Bresenham Se encarga de determinar los pixeles que habria que encender en el primer cuadrante utilizando para ello solo aritmetica entera, x comienza entonces con el valor de cero y (y) con el valor de Ry, se procede entonces incrementando x de uno en uno, desde que la pendiente de la elipse es de cero hasta que la pendiente es de -1, entonces se cambian los roles de x y y, al igual que el algoritmo de Bresenham para trazar circunferencias, utiliza solo el signo del error para decidir. Algoritmo

    Implementado en plotters, en el firmware o hardware de la mayora de las tarjetas grficas modernas y en muchas libreras grficas. Hay que modificarlo para lograr anti-aliasing Preciso, cculo incremental usando adicin, sustraccin y shifting (operaciones enteras), las cuales son standard en la mayora de las arquitecturas. Muy eficiente para dibujo de lneas rectas, crculos, elipses, polinomios de segundo grado, curvas de Bzier 3er orden (grado 2) o mayor si se dividen en subcurvas de 3er orden.

    Importancia y Aplicaciones

  • 08/03/2015 Instituto Tecnolgico de Bochil 40

    Algoritmo del punto medio para generacin de elipses

    El algoritmo del punto medio es una simplicacion del algoritmo de Bresenham.

    El mtodo de punto medio para elipse se aplica a lo largo del primer cuadrante en dos partes, de acuerdo a una elipse con la pendiente. Las regiones 1 y 2 pueden procesarse de varias maneras. Se puede iniciar en la posicin (0,ry) y pasar en el sentido de las agujas del reloj a lo largo de la trayectoria elptica en el primer cuadrante, al alternar de pasos unitarios en x a pasos unitarios en y cuando la pendiente adquiere un valor menor que-1De modo alternativo, se puede iniciar en(rx,0) y seleccionar puntos en el sentido contrario al de las manecillas del reloj, alternando de pasos unitarios en y a pasos unitarios en x cuando la pendiente un valor mayor que -1. (con procesadores paralelos se podra calcular en forma simultnea las posiciones de pixel en las dos regiones).

  • 08/03/2015 Instituto Tecnolgico de Bochil 41

    Se capturan los radios rx, ry y el centro de la elipse (xc, yc). Se obtiene el primer punto de la elipse centrada en origen (xc, yc) como (0, ry). Se calcula el valor inicial del parmetro de decisin de la regin 1 como p10=ry^2-rx^2ry+ 0.25 rx^2. En cada posicin xk en la regin 1 para k=0 Si p1k0 Punto siguiente = (xk, yk-1) p2k+1=p2k-2rx^2yk+1+rx^2 Se determinan los puntos de simetra para los otros tres cuadrantes. Se mueve cada posicin del pixel calculada (x,y) a la trayectoria elptica centrada en (xc, yc) y trazamos los valores de las coordenadas: x=x+xc y x=x+xc. Se repiten los pasos de la regin 1 hasta que 2ry2x0 >=2rx2y0

    Algoritmo del punto medio para generacin de elipses (Proceso)

  • 08/03/2015 Instituto Tecnolgico de Bochil 42

    Algoritmo del punto medio para generacin de elipses

  • 08/03/2015 43 Instituto Tecnolgico de Bochil

    Relleno de Poligonos. Dada un rea cerrada, hay que ser capaz de rellenar los pixels interiores con un color determinado

    La tarea de rellenar primitivas puede ser dividida en dos partes: La decision de cuales pixeles se tienen que rellenar (que depende de la forma de la primitiva modificada por el recortado), y de la decision de que valor rellenarlos. En general, la determinacion de que pixeles rellenar consiste en tomar sucesivos lneas de escaneo que intersecta la primitiva y rellenarla en tramos de pixeles adyacentes que yacen en la primitiva de izquierda a derecha. Para rellenar un rectangulo, la conversion a un algoritmo de escaneo es simplemente un ciclo for anidado

  • 08/03/2015 44 Instituto Tecnolgico de Bochil

    Algoritmos de relleno de areas Relleno por scanline Algoritmo optimizado para el relleno scanline Relleno por inundacin (del ingls- floodfill) Algoritmo optimizado de relleno por inundacin

    Casos de relleno segn su complejidad El caso mas sencillo de relleno es el triangulo. Luego sigue el relleno de polgonos convexos de N-lados. Relleno de polgonos cncavos.

    Ilustracin del Teorema de los cuatro colores.

  • 08/03/2015 45 Instituto Tecnolgico de Bochil

    Relleno por scanline. Este algoritmo va fila a fila va trazando lneas de color entre aristas. Tambin llamado scan conversion algorithm, fila a fila van trazando lneas de color entre aristas. Para scan-line el cruce del polgono se busca en la interseccin entre las lneas de barrido y las aristas del polgono. Dichas intersecciones se ordenan y se rellenan a pares. Consiste en detectar la interseccin de los scanlines del dispositivo con los bordes de la primitiva, y por cada scanline rellena el span de pixeles entre cada par de intersecciones. Cuando el polgono no es convexo, solo hay dos intersecciones por scanline, en cualquier direccin. En el procedimiento, primero encuentra las intersecciones en alguna estructura de datos ET (edge table), de forma ordenada, ascendentemente en "y" y en "x", en buckets y rellena los spans. Utiliza algn criterio de paridad para saber cundo un intervalo debe ser rellenado o no

  • 08/03/2015 46 Instituto Tecnolgico de Bochil

    Algoritmo optimizado para el relleno scanline (Proceso).

    Primero hay que crear una tabla de bordes (TB), para todas las aristas del polgono (exceptuando las horizontales) Cada arista viene representada por cuatro valores Coordenada y del punto ms alto Coordenada x del punto ms bajo Inversa de la pendiente Puntero a otra arista en la misma scan-line Se crea un vector vaco, con tantas posiciones como filas tenga la pantalla, y se coloca cada arista en la posicin de la scan-line del punto ms bajo Comenzamos desde abajo, y vamos creando una lista de bordes activos (LBA), que contendrn en cada iteracin las aristas cruzadas por dicha scan-line

  • 08/03/2015 47 Instituto Tecnolgico de Bochil

    Algoritmo optimizado para el relleno scanline. Funcion Scanline() Inicializar LBA vaca y crear TB Repetir hasta que LBA y TB vacas Mover de TB a LBA lados con ymin = y Ordenar LBA segn x Rellenar usando pares de x de LBA Eliminar lados de LBA con y = ymax Incrementar y a la siguiente scan-line Actualizar las x en LBA

  • 08/03/2015 48 Instituto Tecnolgico de Bochil

    Empieza en un punto interior y pinta hasta encontrar la frontera del objeto Partimos de un punto inicial (x, y), un color de relleno y un color de frontera El algoritmo va testeando los pixeles vecinos a los ya pintados, viendo si son frontera o no No slo sirven para polgonos, sino para cualquier rea curva sobre una imagen se usan en los programas de dibujo

    Relleno por inundacin. Parte de un punto central, se va expandiendo recursivamente hasta alcanzar el borde del objeto.

    Hay dos formas de considerar los vecinos : 4 u 8 Dependiendo de qu esquema elijamos, el relleno ser diferente

  • 08/03/2015 49 Instituto Tecnolgico de Bochil

    Algoritmo optimizado de relleno por inundacin (Proceso). El algoritmo anterior necesita mucha memoria (Algoritmo de relleno por inundacin), y si el rea a rellenar es muy grande se desborda la pila. Para ahorrar memoria al rellenar reas de cualquier tamao, no debemos explorar todos los vecinos de cada pixel, sino slo a lo largo de un scan-line. Rellenamos el span donde se encuentra el punto Inicial. Adems, guardamos las posiciones iniciales de todos los spans de las lneas horizontales contiguas al scan-line.

  • 08/03/2015 50 Instituto Tecnolgico de Bochil

    Algoritmo de relleno por inundacin

    Funcion Inundacin(x, y, col1, col2) color = LeerPixel (x,y) Si (color!=col1 && color!=col2) entonces PintaPixel (x,y,col1) Inundacin (x+1, y, col1, col2); Inundacin (x-1, y, col1, col2); Inundacin (x, y+1, col1, col2); Inundacin (x, y-1, col1, col2);

    Este algoritmo se presta a un esquema recursivo muy simple

  • 2.3 Transformacin bidimensional.

    08/03/2015 51 Instituto Tecnolgico de Bochil

    Los objetos se definen mediante un conjunto de puntos. Las transformaciones son procedimientos para calcular nuevas posiciones de estos puntos, cambiando el tamao y orientacin del objeto. Las transformaciones geomtricas son la o las operaciones geomtricas que permiten crear una nueva figura a partir de una previamente dada. la nueva figura se llamar homlogo de la original. Las operaciones bsicas de transformacin son: Traslacin Escalamiento Rotacin

    Las transformaciones basicas son la escalacion, la traslacion, y la rotacion. Representadas matricialmente.

  • 08/03/2015 52 Instituto Tecnolgico de Bochil

    Las transformaciones se clasifican en: Directa el homlogo conserva el sentido del original en el plano cartesiano inversa: el sentido del homlogo y del original son contrarios adems, tambin se pueden clasificar de acuerdo con la forma del homlogo con respecto al original en: Isomtricas el homlogo conserva las dimensiones y ngulos. Tambin se llaman movimientos, stos son simetra axial y puntual, rotacin y traslacin. Isomrficas el homlogo conserva la forma y los ngulos. existe proporcionalidad entre las dimensiones del homlogo con el original. una de ellas es la homotecia. Anamrficas cambia la forma de la figura original. Una de ellas es la inversin o la topologia.

    Transformaciones basicas. Los objetos basicos desplegados se definen por conjuntos de puntos coordenados. Las transformaciones geometricas son procedimientos para calcular nuevas posiciones de coordenadas de estos puntos, como lo requiere un cambio especificado en tamanio y orientacion del objeto.

  • 08/03/2015 Instituto Tecnolgico de Bochil 53

    Transformaciones bidimensionales: Los procedimientos para desplegar dispositivos de salida y sus atributos, se puede crear una variedad de formas de figuras y graficas. En muchas aplicaciones, tambien hay una necesidad de alterar o manipular despliegues. Algunas veces se necesita reducir el tamao de un objeto o grafica para colocarlo en un despliegue mayor. Tambien podria desearse probar la apariencia de modelos de disenio reacomodando las posiciones relativas y los tamaos tambien relativos de las partes del modelo. En aplicaciones de animacion, se necesita producir movimiento continuo de objetos desplegados alrededor de la pantalla. Estas diversas manipulaciones se llevan a cabo aplicando transformaciones geometricas adecuadas a los puntos coordenados de despliegue.

  • 08/03/2015 Instituto Tecnolgico de Bochil 54

    La composicin de transformaciones bidimensionales. consiste en la mezcla de las transformaciones bidimensionales bsicas como son traslacin, sesgado y escalado.

    Entonces se puede decir, que una transformacin compuesta bidimensional es una secuencia de transformaciones, una tras otra. Por lo que podemos decir que los objetos se definen mediante un conjunto de puntos. Las transformaciones son procedimientos para calcular nuevas posiciones de estos puntos, cambiando el tamao y orientacin del objeto.

    Notemos que no mencionamos la rotacin como una transformacin bsica, esta es en realidad la combinacin de escalado y sesgado.

    Animacion en cuadros

  • 08/03/2015 Instituto Tecnolgico de Bochil 55

    Con las transformaciones nosotros podemos alterar de una forma uniforme toda la imagen. Es un hecho que a veces es ms fcil modificar toda la imagen que una porcin de ella. Esto supone un complemento muy til para las tcnicas de dibujo manual, donde es normalmente ms fcil modificar una pequea porcin del dibujo que crear un dibujo completamente nuevo. Los objetos se definen mediante un conjunto de puntos. Las transformaciones son procedimientos para calcular nuevas posiciones de estos puntos, cambiando el tamao y orientacin del objeto.

    TRANSFORMACIONES BASICAS: Los objetos basicos desplegados se definen por conjuntos de puntos coordenados. Las transformaciones geometricas son procedimientos para calcular nuevas posiciones de coordenadas de estos puntos, como lo requiere un cambio especificado en tamao y orientacion del objeto.