Vous êtes sur la page 1sur 7

Instituto Tecnolgico de Cd.

Guzmn
Graficacin
Unidad I. Introduccin a la graficacin por computadora
Primitivas bsicas de dibujo
Trazado de una circunferencia
Para trazar un crculo solo es necesario conocer el radio
y la ubicacin del punto central de sta. Existen diversas
ecuaciones o formulas que nos permiten obtenerlo, en
estas notas solo se vern dos de stas, la primera basada
en coordenadas cartesianas (rectangulares) y la segunda
basada
en
coordenadas
polares
(funciones
trigonomtricas).

maria eugenia puga nathal

Pgina 1

21/11/2014

Ecuacin polinomial cuadrada (reducida) de la circunferencia


El tipo de coordenadas utilizadas para este caso son las cartesianas.
Punto central de la circunferencia igual a cero
r2 = x 2 + y2
________
r = x 2 + y2
donde r es la distancia o radio desde el punto central a cualquier punto de la circunferencia.
Punto central de la circunferencia diferente a cero
r2 = (x - h) 2 + (y - k ) 2
_________________
d(C,P) = (x - h) 2 + (y - k ) 2 = r
P un punto cualquiera de la recta
C punto central de la circunferencia
r radio o distancia de la circunferencia desde el punto C a cualquier punto P de la circunferencia
Coordenadas polares
Para representar grficamente un lugar geomtrico y establecer su ecuacin, muchas veces conviene
el empleo de otro sistema de coordenadas distinto al cartesiano, ste es el caso del sistema de
coordenadas polares.
En este sistema se elige en el plano un punto O, que se le llama polo y una semirrecta fija que
recibe el nombre de eje polar, y tiene su origen en el polo.
Las coordenadas rectangulares pertenecen al sistema cartesiano, el cual, en ciertos casos tambin
emplea ejes oblicuos en vez de perpendiculares.
La posicin de un punto M en el plano, queda determinado por el segmento OM que se representa
por r y por el ngulo que dicho segmento forma con el eje polar.
r y son las coordenadas del punto M
r recibe el nombre de radio vector
se le conoce con el nombre de ngulo polar, ngulo vectorial o argumento de M
Las coordenadas para el punto M se escriben:

M(r, )

El ngulo polar se mide considerando el eje polar como lado inicial y el radio vector como lado
final. Se considera positivo, cuando se genera en sentido contrario al movimiento de las manecillas
del reloj y negativa en el caso opuesto.

maria eugenia puga nathal

Pgina 2

21/11/2014

Relacin entre coordenadas rectangulares y las polares


Considerar que el origen de un sistema de coordenadas rectangulares coincide con el polo y la
direccin positiva del eje de las X, es decir OX coincide con el eje polar.
Entonces, para un punto M del plano se tiene:
M(x, y) en el sistema de coordenadas rectangulares
M(r, ) en el sistema de coordenadas polares
Se observa que entre las coordenadas cartesianas y las polares de un mismo punto del plano se
pueden establecer las siguientes relaciones:
a) x = r cos
b) y = r sen
c) x2 + y2 = r2
d) = arc tan (y / x)
______
e) r = x2 + y2
______
f) sen = y / x2 + y2
______
g) cos = x / x2 + y2

Para ms informacin sobre este tema, consultar cualquier libro de geometra analtica.
Grados-Radianes
radianes = 180
Grados
Radianes

0
0

1 radian = 180 /
30
/6

45
/4

60
/3

1 = ( / 180) radianes
90
/2

120
2/3

135
3/4

150
5/6

180

270
3/2

360
2

Algoritmos para trazar una circunferencia


Existen varios algoritmos que nos permiten trazar una circunferencia entre los que se mencionan:
- algoritmo general o directo de la circunferencia
- algoritmo del mtodo incremental
- algoritmo del punto medio
- algoritmo de Bresenham
algoritmo general o directo de la circunferencia
Se basa en la ecuacin general de la circunferencia, con centro en el origen: x2 + y2 = r2. Como el
trazado de una circunferencia se usa normalmente fuera del origen, la formula se amplia:
(x-xc)2 + (y-yc)2 = r2, donde xc y yc son las coordenadas del punto central de la circunferencial.
maria eugenia puga nathal

Pgina 3

21/11/2014

Para dibujar la circunferencia, se incrementa de manera unitaria a x de r a r, y se calcula el valor de


y.
__________
y = yc r2 - (x-xc)2
algoritmo circulo_general(entero xc, entero yc, entero r)
inicio
entero x
double y1, y2
para x=xc-r hasta x<=xc+r con incrementos en x de 2 unidades
inicio
y1=yc+raizCuadrada(cuadrado(r)-cuadrado(x-xc))
y2=yc-raizCuadrada(cuadrado(r)-cuadrado(x-xc))
dibujarPixel(x, redondear(y1))
dibujarPixel(x, redondear(y2))
fin
fin
Entre las desventajas que presenta este algoritmo estn:
- No aprovecha la simetra, se hace el trazado de la mitad de la circunferencia, por lo que por
cada incremento de x, se trata de dibujar dos puntos
- Las operaciones de potencia requieren mucho tiempo de ejecucin
- Presenta segmentacin al aproximarse al eje de las x, ya que al acercarse los puntos a este
eje, se pintan mas separados
algoritmo incremental
Tiene como fundamento la representacin paramtrica polar de la circunferencia y se creo para
corregir el algoritmo anterior en lo que respecta a la separacin de los puntos que no se ven cerca
del eje x.
x = xc + (r cos )
y = yc +(r sen )
donde se mide en radianes de 0 a 2
r es el radio
(xc, yc) es la coordenada del punto del centro de la circunferencia
Como la longitud de un arco de circunferencia es r* y el radio r son constantes, los incrementos de
d iguales, dan espaciamientos uniformes, haciendo que la circunferencia se vea pareja
r* = 1

