Documente Academic
Documente Profesional
Documente Cultură
+ + + =
=
Mediante una serie de
manipulaciones algebraicas p1 se
obtiene de (x1, y1) = (0, r)
r p 2 3
1
=
El valor de p
i+1
es:
( ) | |
( )
2 2
1
2
1
2
1
2 1
1 1 2
r y
y x p
i
i i i
+ + + + =
+
+ +
Simplificando de p
i
tenemos:
( )
i i i i
y y r p x 2 2 2 1 2
2 2 2
+ + + = +
Ahora reemplazaremos en p
i+1
( )
( )
i i
i i i i i
y y
y y x p p
+ + + =
+
+ +
1
2 2
1 1
2
2 6 4
Pasos para el Algoritmo
1. Seleccionar la primera posicin
( ) ( ) r y x , 0 ,
1 1
=
2. Calcule el primer parmetro
como
r p 2 3
1
=
si pi <0, la siguiente posicin es
(xi+1,yi), si no es (xi+1,yi-1)
3. Incremente x en 1.
Si p
i
< 0 seleccione p
i+1
como
6 4
1
+ + =
+ i i i
x p p
y en caso contrario seleccione
( ) 10 4
1
+ + =
+ i i i i
y x p p
Si p
i+1
<0 el siguiente punto
ser(x
i
+2, y
i+1
). De lo
contrario es (x
i
+2, y
i+1
1). si
p
i
<0 La coordenada y es
y
i+1
=y
i
Si p
i
> 0 la coordenada y es
y
i+1
= y
i
1
4. Repita el paso 3 hasta que x y y
sean iguales.
III. ALGORITMO
IV. SALIDAS
Fig. 6 Programa en C# para algoritmo de
Bresenham
W
x<y
Circle_Points (x,y,value)
si
p<0
p= p + 4 * x + 6 p = p + 4 * (x y) + 10
y = y 1
x = x + 1
X=0
y =r
Cir_Bresenham(radius,value:integer)
p= 3-2*(r)
Fin
si
x==y
Circle_Points (x,y,value)
Fig. 7 Graficacin del circulo Programa en
C# para el algoritmo de Bresenham
V. PROGRAMA EN C++
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
void main ()
{
int xc,yc,r;
clrscr();
//ingresando el centro
cout<<"ingrese el primer punto
:";cin>>xc;
cout<<"ingrese el segundo punto
:";cin>>yc;
cout<<"ingrese el radio de la
circulo :";cin>>r; //radio de la
circunferencia
int gdriver=VGA;
int gmode=VGAHI;
initgraph(&gdriver,&gmode,"C:\\TC\
\BGI");
float da,db,s;
int x,y;
x=0;
y=r;
putpixel(xc,yc+r,4);
putpixel(xc,yc-r,2);
putpixel(xc-r,yc,9);
putpixel(xc+r,yc,14);
while(abs(x)<y)
{
da=(x+1)*(x+1)+y*y-r*r;
db=(x+1)*(x+1)+(y-1)*(y-1)-r*r;
s=da+db;
if(s>0)
{
x=x+1;
y=y-1;
}
else
{
x=x+1;
}
putpixel(x+xc,y+yc,9);
putpixel(x+xc,-y+yc,14);
putpixel(-x+xc,y+yc,14);
putpixel(-x+xc,-y+yc,2);
putpixel(y+xc,x+yc,8);
putpixel(y+xc,-x+yc,10);
putpixel(-y+xc,x+yc,2);
putpixel(-y+xc,-x+yc,13);
}
VI. CONCLUSIONES
Basndonos en los algoritmos ms
comunmente conocidos dentro de
este campo y en diferentes mtodos
de representacin digital de
funciones, abordaremos un anlisis
detallado a nivel terico y tcnico,
destacando sus distintas estrategias y
planteamientos para obtener el mejor
rendimiento y/o
calidad,as como las principales
ventajas e inconvenientes de cada
uno de los mismos. Adems,
intentaremos ir un paso ms all para
aunar, en la medida de lo posible,
todas las tcnicas que les permiten
destacar en trminos de calidad de
los resultados y tiempo de ejecucin
para obtener nuevos algoritmos que
permitan optimizar el procesamiento
de reduccin de imgenes digitales
en relacin calidad/tiempo, sacar
conclusiones de los resultados
obtenidos, y proporcionar posibles
propuestas para mejorar estos
avances.
VII. AGRADECIMIENTOS
Quisiera expresar mi profundo
agradecimiento a mi profesor
Roberto Nina por su apoyo
incondicional a la realizacin de ste
artculo proporcionando las
facilidades logsticas del caso.
VIII. REFERENCIAS
[1] HTTP://WWW.ARCHIVE.ORG/DETAILS
/ALANKEYD1987
[2] DAVID ROGERS (1998). PROCEDURAL
ELEMENTS FOR COMPUTER GRAPHICS.
MCGRAW-HILL.
[3] PETER SHIRLEY AND OTHERS. (2005).
FUNDAMENTALS OF COMPUTER GRAPHICS.
A.K. PETERS, LTD.
[4] R. D. PARSLOW, R. W. PROWSE, RICHARD ELLIOT
GREEN (1969). COMPUTER GRAPHICS:
TECHNIQUES AND APPLICATIONS.
[5] JEFFREY J. MCCONNELL (2006). COMPUTER
GRAPHICS: THEORY INTO PRACTICE. JONES &
BARTLETT PUBLISHERS.