17
Algoritmo de Bresenham para Pintar Círculos y Cuádricas en General Carlos E. Alvarez D. 06-39141

Bresenham Alvarez Dibujar Trayectorias

Embed Size (px)

Citation preview

Page 1: Bresenham Alvarez Dibujar Trayectorias

8/16/2019 Bresenham Alvarez Dibujar Trayectorias

http://slidepdf.com/reader/full/bresenham-alvarez-dibujar-trayectorias 1/17

Algoritmo de

Bresenhampara Pintar Círculos

y Cuádricas en General

Carlos E. Alvarez D.

06-39141

Page 2: Bresenham Alvarez Dibujar Trayectorias

8/16/2019 Bresenham Alvarez Dibujar Trayectorias

http://slidepdf.com/reader/full/bresenham-alvarez-dibujar-trayectorias 2/17

Contenido- Introducción

- Algoritmo de Bresenham para Dibujar Líneas Rectas

- Algoritmo de Bresenham para Dibujar Círculos

- Algoritmo Rápido Basado en Algoritmo de

Bresenham para Dibujar Elipses

- Generalización del Algoritmo de Bresenham para

Curvas Cuadráticas

- Resumen de Aplicaciones e Importancia

Page 3: Bresenham Alvarez Dibujar Trayectorias

8/16/2019 Bresenham Alvarez Dibujar Trayectorias

http://slidepdf.com/reader/full/bresenham-alvarez-dibujar-trayectorias 3/17

Introducción

- Desarrollado por Jack E. Bresenham en I.B.M. en 1962

- Publicado en 1965

- Originalmente para dibujar líneas rectas

- Modificado posteriormente para dar origen al conocido

Bresenham’s Circle Algorithm 

Imagen: http://wscg.zcu.cz/wscg2003/Photos_2003/Bresenham.jpg

Page 4: Bresenham Alvarez Dibujar Trayectorias

8/16/2019 Bresenham Alvarez Dibujar Trayectorias

http://slidepdf.com/reader/full/bresenham-alvarez-dibujar-trayectorias 4/17

Bresenham – Líneas Rectas

- Para líneas en el primer octante desde

hasta (se traslada para que parta

del origen)

- Decisión E() o NE ()

- El error para un píxel se define como la distancia

 vertical entre el píxel y la recta que se quiere dibujar

Algoritmo Original

p 2 = (x 

2, y 

2)

p 1  = (x 1, y 1)

