Está en la página 1de 7

ASIGNATURA:

COMPUTACION GRAFICA

PRESENTADO A:
ING. JOSE DANIEL AVELLANEDA PARRA

PRESENTADO POR:
MAHUREM DANIELLA AMEZQUITA CASTRO
MANUEL ALEJANDRO RESTREPO CASTRO
FABIAN VASQUEZ QUINTERO

UNIVERSIDAD
CENTRAL
2015

ALGORITMO BRESENHAM (Lneas):


El algoritmo de Bresenham es un algoritmo que determina los puntos en un mapa de bits de n-dimension
es que deben ser trazados con el fin de formar una aproximacin a una lnea recta entre dos puntos
dados.
Es comnmente usado para dibujar lneas en una pantalla de ordenador, ya que utiliza slo adicin
de enteros, la resta y desplazamiento de bits, que son operaciones muy barato en las arquitecturas
de ordenador estndar. Es uno de los primeros algoritmos desarrollados en el campo de grficos por
ordenador. Una extensin menor a la del algoritmo original tambin se ocupa de dibujar crculos.
Partimos de que las coordenadas de los pixels en una imagen son coordenadas enteras y que
conocemos los extremos del segmento que forma la lnea siendo sus coordenadas (x0,y0) y (x1,y1).
El algoritmo de Bresenham selecciona el entero 'y' correspondiente al pixel central que est ms
cercano del que sera calculado con fracciones y lo mismo para la coordenada 'x'. En las sucesivas
columnas la coordenada 'y' puede permanecer con el mismo valor o incrementarse en cada paso a
una unidad. La ecuacin general de la lnea que pasa por los extremos conocidos es:

Puesto que conocemos la columna, 'x', la fila 'y' del pixel se calcula redondeando esta cantidad al
entero ms cercano segn la siguiente frmula.

La pendiente (y1- y0) / (x1- x0) depende slo de las coordenadas de los extremos y puede ser
previamente calculada, y el valor ideal de 'y' para los sucesivos valores enteros de 'x' se puede
calcular a partir de y0 e ir aadiendo en varias ocasiones la pendiente.
PSEUDO CODIGO:

ALGORITMO
BRESENHAM
(Crculo):
En graficacin, el algoritmo de midpoint circle es un algoritmo utilizado para determinar los puntos
necesarios para dibujar un crculo.
El algoritmo es una variante del algoritmo de la lnea Bresenham, por lo que es a veces conocido
como algoritmo de crculo Bresenham, aunque en realidad no inventada por Bresenham.
El algoritmo comienza en consecuencia con el crculo de la ecuacin x2+y 2=r2.
As, el centro del crculo se encuentra en (0,0). Consideramos que slo la primera el octante primera
y trazar una curva que comienza en el punto(r,0) y hacia arriba los ingresos ya la izquierda, llegando
al ngulo de 45 . La direccin rpida aqu es la direccin vertical. El algoritmo hace siempre un
paso en la direccin positiva (hacia arriba), y de vez en cuando tambin tiene que hacer un paso en
la "lenta" la direccin, la direccin x negativa. De la ecuacin de un crculo se obtiene la ecuacin
transformada x2+y2r2= 0, donde r2 se calcula slo una sola vez durante la inicializacin:

Y por lo tanto para la coordenada x.


Adems tenemos que aadir las
coordenadas del punto medio al establecer un pxel. Estas adiciones frecuentes entero no limitan el
rendimiento de mucho, ya que puede prescindir de los cuadrados (root) los clculos en el lazo
interno, a su vez. Una vez ms el cero en la ecuacin del crculo transformado se sustituye por el
trmino de error. La inicializacin del trmino de error se deriva de un desplazamiento de pixel y
medio en la salida. Hasta la interseccin con la lnea perpendicular, esto conduce a un valor
acumulado de r en el trmino de error, de modo que este valor se utiliza para la inicializacin. Una
posible implementacin del algoritmo de Bresenham de un crculo completo en C. Aqu otra variable
para el clculo recursivo de los trminos de segundo grado se utiliza, lo que corresponde con el
trmino de2 n + 1. Slo tiene que incrementar en un 2 a partir de una etapa a la siguiente.
Una circunferencia se define como un conjunto de puntos que se encuentran, en su totalidad, a una
distancia determinada r de una posicin central.