= 1/r

Una de las desventajas que presenta este algoritmo es el calculo continuo del seno de y el coseno
de para cada incremento angular, lo cual consume mucho tiempo.
Dos puntos consecutivos:
x1 = r cos
y1 = r sen

x2 = r cos ( + d)
y2 = r sen ( + d)

donde d es un paso angular constante de tamao fijo.


maria eugenia puga nathal

Pgina 4

21/11/2014

Aplicando la identidad trigonomtrica para calcular el seno y coseno de la suma de dos ngulos
tenemos:
cos ( + d) = (cos )(cos d) - (sen )(sen d)
sen ( + d) = (sen )(cos d) + (cos )(sen d)
Sustituyendo x2 y y2
x2 = (r cos )(cos d) - (r sen )(sen d)
y2 = (r sen )(cos d) + (r cos )(sen d)
Sustituyendo x1 y y1
x2 = x1 cos d - y1 sen d
y2 = y1 cos d + x1 sen d
Al iniciar, x=0, y=r,
El sen , y el cos se calcula solo una vez al inicio del proceso
Se aprovecha la simetra de la circunferencia lo que disminuye el nmero de clculos:
P1(x, y)
P5(-x, -y)
P2(y, x)
P6(-y, -x)
P3(y, -x)
P7(-y, x)
P4(-x, y)
P8(x, -y)
algoritmo circulo_incremental(entero xc, entero yc, entero r)
inicio
entero tx, ty
double dt, cc, ss, x, y, aux
dt = (double) 1/r
cc=coseno(dt)
ss=seno(dt)
x=0
y=r
mientras (y>=valorAbsoluto(x))
inicio
tx=redondear(x)
ty=redondear(y)
dibujarPixel(xc+tx, yc+ty)
dibujarPixel(xc-tx, yc+ty)
dibujarPixel(xc+tx, yc-ty)
dibujarPixel(xc-tx, yc-ty)
dibujarPixel(xc+ty, yc+tx)
dibujarPixel(xc+ty, yc-tx)
dibujarPixel(xc-ty, yc+tx)
dibujarPixel(xc-ty, yc-tx)
aux=x
x=x*cc-y*ss
y=y*cc+aux*ss
fin
fin
maria eugenia puga nathal

Pgina 5

21/11/2014

algoritmo de Bresenham
En este algoritmo se calculan los puntos de 0 a 45, algo similar que el anterior y se aprovecha de
la simetra de la circunferencia para obtener el trazado del resto de los puntos. Est nuevamente
basado en la ecuacin de la recta polinomial de segundo grado.
__
De x=0 a x= r / 2
Al igual que en el algoritmo de la recta, se toman dos posibles valores:
A(xi+1, yi) B(xi+1, yi-1)
r2 = (xi+1)2 + y2
y2 = r2 - (xi+1)2
d(a)= yi2 - y2
d(b)= y2 (yi -1)2
d(a)= yi2 r2 + (xi+1)2
d(b)= r2 - (xi+1)2 (yi -1)2
Si la distancias hacia algunos puntos candidatos es igual a 0, el punto est sobre la circunferencia,
sino es lo anterior, toma el punto mas cercano:
P1 = d(a) d(b)
P1 = yi2 r2 + (xi+1)2 - r2 + (xi+1)2 + (yi -1)2
P1 = 2(xi+1)2 + yi2 + (yi -1)2 2r2
Si el punto inicial es x=0, y=r
Pi = 2(0+1)2 + r2 + (r -1)2 2r2
Pi = 2 + r2 + (r -1)2 2r2
Pi = 2 + r2 + r2 2r +1 2r2
Pi = 3 - 2r
Si el valor de Pi < 0
xi+1=xi+1
y i+1=y i
r2 = (xi+1)2 + (y i)2
p i+1 = pi + 4xi + 6
Si el valor de Pi >= 0
xi+1=xi+1
y i+1=y i - 1
2
2
r = (xi+1) + (y i - 1)2
p i+1 = pi + 4(xi - y i)+ 10
1. seleccionar como punto inicial la coordenada (0, r) donde r = radio
2. calcular el primer parmetro como:
P=3-2r
3. incrementando x en pasos unitarios, calcular cada parmetro sucesivo de p i+1 a partir de los
siguiente:
Si pi<0
sisi y i+1=y i
p i+1 = pi + 4xi + 6

maria eugenia puga nathal

Pgina 6

21/11/2014

Si pi>0
sisi y i+1=y i - 1
p i+1 = pi + 4(xi - y i)+ 10
4. repetir paso 3 hasta que x sea mayor o igual que y
Para dibujar la circunferencia, aplicar la simetra de la circunferencia para los siete puntos restantes,
en los clculos se obtiene el primer punto(x, y), por lo que bastara que se vayan intercambiando
estas dos coordenadas, al igual que sus signos
algoritmo circulo_Bresenham(entero xc, entero yc, entero r)
inicio
entero p, x, y
x=0
y=r
p=3-2*r
mientras (x<=y)
inicio
dibujarPixel(xc+x, yc+y)
dibujarPixel(xc-x, yc+y)
dibujarPixel(xc+x, yc-y)
dibujarPixel(xc-x, yc-y)
dibujarPixel(xc+y, yc+x)
dibujarPixel(xc+y, yc-x)
dibujarPixel(xc-y, yc+x)
dibujarPixel(xc-y, yc-x)
si p<0
si si p=p+4*x+6
si no inicio
p=p+4*(x-y)+10
y=y-1
fin
x=x+1
fin
fin

maria eugenia puga nathal

Pgina 7

21/11/2014

Vous aimerez peut-être aussi