Está en la página 1de 17

M.I.

A Daniel Alejandro Garca Lpez

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)

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

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)

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.

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

Simplificando Yi+1 =yi + m

Extensin por simetra

Dy<0 A

Dx<0 B

Abs(Dy)/Abs(Dx)>1 C

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

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

Digitalizar la lnea definida por los vrtices (20,10) y (30,18) k pk (xk+1, Pendiente =8/10 yk+1) 0 6 (21,11) x=10, y=8 2 (22,12) 2y=16, 2y-2x=-4 1
2 3 4 5 6 -2 (23,12) 14 10 6 2 (24,13) (25,14) (26,15) (27,16)

Int dx=fabs(xEnd-x0), dy=fabs(yEnd-Y0); 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