GUIA - 3 - SIS2430 Programación Grafica
GUIA - 3 - SIS2430 Programación Grafica
GUIA - 3 - SIS2430 Programación Grafica
PROGRAMACIÓN GRAFICA
LABORATORIO DE PROGRAMACIÓN – SIS 2430
LABORATORIO NRO 3.
OBJETIVOS.
Aplicar los algoritmos Punto Medio, DDA y Bresenham para el dibujado de circunferencias
Dibujar circunferencias en un sistema coordenado
FUNDAMENTO TEORICO.
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
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
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)
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