Es posible reducir el clculo al considerar la simetra de las circunferencias, la forma de la


circunferencia es similar entre cuadrantes y simtrica entre octantes.
Para aplicar el mtodo del punto medio, definimos una funcin de circunferencia como:
pk = fcircunferencia(x,y)= x2 + y2 r2
fcircunferencia(x,y)<0 si (x,y) est dentro de la frontera de la circunferencia.
fcircunferencia(x,y)=0 si (x,y) est en la frontera de la circunferencia.

fcircunferencia(x,y)>0 si (x,y) est fuera de la frontera de la circunferencia.

Los parmetros de decisin sucesivos se obtienen al utilizar clculos incrementales.


PSEUDO CODIGO:
*Se capturan el radio r y el centro de la circunferencia (xc, yc).
*Se obtiene el primer punto de la circunferencia centrada en origen (xc, yc) como (0, r).
*Se calcula el valor inicial del parmetro de decisin como p0=5/4 - r.
Para k=0 hasta x>=y incrementa k
Si pk < 0
*Siguiente punto de la circunferencia con centro (0,0) es (xk+1, yk).
*pk+1=pk+2xk+1+1.
Sino
*Siguiente punto de la circunferencia con centro (0,0) es (xk+1, yk-1).
*pk+1=pk+2xk+1+1-2yk+1.
//Donde 2xk+1=2xk+2 y 2yk+1=2yk-2

*Se determinan los puntos de simetra para los otros siete octantes.
*Se mueve cada posicin del pixel calculada (x,y) a la trayectoria circular centrada en (xc, yc)
y trazamos los valores de las coordenadas: x=x+x c y y=y+yc.
Fin Para

ALGORITMO DDA (Lneas):


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 = Y k +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 = X k + 1/m
PSEUDO CODIGO:

ALGORITMO DDA (Crculo):


Como en el caso de los segmentos de recta, en la desratizacin de circunferencias o crculos es
posible trabajar un slo segmento de la circunferencia y se obtienen las dems por simetra.
Igualmente se dispone de algoritmos DDA y de Bressenham para el dibujo de circunferencias. En
este aparte se mostrar una adaptacin del algoritmo DDA a partir de la ecuacin de la
circunferencia, tomado de la pgina internet de Roberto Albornoz12.
Para poder realizar el dibujo de la circunferencia usaremos las ecuaciones de la circunferencia en
coordenadas polares que son:
x = r * cosq
y = r *senq
Estas ecuaciones sern las que ocuparemos para calcular cada punto (x,y) del crculo, donde el r
ser obviamente el radio de crculo y q ser el ngulo que forma el radio con la parte positiva del eje
x. En forma grfica sera as:

El ngulo deber estar en radianes ya que las funciones de seno y coseno que incluye Java,
trabajan con los ngulos en radianes. La frmula para transformar grados a radianes es la siguiente:

Entonces para dibujar el crculo de un radio determinado, solamente tenemos que hacer un ciclo
desde 0 hasta 360, pero con incrementos pequeos, calcular cada punto con las ecuaciones en
coordenadas polares e ir dibujando cada punto. El ciclo en vez de ir de 0 a 360 (ngulos en grados)
ir de 0 a 6.28 (360*3.14/180=6.28) ya que el ngulo debe estar en radianes.

Dibujar el crculo punto a punto es una tarea un poco lenta, debido a que se debe calcular en cada
punto el seno y el coseno del ngulo, y estas funcionas son muy lentas. Para solucionar esto se
pueden crear tablas predefinidas o pre calculadas. En la siguiente figura se muestra el cdigo en
Java que permitira dibujar el crculo en una ventana.

También podría gustarte