Sunteți pe pagina 1din 8

Algoritmo de Bresenham para trazado de

circunferencias Y sistemas de Graficacin


Elizabeth Rosario Ururi Herrera
(1)

Glenda Patricia Arcaya Chambilla
(2)
Escuela Acadmico Profesional de Ingeniera en Informtica y Sistemas
Universidad nacional Jorge Basadre Grohmann
eururiherrera@gmail.com
(1)

pathy_23@hotmail.com
(2)


Abstract En el presente trabajo
hablaremos de la graficacin por
computadora que se define como la
creacin de imgenes grficas por medio
de un computador. Sin embargo, tal
definicin no alcanza a describir la
diversidad de aplicaciones y el impacto
ejercido por esta rama de las ciencias de la
computacin.
I. INTRODUCCION
La visin es el sentido que mayor
informacin aporta al ser humano.
Por este motivo la forma ms natural de
presentar la informacin por parte de
cualquier sistema de computacin es
mediante la generacin de imgenes, bien a
travs de una impresora (copia permanente) o
bien a travs de un monitor (copia temporal).
Como ya hemos estudiado las impresoras,
ahora vamos a ver cmo funcionan los
monitores, que son parte fundamental de los
sistemas de vdeo.
Es muy difcil escoger un conjunto de
primitivas graficas que sea adecuado para la
representacin de todo tipo de entidades
graficas. Sin embargo, el siguiente
subconjunto en la prctica resulta ser
suficiente: puntos, segmentos de recta,
circunferencia y polgonos.

II. FUNDAMENTO TEORICO
A. Historia de la Graficacin por
Computadora
Un gran avance en grficos por
ordenador iba a venir de un
estudiante del MIT, Ivan
Sutherland. En 1961 Sutherland
cre un programa de dibujo
informtico llamado
Sketchpad. Con el uso de un
lpiz ptico, Sketchpad permita
a uno dibujar formas simples en
la pantalla del ordenador,
salvarlos e incluso su posterior
recuperarlos. El lpiz ptico en s
tena una pequea clula
fotoelctrica en la punta. Esta
clula emite un pulso electrnico
cada vez que se colocaba
adelante de la pantalla del
ordenador.








Fig. 1 Linea de Tiempo de la Graficacin
por Computadora
1950: Computadora
Digitales
1959: Sistema de dibujo
por computadora, la DAC1
1960-1970: Programa que
llam Sketchpad
1970-1980:ANIMAC, CAESAR
y SCANIMATE

1. Padre de la Graficacin por
Computadora
Ivan Sutherland es considerado
por muchos ser el creador de
los grficos de la computadora.
Comenzando con su tesis de
doctorado, Sketchpad o bloc
de bocetos, Sutherland ha
contribuido con numerosas
ideas al estudio de los grficos
de la computadora y de la
interaccin de la computadora.
Ivan introdujo conceptos tales
como el modelado
tridimensional de la
computadora, simulaciones
visuales, diseo automatizado
(CAD) y realidad virtual.
2. Por qu es considerado el
Padre de la Graficacin por
computadora?
Por desarrollar su tesis,
"Sketchpad: A Man-machine
Graphical Communications
System." (Un sistema de
comunicaciones grfico
humano-mecnico), el primer
Graphical User Interface
(Interfaz grfica de usuario).
El Sketchpad era un programa
nico desarrollado para la
computadora Tx-2, una
computadora nica en s
misma [1].

