Vous êtes sur la page 1sur 4

Algoritmo de Bresenham

De Wikipedia, la enciclopedia libre Saltar a: navegacin, bsqueda Este artculo o seccin necesita referencias que aparezcan en una publicacin acreditada, como revistas especializadas, monografas, prensa diaria o pginas de Internet fidedignas.
Puedes aadirlas as o avisar al autor principal del artculo en su pgina de discusin pegando:
{{subst:Aviso referencias|Algoritmo de Bresenham}} ~~~~

Ejemplo de aplicacin del algoritmo de Bresenham. El algoritmo de Bresenham es un algoritmo creado para dibujar rectas en los dispositivos de grficos rasterizados, como por ejemplo un monitor de ordenador, que determina qu pixeles se rellenarn, en funcin de la inclinacin del ngulo de la recta a dibujar.

Contenido
[ocultar]

1 Descripcin 2 Algoritmo 3 Implementacin en Java 4 Vase tambin 5 Referencias 6 Publicaciones

[editar] Descripcin
Es un algoritmo preciso para la generacin de lineas de ratreo que convierte mediante rastreo las lneas al utilizar solo clculos incrementales con enteros que se pueden adaptar para desplegar circunferencias y curvas. Los ejes verticales muestran las posiciones de rastreo y los ejes horizontales identifican columnas de pixel.

[editar] Algoritmo
El algoritmo sera el siguiente:
Si 0<|m|<1 *Se capturan los extremos de la lnea y se almacena el extremo izquierdo en (x0,y0). *Se carga (x0,y0) en el bufer de estructura (se traza el primer punto) *Se calculan las constantes x,y, 2y y 2y-x y se obtiene el valor inicial para el parametro de decisin p0=2y-x. Para j=0 mientras j<x *En cada xk a lo largo de la lnea, que inicia en k=0 se efecta la prueba siguiente: Si pk<0 *Trazamos (xk+1,yk). *Asignamos pk+1= pk+2y. Sino *Trazamos (xk+1,yk+1). *Asignamos pk+1= pk+2y-2x. Fin Para Si |m|>1 *Recorremos la direccin en pasos unitarios y calculamos los valores sucesivos de x que se aproximen ms a la trayectoria de la lnea.

[editar] Implementacin en Java


Esta es la implementacin del algoritmo:
public void Bresenham(Graphics g,int x0, int y0, int x1, int y1) { int x, y, dx, dy, p, incE, incNE, stepx, stepy; dx = (x1 - x0); dy = (y1 - y0); /* determinar que punto usar para empezar, cual para terminar */ if (dy < 0) { dy = -dy; stepy = -1; } else stepy = 1; if (dx < 0) { dx = -dx; stepx = -1; } else stepx = 1; x = x0; y = y0; g.drawLine( x0, y0, x0, y0); /* se cicla hasta llegar al extremo de la lnea */ if(dx>dy){ p = 2*dy - dx; incE = 2*dy; incNE = 2*(dy-dx); while (x != x1){

x = x + stepx; if (p < 0){ p = p + incE; } else { y = y + stepy; p = p + incNE; } g.drawLine( x, y, x, y); } } else{ p = 2*dx - dy; incE = 2*dx; incNE = 2*(dx-dy); while (y != y1){ y = y + stepy; if (p < 0){ p = p + incE; } else { x = x + stepx; p = p + incNE; } g.drawLine( x, y, x, y); } } }

[editar] Vase tambin


Analizador Diferencial Digital (algoritmo grfico) es un algoritmo para el trazado de lineas. Algoritmo de Xiaolin Wu es un algoritmo para antialiasing de lineas Algoritmo del Punto Medio para Circunferencias es un algoritmo para el trazado de cnicas. Algoritmo del Punto Medio para Elipses es un algoritmo para el trazado de cnicas. Algoritmo del Punto Medio para Parbolas es un algoritmo para el trazado de cnicas. Algoritmo del Punto Medio para Hiprbolas es un algoritmo para el trazado de cnicas.

Vous aimerez peut-être aussi