Tema 04a - Primitivas Gráficas - Circunferencias

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 6

Universidad Nacional de la Amazonía Peruana - Facultad de Ingeniería de Sistemas e Informática.

Curso: Computación Gráfica.

PRIMITIVAS GRÁFICAS - CIRCUNFERENCIAS

04.1. Circunferencias.

Una circunferencia se define como un conjunto de puntos que se encuentran


en su totalidad a una distancia “r” de su posición central (Xc, Yc).

04.2. Propiedades de las Circunferencias.

Una circunferencia se expresa por medio de teorema de Pitágoras en


coordenadas cartesianas como:
Y

( x  xc ) 2  ( y  yc ) 2  r 2 .................(1)

yc

xc X
Podríamos utilizar la ecuación (1) para calcular la posibilidad de una
circunferencia pasando a los largo del eje X en pasos unitarios de
xc  r a xc  r y calcular los valores correspondientes de “Y” en cada
posición como:
Y

(0,0)
X
Figura 2.
Mitad positiva de una circunferencia trazada con
la ecuación (2), y con (Xc, Yc) = (0,0).

y y r 2 (cx  x ) 2 .......................(2)

TEMA 04: Primitivas Gráficas - Circunferencias. Pag. 1/xx


Universidad Nacional de la Amazonía Peruana - Facultad de Ingeniería de Sistemas e Informática.
Curso: Computación Gráfica.

No obstante, éste no es el mejor método para generar una circunferencia.


Un problema con este planteamiento es que utiliza cálculos considerables
en cada paso. Por otro lado, el espacio entre las posiciones de píxel
trazadas no es uniforme.

Podríamos ajustar el espacio al intercambiar “X” e “Y” (pasar por los


valores de “Y” y calcular los valores de “X”) siempre que el valor
absoluto de la pendiente de la circunferencia sea mayor que 1. Pero esto
sólo incrementa el cálculo y el procesamiento que el algoritmo requiere.
Otra manera de eliminar el espacio irregular consiste en calcular los
puntos a lo largo de la frontera circular utilizando las coordenadas
polares “r” y “Ө”. Al expresar la ecuación de la circunferencia en forma
polar paramétrica se obtiene el par de ecuaciones:

x = xc + r * cos Ө
… (3)
y = yc + r * sen Ө

Cuando un despliegue se genera con estas ecuaciones utilizando un tamaño


de paso angular fijo, una circunferencia se traza con puntos equidistantes
a lo largo de la misma. El tamaño de paso seleccionado para Ө depende de
la aplicación, así como del dispositivo de despliegue.

Es posible reducir cálculo al considerar la simetría de la circunferencia


por ser similar en cada cuadrante.
Después de generar la sección circular del I cuadrante, podemos decir que
es igual al II cuadrante respecto al
eje Y; y las secciones circulares del -y, x y, x
III y IV cuadrante son simétricas al
I y II cuadrante respecto al eje X.

A partir de esto, podemos señalar que


si partimos en 2 cada cuadrante
(respecto a la línea de 45º), cada -x, y 45º x, y
parte será simétrica con respecto a -x, -y x, -y
la otra, obteniendo así octantes.

Al obtener cada punto de la


circunferencia en un octante, por
simetría se obtienen los demás
-y,-x y, -x
octantes. O sea, sólo basta calcular
los puntos desde X = 0 hasta X = Y. Figura 3.
Simetría en una circunferencia. El cálculo de un
punto de la circunferencia (X, Y) en un octante
da como resultado los puntos para los otros
siete octantes.

TEMA 04: Primitivas Gráficas - Circunferencias. Pag. 2/xx


Universidad Nacional de la Amazonía Peruana - Facultad de Ingeniería de Sistemas e Informática.
Curso: Computación Gráfica.

04.3. Algoritmo del Punto Medio para el trazo de Circunferencias.

Se efectúa un muestreo en intervalos unitarios y determinamos la posición