Fig. 2 Ivan Sutherland haciendo una
demostracin del Sketchpad (video) 46:29
min.
3. Conceptos y Principios
a. Imagen Digital
Una imagen digital es una
representacin de dos
dimensiones de imagen en
formato binario como una
secuencia de ceros y unos.
Las imgenes digitales se
incluyen tanto vector y las
imgenes raster, pero
imgenes de la trama se
utilizan con ms frecuencia
[2]
b. Pixel
En imagen digital, un pixel
es un nico punto en una
imagen raster. Los pxeles
son normalmente
dispuestos en forma regular
en 2 dimensiones red, y son
a menudo representados
mediante puntos o
cuadrados. Cada pixel es un
ejemplo de una imagen
original, donde ms
muestras suelen
proporcionar una
representacin ms exacta
de la original. La intensidad
de cada pxel es variable, en
los sistemas de color, cada
pxel tiene tpicamente tres
componentes, tales como
rojo, verde y azul [3].
c. Grficos
Grficos son visuales
presentaciones sobre alguna
superficie, como una pared,
tela, pantalla de la
computadora, papel, piedra
o de marca, informar,
ilustrar o entretener.
Ejemplos de ello son las
fotografas , dibujos , arte
lineal , grficos , diagramas
, tipografa , nmeros ,
smbolos , geomtricos
diseos, mapas , dibujos de
ingeniera , u otras
imgenes .
d. Rendering
El render es el proceso de
generacin de una imagen
de un modelo (o modelos
de lo que colectivamente se
podra llamar un archivo de
escena), por medio de
programas de ordenador.
Un archivo de escena
contiene objetos de un
lenguaje estrictamente
definido o una estructura de
datos, que contendra la
geometra, el punto de
vista, textura, iluminacin y
sombreado de la
informacin como la
descripcin de la escena
virtual. Los datos
contenidos en el archivo de
escena se pasan a un
programa de procesamiento
para ser procesado y salida
a una imagen digital o de
grficos de trama archivo
de imagen. El programa de
renderizado es
generalmente integrado en
el software de grficos por
ordenador, aunque otros
estn disponibles como
plug-ins o programas
totalmente independientes.
El trmino "representacin"
puede ser, por analoga con
una "representacin
artstica" de una escena.
Aunque los detalles
tcnicos de los mtodos de
representacin varan, los
retos generales para superar
en la produccin de una
imagen 2D a partir de una
representacin en 3D
almacenados en un archivo
de escena se perfilan como
la pipeline de grficos a lo
largo de un dispositivo de
representacin, como una
GPU [5].
e. Pantallas
Gracias a los avances en la
tecnologa de pantallas, hay
ahora varias clases en los
televisores modernos:
o Tubo de rayos catdicos
o CRT: Las pantallas
ms comunes son tubos
de visin directa con la
que se logran hasta 37
pulgadas de diagonal.
o Proyeccin: Son
televisores de gran
pantalla, hasta 100
pulgadas de diagonal o
ms. Se usan tres tipos
de sistemas de
proyeccin: con TRC,
con LCD, y DLP (con
chip de micro espejos).
Los televisores de
retroproyeccin existen
desde la dcada del 70,
pero en aquella poca no
tenan la definicin de
un televisor comn de
rayos catdicos.
o Pantalla de cristal
lquido y de plasma: Los
progresos actuales
permiten fabricar
televisores de pantalla
plana que utilizan
tecnologa de cristal
lquido de matriz activa
(LCD), o plasma. Estn
preparados para la alta
definicin (1920x1080)
pxeles, aunque algunos
tienen menos resolucin.
o Matriz de LED: Se ha
convertido en una de las
opciones para vdeo en
exteriores y en estadios,
desde el advenimiento
de diodos
electroluminiscentes
ultra luminosos y sus
circuitos respectivos [4].

f. Tarjeta de Grafica

La tarjeta grfica o tarjeta de
video se considera como una
interfaz de salida de datos.
Un adaptador de vdeo tpico
para PC's constar de una
placa de circuito impreso con
un conector de 14 o 15 pines
al que se conecta el cable del
monitor (hay monitores que
no cumplen esta
caracterstica), y un conector
de ranura de 2 x 31 contactos
que se inserta en una de las
ranuras de expansin (slots)
de la placa base del PC [5].
En la siguiente tabla se
muestra como, segn la
cantidad de memoria que
dispongamos y la resolucin
que tengamos definida,
podremos mostrar por
pantalla un nmero de
colores dado. Adems se
comenta que tamao ha de
tener el monitor
recomendado para verlo.

