Está en la página 1de 17

M.I.

A Daniel Alejandro Garca Lpez

Algoritmos de Dibujo
de Lneas

Algoritmo de dibujo de
lneas
Un

segmento de lnea recta dentro


de una escena esta definido por las
coordenadas de los dos extremos del
segmento.
Digitalizar la lnea para obtener un
conjunto de posiciones enteras
discretas
As una posicin de lnea calculada
como (10.48, 20,51) se convierte en
la posicin del pxel (10,21)

Ecuaciones de las lneas


Para

determinar las posiciones de los


pxeles a lo largo del un trayecto de
lnea recta se utilizan las
propiedades geomtricas de la lnea.
La ecuacin punto-pendiente
cartesiana
Y=m.x+b
(m])pendiente (b)
interseccin en y
M=(y-y0)/(x-x0)
B=y0-m.x0

Para

cualquier intervalo horizontal x


correspondiente a un y especificado
mediante la formula: x=y/m

Algoritmo de Anlisis
diferencial digital
Basado

en calcular y o x: las lneas se


muestrean a intervalos unitarios segn
una de las coordenadas y los
correspondientes valores enteros ms
prximos al trayecto lineal se calculan
para la otra coordenada.
Si m<=1 podemos muestrear a
intervalos unitarios segn el eje de las
x(x=1) y calculamos los valores
sucesivos de y como: yk+1=yk+m

El

subndice k adopta valores enteros


comenzando en 0 para el primer punto e
incrementndose en una unidad cada
vez hasta alcanzar el extremo de la lnea
Si m>1.5 invertimos los papeles x e y,
es decir muestreamos a intervalos
unitarios de y y calculamos los valores
de x consecutivos mediante
xk+1=xk+(1/m)

en este caso, cada valor de x


calculado se redondea a la posicin
del pxel ms cercana en la lnea de
exploracin actual.
Si las lneas deben procesarse desde
el extremo situado ms a la
izquierda hasta el extremo situado
ms a la derecha utilizamos
Yk+1=yk-m
xk+1=xk-(1/m)

Desventajas
Requiere

aritmtica de punto
flotante, la que es mas lenta y
costosa.
Es inapropiado para implementar por
hardware
El redondeo es una operacin real
adicional
Las lneas largas pueden verse
afectada por errores de redondeo en
m.

Algoritmo de Anlisis
diferencial digital
Camina

a lo largo del eje x desde x0


hasta x1
Para cada valor xi se calcula Yi y lo
redondea al pxel mas prximo
El calculo de Yi+1=Yi +m lo que
equivale a incrementar a X en 1
Sustituyendo las coordenadas en los
extremos
Yi=m*xi +B
Yi+1=m*(xi +1) +B

Algoritmo de Anlisis
diferencial digital
Simplificando
Yi+1

=yi + m

Extensin por
simetra

Dy<0 A
Dx<0 B
Abs(Dy)/Abs(Dx)>1 C

Algoritmo de Bresenham
Preciso

y eficiente
Utiliza slo clculos enteros para
determinar los incrementos
El algoritmo comprueba un signo de
un parmetro entero cuyo valor es
proporcional a la diferencia entre las
separaciones verticales de las dos
posiciones del pxel con respecto a la
trayectoria lineal

Algoritmo de Bresenham
1.

Introducir los dos extremos de la lnea y


almacenar el extremo izquierdo
2. Configurar el color para la posicin del bfer
de la imagen, es decir dibujar el primer punto
3. calcular las constantes x,y,2y y 2y-2x,
y obtener el valor inicial del parmetro de
decisin que ser p0=2y-x
4. Para cada xk a lo largo de la lnea,
comenzando en k=0, realizar la siguiente
comprobacin. Si pk<0, el siguiente punto que
hay que dibujar ser (xk +1,yk) y

Pk+1=pk

+2y
En caso contrario, el siguiente punto
que habr que dibujar es (xk +1,yk
+1) y pk+1=pk +2y -2x
5. Realizar el paso 4, x -1 veces

Ejemplo
Digitalizar

la lnea definida por los


vrtices (20,10) y (30,18)
pk
(xk+1,
Pendiente =8/10 k
yk+1)
x=10, y=8
0
6
(21,11)
1
2
(22,12)
2y=16, 2y-2x=-4
2
-2
(23,12)
3

14

(24,13)

10

(25,14)

(26,15)

(27,16)

Int

dx=fabs(xEnd-x0), dy=fabs(yEndY0);
Int p=2*dy dx
Int twoDy=2*dy,
twoDyMinusDx=2*(dy-dx);
Int x,y;
If(x0>xEnd){
X=xEnd
Y=yEnd;
xEnd=x0;

Else{
X=x0;
Y=y0;
}
setPixel(x,y);
While(x<xEnd){
X++;
If(p<0)
P+=twoDy;
Else{
Y++;
P+=twoDyMinusDx
}
setPixel(x,y);

También podría gustarte