del píxel más cercano a la trayectoria específica de la curva en cada
paso. Para un Radio (r) determinado y una posición central en la pantalla
(Xc, Yc), podemos primero calcular posiciones de píxeles para una
trayectoria circular centrada en el origen (0,0), a lo largo de la sección
circular de X=0 a X=Y, en el primer cuadrante la pendiente de la curva
varía entre 0 y -1, por lo tanto, podemos tomar pasos unitarios en la
dirección positiva de X en este octante y utilizar un parámetro de
decisión para determinar cuál de las dos posiciones posibles de “Y” es la
más próxima a la trayectoria de la circunferencia en cada paso, y las
posiciones de los otros siete octantes se obtiene por simetría.

La función de la circunferencia es:


 circunferencia ( x, y)  x  y 2  r 2 ...........( 4)
2

Para cualquier punto (X, Y) en la frontera de la circunferencia con radio


“r” satisface la ecuación: ƒcircunferencia(X,Y) = 0 si el punto está en
el interior de la circunferencia; y si está en el exterior, es positiva.

La posición relativa se puede determinar al verificar el signo de la


función:

< 0, si (X,Y) está dentro de la frontera de la circunferencia


(X,Y) = 0, si (X,Y) está en la frontera de la circunferencia ……(5)
=
> 0, si (X,Y) está fuera de la frontera de la circunferencia

Las pruebas de la función de la circunferencia se realizan para las


posiciones medias, entre los píxeles cercanos a la trayectoria de
circunferencia en cada paso del muestreo.

Así, la función de circunferencia es el parámetro de decisión en el


algoritmo de Punto Medio y podemos determinar cálculos incrementales para
esta función, al igual que en el algoritmo de la recta.
x2+y2-r2 =0
La Figura 4 muestra el punto medio
entre dos píxeles candidatos en la yk
posición de muestreo xk + 1.
Suponiendo que acabamos de trazar el yk-1
píxel en (xk+1, yk), en seguida
necesitamos determinar si el píxel en Pto.
Medio
la posición (xk+1, yk) o aquel en la
xk xk+1 xk+2
posición (xk+1, yk-1), está más cerca
de la circunferencia. Figura 4.
Punto medio entre píxeles candidatos en la
posición de muestreo xk+1 a lo largo de una
trayectoria circular.

TEMA 04: Primitivas Gráficas - Circunferencias. Pag. 3/xx


Universidad Nacional de la Amazonía Peruana - Facultad de Ingeniería de Sistemas e Informática.
Curso: Computación Gráfica.

Nuestro parámetro de decisión es la función de circunferencia (4) evaluada


en el punto medio entre 2 píxeles:
Pk = ƒcirc (xk+1, yk-1/2)
Pk = (xk+1)2 (yk-1/2) 2 - r2 ..... (6)

Si Pk < 0: el punto medio está dentro de la circunferencia y el píxel en


la línea de rastreo yk está más próximo a la frontera de la
circunferencia. De otro modo, la posición media se localiza afuera de la
frontera de la circunferencia o en la misma frontera, y seleccionamos el
píxel en la línea de rastreo yk-1.

Si Pk>0: El punto medio está fuera de la circunferencia.


 yk es más próximo a la frontera.

Si Pk=0: El punto medio está en la circunferencia.


 yk-1 es más próximo a la frontera.

Los parámetros de decisión sucesivos se obtienen al realizar cálculos


incrementales. Obtenemos una expresión recursiva para el siguiente
parámetro de decisión cuando evaluamos la función de circunferencia en la
posición de muestreo xk-1+1 = xk+2.

Pk+1 = ƒcircunferencia (xk+1+1, yk+1- ½ )

Pk+1 = ((xk+1)+1)2 + (yk+1 - ½ )2 - r2

Pk+1 = Pk + 2(xk+1) + (y2k+1 – y2k) - (yk+1 – yk) + 1 ...(7)

