Algoritmo Bresenham Explicación del algoritmo Es considerado uno de los algoritmos más efectivos para dibujar líneas mediante rastreo. Emplea cálculos incrementales con valores enteros . La forma de determinar el siguiente pixel a dibujar en la generación de una línea, se describe a continuación:
1. Punto Punto inicia iniciall P1(Xi P1(Xinic nicial ial, ,in inici icial! al!.. ". #e despla$ despla$a a una column columna a (increm (incrementa entando ndo la posici posición ón en X! %. #e tra$a el pixel cu&o 'alor de de la línea línea de rastreo rastreo se aproxima ms a la tra&ectoria de la línea. #e capturan los dos extremos de de la línea P1(Xinicial,inicial! P1(Xinicial ,inicial! & P"(Xfinal,final! ). #e dibuja dibuja el primer pixel correspondi correspondiente ente al extremo i$*uierdo i$*uierdo de la línea(P1! línea(P1! +. #e calculan calculan los parmetros parmetros *ue permitien decidir cul ser ser el proximo pixel a dibujar (eltaX, elta & -onstanteP!. . ependiendo ependiendo del del 'alor *ue tome el Parmetro Parmetro -onstanteP -onstanteP se se e'al/a e'al/a & determina determina la coordenada a dibujar *ue puede ser: 1. (X01, (X01,!! par para a -on -onsta stante nteP P 2 ".
#in #ino (X0 (X01,0 ,01!
El proceso anterior debe repetirse )eltaX 'eces. Leer Coordenadas P1(Xinicial, Yinicial) Leer Coordenadas P2(Xfinal, Yfinal) Asignar a
DeltaX el ABS( ABS( Xfinal Xfinal - Xinicial)
Asignar a
DeltaY el ABS( Yfinal -Yinicial)
Asignar a ConstanteP
el resultado de 2*DeltaY - DeltaX
Si Xinicial > Xfinal Asignar Xfinal a X Asignar Yfinal a Y Asignar Xinicial a Ultimo De lo contrario Asignar Xinicial a X Asignar Yinicial a Y
Asignar a Xfinal a Ultimo Iluminar pixel en coordenada X,Y Hacer mientras X
ConstanteP + 2 *DeltaY a ConstanteP
De lo contrario Asignar Y+1 a Y Asignar a ConstanteP el resultado de ConstanteP+2 *(DeltaY-DeltaX) Iluminar pixel en coordenada X,Y Fin de Algoritmo (Bresenham)
Algoritmo del punto medio para elipses
3na elipse se define como el conjunto de puntos en *ue la suma de las distancias desde dos posiciones fijas sea la misma para todos los puntos. 3na elipse en posición estndar es sim4trica entre cuadrantes. Para aplicar el m4todo del punto medio, definimos una función de elipse como: pk = f elipse(x!"= r !#r x$r xr ! f elipse(x!"%& si (x,&! est dentro de la frontera de la elipse. f elipse(x!"=& si (x,&! est en la frontera de la elipse. f elipse(x!"'& si (x,&! est fuera de la frontera de la elipse. Los parmetros de decisión sucesi'os se obtienen al utili$ar clculos incrementales.
*Se capturan los radios rx, ry y el centro de la elipse (xc, yc). *Se obtiene el primer punto de la elipse centrada en origen (xc,
yc) como (0, ry).
*Se calcula el valor inicial del parámetro de decisión de la región 1 como p10=ry -rx
ry+ 0.25 rx
.
*En cada posición xk en la región 1 para k=0 Si p1k0 !unto siguiente = "x k#1, yk$ p1k#1=p1k#%ry xk#1#ry
*Se calcula el valor inicial del parámetro de decisión de la región % utili&ando el 'ltimo "x 0,y0$ calculado en la región 1 como p20=ry (x0+0.5)
+rx
(y0-1)
-rx
ry
.
*En cada posición yk en la región % para k=0 Si p%k(0 !unto siguiente = "x k, yk)1$ p%k#1=p%k)%rx yk#1#rx
*Se determinan los puntos de simetra para los otros tres cuadrantes. *Se mueve cada posición del pixel calculada "x,y$ a la trayectoria elptica centrada en (xc, yc) y tra&amos los valores de las coordenadas+ x=x#x c y x=x#xc. *Se repiten los pasos de la región 1 asta -ue %r y%x0 (=%rx%y0
5lgoritmos 6 istancia entre dos puntos •
inicio cartesiano*/
/*Calcular
la
distancia
entre
dos
•
/*Leer abscisa y ordenada de los punto*/
•
leer 1
•
leer /1
•
leer %
•
leer /%
puntos
en
el
•
/*Calcular la distancia entre los dos puntos*/ istacia = rai&""% ) 1$*"% ) 1$ # "/% ) /1$*"/% ) /1$$
• • •
/*Escribir la distancia obtenida*/ escribir istacia
• • •
fin
plano