Fig. 3 Cantidad de Memoria Disponible y
la Resolucin
En realidad el ojo humano no
puede distinguir 167 millones
de colores, pero es slo una cifra
que indica el nmero de bits que
estamos manejando. Por
ejemplo, para 65.536
necesitaremos 16 bits (2 elevado
a 16 es 65.536). Tambin
podemos tener imgenes en 32
bits: 24 bits para los 167
millones de color y otros 8 para
el canal alfa (para las
transparencias). Pero apenas se
percibe el cambio de 16 a 24 bits
ms que en una diferencia de
velocidad en el refresco de los
grficos.
Considerando lo siguiente:
o 16 colores = 4 bits.
o 256 colores = 8 bits.
o 64 kcolores =16bits
o 16,7 Mcolores = 24 bits.

4. Ejercicio Propuesto
o Cunto tiempo se tardara en
cargar un bfer de imagen de
640 por 480 con 12 bits por
pixel, si se pueden transferir 10
a la 5 bits por segundo?
a. Primero, hallamos los
pixeles con la resolucin
de 640*480
o 640 x 480 = 307 200
Pixeles
o 307 200 x 12 = 3
686 400 Bits
o 3 686 400 Bits / 8
Bits = 460 800 Bytes
o 460 800 Bytes /
1024 Bytes = 450
KB
b. Calculamos la
transferencia de datos
o 10
5
Bits/Seg = 100
000 Bits / 8 Bits = 12
500 Bytes
o 12 500 Bytes / 1024
Bytes = 12.207 KB

c. Entonces, el tiempo que
demorara en cargar es
o 450 KB / 12.207 KB
= 36.86 Seg
o cunto tiempo se tardara en
cargar un bfer de imagen de
24 bits por pixel con una
resolucin de 1280 por 1024
utilizando este mismo ndice
de transferencia?
a. Segundo, hallamos los
pixeles con la resolucin
de 1280*1024
o 1280 x 1024 = 1 310
720 Pixeles
o 1 310 720 x 24 = 31
457 280 Bits
o 31 457 280 Bits / 8
Bits = 3 932 160
Bytes
o 3 932 160 Bytes /
1024 Bytes = 3840
KB
b. Calculamos la
transferencia de datos
o 105 Bits/Seg = 100
000 Bits / 8 Bits = 12
500 Bytes
o 12 500 Bytes / 1024
Bytes = 12.207 KB
c. Entonces, el tiempo que
demorara en cargar es
o 3840 KB / 12.207
KB = 314.5736 Seg

B. Algoritmo de Bresenham para el
Despliegue de crculos
Bresenham desarroll un
generador incremental de
circunferencias. Este algoritmo
genera todos los puntos de un
crculo centrado en el origen.
En cada paso el algoritmo
selecciona el punto (xi,yi), el
cul es el ms cercano a la
verdadera circunferencia y al
mismo tiempo hace que el Pi sea
ms cercano a cero.
- Anlisis
Se supone (x
i
, y
i
) la posicin ms
prxima a la trayectoria, la
siguiente posicin es por tanto
(x
i
+1, y
i
) o bien (x
i
+1, y
i
-1).









Fig. 4 Decisin de Puntos por Bresenham
a generar en el circulo.
Una medida de la diferencia de
coordenadas puede definirse
como:
o

o






x
i
x + 1
i
x + 2
i
y - 2
i
y - 1
i
y
i
x + y = r
2 2 2
( )
2 2 2 2 2
1
1 + + = =
i i i
x r y y y d
( )
( ) ( )
2 2
2 2 2
2
1 1
1
+
= =
i i
i
y x
r y y d
y
i
y
y - 1
i
d
1
d
2
x + 1
i

Fig. 5 Diferencia de Coordenadas en el
crculo
Definiendo p
i
como la diferencia
de d
1
y d
2
tenemos
( ) ( )
2
2 2 2
2 1
2
1 1 2
r
y y x
d d p
i i i
i

+ + + =
=

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.

S-ar putea să vă placă și