[3,5,6

Page 5: Bresenham Alvarez Dibujar Trayectorias

8/16/2019 Bresenham Alvarez Dibujar Trayectorias

http://slidepdf.com/reader/full/bresenham-alvarez-dibujar-trayectorias 5/17

Bresenham – Líneas Rectas

- Se usa el parámetro de decisión

- y 

- El error se calcula de manera incremental, de modo quey

si se elige E o NE respectivamente en el paso anterior,

donde

y

Algoritmo Original Cont.

i +1  = e i  + 2 i +1  = i  +2dy −2   x 

dx = x 2 − x 

1  dy = y 

2 − y 

1

0  = 2dy − 2d 

0 < 0 ⇒ E 

0 > 0 ⇒

[3,5,6

Page 6: Bresenham Alvarez Dibujar Trayectorias

8/16/2019 Bresenham Alvarez Dibujar Trayectorias

http://slidepdf.com/reader/full/bresenham-alvarez-dibujar-trayectorias 6/17

Bresenham – Líneas RectasAlgoritmo Original Cont.

dx = x2 - x1dy = y2 - y1

E = 2 * dy - dx

Dn = E + dx = 2dy

Dp = E - dx = 2dy - 2dx

x = x1DO WHILE x <= x2

IF E < 0 THEN

E = E + Dn

/* y = y + 0 */

ELSE

E = E + Dp

y = y + 1

END IF

x = x + 1

DrawPoint (x, y)LOOP

Sólo operaciones enteras[3,5,6

Page 7: Bresenham Alvarez Dibujar Trayectorias

8/16/2019 Bresenham Alvarez Dibujar Trayectorias

http://slidepdf.com/reader/full/bresenham-alvarez-dibujar-trayectorias 7/17

Bresenham - Círculos- Se escoge el Arco donde * 

- Los otros 8 arcos se pintan por simetría ( 8-waysymmetry  )- Decisión para el próximo píxel: S () o SO ()

--

- Se define el error--

-Se escoge error con menor módulo

* Nótese dirección de los ejes 

≥ 0, y ≥ 0,   ≥

e = x 2 + y 2 − r 2

P S =(x , y 

+1)

P SO  = (   −1, y +1)

e S =

 x 

2+ (

y +1)

2−

2=

e +2

y −1

e SO  = (x −1)2 + (y +1)2 − r 2 = e S + 2x +1

[2,3,5,!

Page 8: Bresenham Alvarez Dibujar Trayectorias

8/16/2019 Bresenham Alvarez Dibujar Trayectorias

http://slidepdf.com/reader/full/bresenham-alvarez-dibujar-trayectorias 8/17

Bresenham - Círculos

e S   >  e SO  ⇒ SO 

e S   >  e S −2x +1 ⇒ SO 

2 S > 2   −1⇒

−2x −1≤ −1∧0 < e s  <1⇔

Sólo operaciones enteras

Error y Decisión

[2,3,5,!

Page 9: Bresenham Alvarez Dibujar Trayectorias

8/16/2019 Bresenham Alvarez Dibujar Trayectorias

http://slidepdf.com/reader/full/bresenham-alvarez-dibujar-trayectorias 9/17

- Ecuación

- Se divide en 4 cuadrantes (4-way symmetry)- Se dibuja primero el arco señalado por 1 y

luego 2- Decisión

- 1 N (

) o NO (

)- 2 E() o SE ()

- Error

Bresenham - Elipsesx 2

2 +

 y 2

2  =1

2

2+

2

2=

2

2

[2,3,6

Page 10: Bresenham Alvarez Dibujar Trayectorias

8/16/2019 Bresenham Alvarez Dibujar Trayectorias

http://slidepdf.com/reader/full/bresenham-alvarez-dibujar-trayectorias 10/17

Caso 1

Bresenham - ElipsesError y Decisión

e NO   <  e N   ⇒ NO 

2   b 2x 2 +a 2y 2 −b 2a 2 +a 2 2y +1( ) +b 2 1−2x ( ) > 0 ⇒ NO 

- En cada paso se chequea si la pendiente de la rectatangente a la elipse es -1 para cambiarla toma de decisión

- Nótese, solo operaciones enteras

(Caso 2 es análogo)

[!

Page 11: Bresenham Alvarez Dibujar Trayectorias

8/16/2019 Bresenham Alvarez Dibujar Trayectorias

http://slidepdf.com/reader/full/bresenham-alvarez-dibujar-trayectorias 11/17

Bresenham - Cuádricas- Ecuación

- Si se coloca el vértice en el origen la ecuación

de forma implícita resultante es

- 2-way symmetry 

x −h ( )2= 4q y −k ( )

f (x , y ) = x 2 − 4qk 

[!

Page 12: Bresenham Alvarez Dibujar Trayectorias

8/16/2019 Bresenham Alvarez Dibujar Trayectorias

http://slidepdf.com/reader/full/bresenham-alvarez-dibujar-trayectorias 12/17

Bresenham - Cuádricas

- Problema: tangente varía de cero a infinito 

- Al igual que con elipses hay que dividir la curva

= 2

- 1 Pendiente va desde 0 hasta 1

- 2 Pendiente va desde 1 hasta infinito 

- Derivando, se tiene que la pendiente de la

tangente es 1 cuando

Error y Decisión

[!

Page 13: Bresenham Alvarez Dibujar Trayectorias

8/16/2019 Bresenham Alvarez Dibujar Trayectorias

http://slidepdf.com/reader/full/bresenham-alvarez-dibujar-trayectorias 13/17

Bresenham - Cuádricas

- Caso 1e 0 = x 2 +2x +1− 4qy −2q 

Error y Decisión

- Error inicial

- Decisión E() o NE ()-

-

⇒   i +1  = i  +2   +3

⇒   i +1  = i  +2x +3− 4

[!

 " #$ 

Page 14: Bresenham Alvarez Dibujar Trayectorias

8/16/2019 Bresenham Alvarez Dibujar Trayectorias

http://slidepdf.com/reader/full/bresenham-alvarez-dibujar-trayectorias 14/17

Bresenham - Cuádricas

- Caso 2e 0 = x 2 + x +

 1

4− 4qy − 4q 

Error y Decisión

- Error inicial

- Decisión N() o NE ()

-

-

⇒   i +1  = i  −8

⇒  i +1 =

i  +

3  +

2

[!

Sólo operaciones enteras en el cálculo iterativo

Page 15: Bresenham Alvarez Dibujar Trayectorias

8/16/2019 Bresenham Alvarez Dibujar Trayectorias

http://slidepdf.com/reader/full/bresenham-alvarez-dibujar-trayectorias 15/17

BresenhamImportancia y Aplicaciones

- Preciso, cáculo incremental usando adición, sustracción

y shifting (operaciones enteras), las cuales son standard

en la mayoría de las arquitecturas. Muy eficiente

- Para dibujo de líneas rectas, círculos, elipses,

polinomios de segundo grado, curvas de Bézier 3erorden (grado 2) o mayor si se dividen en subcurvas de

3er orden.

Page 16: Bresenham Alvarez Dibujar Trayectorias

8/16/2019 Bresenham Alvarez Dibujar Trayectorias

http://slidepdf.com/reader/full/bresenham-alvarez-dibujar-trayectorias 16/17

BresenhamImportancia y Aplicaciones

- Implementado en plotters, en el firmware o

hardware de la mayoría de las tarjetas gráficas

modernas y en muchas librerías gráficas.

- Hay que modificarlo para lograr anti-aliasing

Page 17: Bresenham Alvarez Dibujar Trayectorias

8/16/2019 Bresenham Alvarez Dibujar Trayectorias

http://slidepdf.com/reader/full/bresenham-alvarez-dibujar-trayectorias 17/17

Referencias[1] Wikipedia (material consultado mas no citado):

http://es.wikipedia.org/wiki/Algoritmo_de_Bresenham

http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm

[2] http://materias.fi.uba.ar/6671/primitivas_graficas2.pdf

[3] http://free.pages.at/easyfilter/bresenham.html

[4] http://www.differencebetween.com/difference-between- dda-and-vs-bresenham-

algorithm/ 

[5] Laura M. Castro Souto, Gráficos en Computación . Curso 2000/2001. Disponible

en: http://www.madsgroup.org/~laura/recursos-ii/GC.pdf

[6] John Kennedy, A Fast Bresenham Type Algorithm for Drawing Ellipses .Disponible en:

http://homepage.smc.edu/kennedy_john/belipse.pdf

[7] http://www.abreojosensamblador.net/html/Pags/Cap23.html

[8] http://www.cs.colostate.edu/~cs410/lectures/L12_bresenham2.pdf