2.5.2 Algoritmo de Punto Medio - Bresenham

El planteamiento que utilizamos aquí es similar a aquel que empleamos en el despliegue de una circunferencia de rastreo. Dados los parámetros rx, ry y (xc , yc), determinamos los puntos (x, y) para una elipse en posición estándar centrada en el origen y luego alteramos los puntos, de modo que la elipse esté centrada en (xc , yc).

El método de punto medio para elipse se aplica a lo largo del primer cuadrante en dos partes.

Definimos la ecuación de una elipse con (xc , yc) = (0,0) como

felipse(x, y) = r2yx2 + r2xy2 - r2xr2y

que tiene las propiedades siguientes:

felipse(x, y) < 0 si (x , y) está adentro de la frontera de la elipse

felipse(x, y) <=0 si (x , y) está en la frontera de la elipse

felipse(x, y) < 0 si (x , y) está afuera de la frontera de la elipse

Así, la función de la elipse felipse(x, y) sirve como un parámetro de decisión en el algoritmo de punto medio. En cada posición del muestreo, seleccionamos el pixel siguiente a lo largo de la trayectoria de la elipse de acuerdo con el signo de la función de la elipse evaluada en el punto medio entre los dos pixel candidatos.

En los pasos siguientes se presenta el algoritmo de la elipse de punto medio:

1.Se capturan rx , ry y el centro de la elipse (xc , yc ) y se obtiene el prime punto de una elipse centrada en el origen como (x0 , y0 )= (0 , ry)

2.Se calcula el valor inicial del parámetro de decisión en la región 1 como p10  = r2y  - r2x ry + (1 r2x  )/4

3.En cada posición xk en la región 1, al iniciar en k=0 , se realiza la prueba siguiente. Si p1k <0, el punto siguiente a lo largo de la elipse centrada en (0 ,0) es (xk+1 , yk) y   p1k+1 = p1k  +2 r2y xk+1 +  r2y  

De otro modo, el punto siguiente a lo largo del círculo es (xk +1 , yk - 1) y  p1k+1 = p1k  +2 r2y xk+1 - 2 r2x yk+1 +r2y  con 2 r2y xk+1 = 2 r2y xk + 2 r2y  ,  2 r2x yk+1 = 2 r2x yk -  2 r2x          

4.Se calcula el valor inicial del parámetro de decisión en la región 2 utilizando el último punto (x0 , y0) calculado en la región 1 como  p20  = r2y  (x0 + 1/2)2 + r2x(y0 - 1)2 -  r 2x r2y  

5.En cada yk  posición en la región 2, al iniciar en k = 0, se realiza la prueba siguiente. Si p2k >0, el punto siguiente a lo largo de la elipse centrada en (0 ,0) es (xk , yk - 1) y   p2k+1 = p2k  - 2r2x yk+1 +  r2x  

De otro modo, el punto siguiente a lo largo del círculo es (xk +1 , yk - 1) y  p2k+1 = p2k  +2 r2y xk+1 - 2 r2x yk+1 +r2x  utilizando los mismos cálculos incrementales para x y que en la región 1.

6.Se determinan puntos de simetría en los otros tres cuadrantes.

7.Se mueve cada posición de pixel calculada (x , y) a la trayectoria elíptica centrada en (xc , yc)y se trazan los valores de las coordenadas:

   x = x + xc     y = y + yc

 8.Se repiten los pasos para la región 1 hasta que 2 r2y x>= 2 r2x y.

Volver arriba