Donde: yk+1 es ya sea yk o yk-1 dependiendo del signo de Pk.

Los incrementos para obtener Pk+1 son:


- Pk < 0  2Xk+1 + 1
- Pk >= 0  2Xk+1 + 1 – 2yk+1

La evaluación de los términos 2xk+1 y 2yk+1 también puede ejecutarse de


manera secuencial como:
- 2xk+1 = 2xk + 2
- 2yk+1 = 2yk - 2

En la posición de inicio (0, r), estos dos términos tienen los valores 0 y
2, en forma respectiva. Cada valor sucesivo se obtiene al sumar 2 al valor
previo 2x y sustrayendo 2 al valor 2y.

El parámetro de decisión inicial se obtiene al evaluar la función de la


circunferencia en la posición de inicio (x0, y0) = (0,r).

P0 = ƒcircunferencia (1, r-1/2)


P0 = 1 + (r - ½)2 – r2

P0 = 5/4 – r ..... (8)

Trabajando con enteros:


P0 = 1 – r

TEMA 04: Primitivas Gráficas - Circunferencias. Pag. 4/xx


Universidad Nacional de la Amazonía Peruana - Facultad de Ingeniería de Sistemas e Informática.
Curso: Computación Gráfica.

Este algoritmo se resume en el procedimiento siguiente:

Datos de Ingreso:
Enteros: XCentro, YCentro, Radio

Procedimiento CirculoPuntoMedio (enteros: Radio)

Variables enteros: X, Y, P

P = 1 – Radio
X = 0
Y = Radio

Llamar Procedimiento Trazar (XCentro, YCentro, X, Y)

Hacer mientras X < Y


Si P < 0 entonces
X = X + 1
Sino
X = X + 1
Y = Y - 1
Fin Si

Si P < 0 entonces
P = P + (2 * X) + 1
Sino
P = P + (2 * X) + 1 - (2 * Y)
Fin Si

Llamar Procedimiento Trazar (XCentro, YCentro, X, Y)

Fin Mientras

Fin Procedimiento CirculoPuntoMedio

Procedimiento Trazar (enteros: XCentro, YCentro, X, Y)


'Traza el primer cuadrante del círculo:
PonerPixel ((XCentro + X), (YCentro + Y), intensidad)
PonerPixel ((XCentro + Y), (YCentro + X), intensidad)

'Traza el segundo cuadrante del círculo:


PonerPixel ((XCentro - X), (YCentro + Y), intensidad)
PonerPixel ((XCentro - Y), (YCentro + X), intensidad)

'Traza el tercer cuadrante del círculo:


PonerPixel ((XCentro - X), (YCentro - Y), intensidad)
PonerPixel ((XCentro - Y), (YCentro - X), intensidad)

'Traza el cuarto cuadrante del círculo:


PonerPixel ((XCentro + X), (YCentro - Y), intensidad)
PonerPixel ((XCentro + Y), (YCentro - X), intensidad)
Fin Procedimiento Trazar

TEMA 04: Primitivas Gráficas - Circunferencias. Pag. 5/xx


Universidad Nacional de la Amazonía Peruana - Facultad de Ingeniería de Sistemas e Informática.
Curso: Computación Gráfica.

04.4. Algoritmo DDA para el trazo de Circunferencias.

Datos de Ingreso:
Enteros: XCentro, YCentro, Radio

Procedimiento CirculoDDA (enteros: XCentro, YCentro Radio)

Variables: enteros  X, Y, doble  P

P = Radio
X = Redondear(P)
Y = 0

Hacer mientras Y < X

Llamar Procedimiento Trazar (XCentro, YCentro, X, Y)

P = P – (Y / P)
X = Redondear(P)
Y = Y + 1

Fin Mientras

Fin Procedimiento CirculoDDA

TEMA 04: Primitivas Gráficas - Circunferencias. Pag. 6/xx

También podría gustarte