Vous êtes sur la page 1sur 8

ALGORITMO BRESENHAM 3D

BRESENHAM EN 2D


La decisin de ir hacia el paso E o D se toma
en funcin del error que se comete en cada
caso. En este algoritmo se considera que el
error es la distancia entre el centro del pixel
elegido y el segmento de recta, medida en
direccin del eje Y positivo del espacio de
pantalla (es decir, hacia abajo). Si el error en p
fuese cero, entonces al ir hacia E el error pasa
a ser m (la pendiente del segmento), y en D
el error pasa a ser m-1.
SEGMENTO DE RECTAS POR BRESENHAM
El punto de partida del anlisis es el
siguiente. Si la discretizacin de los
puntos extremos del segmento debe
pertenecer a la discretizacin del
segmento, entonces es conveniente efectuar
la llamada al algoritmo luego de discretizar
los extremos. Esto significa que (x0,y0,z0) y
(x1,y1,z1 ),y por lo tanto dx, dy y dz son
enteros.
ALGORITMO
Calculamos las diferenciales de los ejes X, Y y Z:
dx = Xf Xi
SI dx < 0 ENTONCES x_inc = -1
SINO x_inc = 1
dy = Yf Yi
SI dy < 0 ENTONCES y_inc = -1
SINO y_inc = 1
dz = Zf Zi
SI dz < 0 ENTONCES z_inc = -1
SINO z_inc = 1
Luego de calcular las diferenciales
comparamos y entramos a uno de tres
condicionales:

COMPARAMOS EN X
SI (|dx|>=|dy|) y (|dx|>=|dz|) ENTONCES
error1 = 2*|dy| |dx|
error2 = 2*|dz| |dx|
PARA (i=0) HASTA (i<|dx|)
SI (error1 > 0) ENTONCES
Yi = Yi + y_inc
error1 = error1 2*|dx|
FIN_SI
SI (error2 > 0) ENTONCES
Zi = Zi+ z_inc
error2 = error2 2*|dx|
FIN_SI
error1 = error1 + 2*|dy|
error2 = error2 + 2*|dz|
Xi = Xi + x_inc
PINTAR EL PUNTO (Xi, Yi, Zi)

FIN_PARA
FIN_SI
COMPARAMOS EN Y
SI (|dy|>=|dx|) y (|dy|>=|dz|) ENTONCES
error1 = 2*|dx| |dy|
error2 = 2*|dz| |dy|
i = 0
PARA (i=0) HASTA (i<|dy|)
SI (error1 > 0) ENTONCES
Xi = Xi + x_inc
error1 = error1 2*|dy|
FIN_SI
SI (error2 > 0) ENTONCES
Zi = Zi+ z_inc
error2 = error2 2*|dy|
FIN_SI
error1 = error1 + 2*|dx|
error2 = error2 + 2*|dz|
Yi = Yi + y_inc
PINTAR EL PUNTO (Xi, Yi, Zi)

FIN_PARA
PINTAR EL PUNTO (Xi, Yi, Zi)
FIN_SI
COMPARAMOS EN Z
SI (|dz|>=|dx|) y (|dz|>=|dy|) ENTONCES
error1 = 2*|dy| |dz|
error2 = 2*|dx| |dz|
i = 0
PARA (i=0) HASTA (i<|dz|)
SI (error1 > 0) ENTONCES
Yi = Yi + y_inc
error1 = error1 2*|dz|
FIN_SI
SI (error2 > 0) ENTONCES
Xi = Xi+ x_inc
error2 = error2 2*|dz|
FIN_SI
error1 = error1 + 2*|dy|
error2 = error2 + 2*|dx|
Zi = Zi + z_inc
PINTAR EL PUNTO (Xi, Yi, Zi)

FIN_PARA
FIN_SI

Vous aimerez peut-être aussi