Algoritmo Bresenham

download Algoritmo Bresenham

of 8

Transcript of Algoritmo Bresenham

2011Algoritmo Bresenham

Antonio Acosta Instituto Tecnolgico de Culiacn 07/07/2011

Algoritmo Bresenham

7 de julio de 2011

ContenidoAlgoritmo de bresenham para lneas ................................................................................................................. 2 Cdigo bresenham para lneas en C++ ....................................................................................................... 3 Algoritmo de bresenham para crculos ............................................................................................................... 4 Cdigo bresenham para crculos en C++ ..................................................................................................... 5 Ejemplo de la Lnea de Bresenham ..................................................................................................................... 6 Un ejemplo sencillo del algoritmo de la lnea de Bresenham ................................................................... 6 Ejemplo del Crculo de Bresenham ...................................................................................................................... 6 Esta es una implementacin del algoritmo de crculo. ................................................................................ 6 Bibliografa .............................................................................................................................................................. 7

Conocimientos puede tenerlos cualquiera, pero el arte de pensar es el regalo ms escaso de la naturaleza. Federico II

1

Algoritmo Bresenham

7 de julio de 2011

Algoritmo BresenhamAlgoritmo de bresenham para lneasEl algoritmo de Bresenham es un algoritmo que determina los puntos en un mapa de bits de n-dimensiones 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. Resultados del algoritmo de Bresenham. 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.

2

Algoritmo Bresenham

7 de julio de 2011

Cdigo bresenham para lneas en C++void brenenham(int x1, int y1, int x2, int y2) { int slope; int dx, dy, incE, incNE, d, x, y; // Reverse lines where x1 > x2 if (x1 > x2) { brenenham(x2, y2, x1, y1); return; } dx = x2 - x1; dy = y2 - y1; // Adjust y-increment for negatively sloped lines if (dy < 0) { slope = -1; dy = -dy; } else { slope = 1; } // Bresenham constants incE = 2 * dy; incNE = 2 * dy - 2 * dx; d = 2 * dy - dx; y = y1; // Blit for (x = x1; x 0 */ if (r