GUIA - 3 - SIS2430 Programación Grafica

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 4

FACULTAD NACIONAL DE INGENIERÍA

INGENIERÍA DE SISTEMAS E INGENIERÍA INFORMÁTICA

PROGRAMACIÓN GRAFICA
LABORATORIO DE PROGRAMACIÓN – SIS 2430
LABORATORIO NRO 3.

TEMA: ALGORITMOS PARA TRAZADO DE CIRCUNFERENCIAS

OBJETIVOS.

 Aplicar los algoritmos Punto Medio, DDA y Bresenham para el dibujado de circunferencias
 Dibujar circunferencias en un sistema coordenado

FUNDAMENTO TEORICO.

Algoritmos para graficar circunferencias.- Se utilizan


los algoritmos para circunferncias DDA, Bresenham y de
punto medio cuyos algoritmos se dan más adelante

Simetría: se divide la circunferencia en 8 arcos


simétricos. Se desarrollan los pixel del arco definido por
x≥0, y ≥ 0, x ≥ y. Quedan los pixels correspondientes en
los otros 7 arcos simétricos

Circulo Punto Medio.- Siguiendo un razonamiento similar al


empleado para líneas se traslada para dibujar
circunferencias
–Utiliza aritmética entera
–Utiliza la simetría del círculo
–Si el último punto dibujado es (xk,yk) entonces el siguiente será (xk+1,yk) o (xk+1,yk-1)
–El parámetro de decisión es el punto medio de ambos

Algoritmo DDA.- Se obtiene su ecuación diferencial.

Partiendo de la ecuación de la circunferencia, y derivando.

Se obtiene su ecuación diferencial:

Como en el caso de rectas este método evalúa la ecuación diferencial a intervalos finitos. Debe encontrar una
secuencia de puntos de la pantalla (X0, Y0), (X1, Y1),..., (Xn, Yn) que formen el arco de circunferencia.
Entonces si tengo un punto de la discretización (Xk, Yk), debe ser:

Aquí ε no es constante

Con esta forma de determinar los puntos de la discretización resulta

por lo tanto evalúa la ecuación diferencial a intervalos finitos.


El valor de ε determina la frecuencia de muestreo, si es muy pequeño, el cómputo será redundante y si es muy
grande los puntos estarán muy separados.
El valor que se elige es ε x=1. El algoritmo empieza en el pixel P=(r,0)

Alumno:………………………… Pá gina 1
Algoritmo de Bresenham.- Se basa en analizar el error entre la verdadera circunferencia y su
discretización. En cada paso elige como próximo pixel a aquel que minimice el error.

En este caso se toma como error la distancia al cuadrado del pixel (x,y) a la circunferencia de centro en el
origen y radio r:
Si elegimos S el próximo pixel es PS=(x, y+1) entonces:
Si elegimos D, entonces el próximo pixel es PD=(x-1, y+1).

Entonces la elección del pixel PS o PD dependerá de cual de los dos errores tiene menor módulo

Es lo mismo que
Además –2x+1 ≤ -1 y 0< eS < 1 entonces

El algoritmo utiliza solo operaciones enteras

TAREA.- A continuación se dan estos algoritmos que se utilizarán para realizar la tarea:
Para facilitar el graficado de los sectores simétricos utilizamos la función: simétrico(xc, yc, x, y)

simetrico(xc,yc, x, y) circulo_PUNTO_MEDIO (xc, yc, radio)


dibujapixel(xc+x,yc+y); //double x,y,p;
dibujapixel (xc-x,yc+y); x=0; y=radio;
dibujapixel (xc+x,yc-y); simetrico(xc,yc,x,y);
p=1-radio;
dibujapixel (xc-x,yc-y);
mientras(x<y) hacer
dibujapixel (xc+y,yc+x);
si(p<0) entonces
dibujapixel (xc-y,yc+x); x++;
dibujapixel (xc+y,yc-x); sino
dibujapixel (xc-y,yc-x); x+=1; y-=1;
finSimetrico finSi
si(p<0)entonces
p=p+2*x+1;
sino
p=p+2*(x-y)+1;
finSi
simetrico(xc,yc,x,y);
finMientras
fin circulo_PUNTO_MEDIO

Alumno:………………………… Pá gina 2
circulo_DDA( xc, yc, radio) circulo_BRESENHAM (xc, yc, radio)
//double x, y, p,rx; //double x,y,e;
rx=radio; x=radio;
x=rx; y=0;
y=0; e=0;
mientras(y<x) hacer mientras(y<x) hacer
simetrico(xc,yc,x,y); simetrico(xc,yc,x,y);
rx=rx-(y/rx); e=e+2*y+1;
x=rx; y++;
y++; si((2*e)>(2*x-1)) entonces
fin mientras x--;
fin circulo_DDA e=e-2*x+1;
finSi
FinMientras
Fincirculo_BRESENHAM

PRACTICA

1.- Utilizando cualquiera de los algoritmos de circunferencia dibujar los dos gráficos siguientes (en forma
separada)

2.- Combinando con algún algoritmo de líneas, dibujar: una semicircunferencia (parte derecha)
3.- Combinando con algún algoritmo de líneas dibujar 2 cuadrantes opuestos de un círculo

Alumno:………………………… Pá gina 3
CUESTIONARIO.-

Responder a lo siguiente:
1. ¿Por qué no se utiliza directamente la ecuación y= sqrt(r2- x2) para dibujar circunferencias?
2. ¿Cuál es la razón para utilizar octantes en el dibujado de circunferencias?
3. ¿Qué algoritmo se utilizaría para dibujar circunferencias en coordenadas polares?

Alumno:………………………… Pá gina 4

También podría gustarte