Академический Документы
Профессиональный Документы
Культура Документы
Segmento de recta
Dado los puntos extremos de un segmento: Cmo identificar los
pixeles que lo representan?
Referencia
Bresenham, J.E. "Algorithm for Computer Control of a
Digital Plotter". IBM Systems Journal, 4(1), pp. 25-30,
1965.
Segmento de Recta
Ecuacin de la recta:
y = f(x) = mx+c
Segmento de recta
Punto de la recta:
Punto de la pantalla:
Segmento de recta
Dado que
x = x + x
y = m * x + b
y = m * x + b
Luego
y = m * x + b
y = m * (x + x) + b
= m * x + m * x + b
Pero
x = x - x = 1 ; distancia unitaria
Luego
y = m * x + b + m
y = y + m
y+
y+
+ m
}
}m
+
m
=+m
(y + + m) - (y + 1)
=+m-1
si + m < 0.5
+ m
sino
y y +1
+m - 1
La pendiente (m) es
un valor no entero!!
y sustituyendo dx por :
+ dy
+ dy - dx
0
y y1
para x x1 hasta x2
setPixel (x, y)
si 2( + dy) < dx
+ dy
sino
y y + 1
+ dy - dx
Simetra
(x, y)
o
45
Bresenham
en rango [0,1]
Simetra
(x, y)
o
45
Simetra
en eje X
(x, -y)
Simetra
Simetra
en eje Y
(-x, y)
(x, y)
o
45
Simetra
(y, x)
Simetra
en eje de 45o
(x, y)
o
45
Simetra
(-y, x)
Repitiendo
se llega a:
(y, x)
(-x, y)
(x, y)
o
45
(x, -y)
(-x, -y)
(-y, -x)
(-y, x)
Simetra
Observacin:
Bajo simetra en X, se cambia de signo la abscisa: (x, y) pasa a ser (x, -y)
Bajo simetra de 45o, abscisa y ordenada se intercambian: (x, y) pasa a ser (y, x)
Simetra
y0 < y
infinito < m < -1
y0 < y
1 < m < infinito
x < x0
-1 <= m <= 0
x0 < x
0 <= m <= 1
45o
0 < m <= 1
x < x0
(x0, y0)
-1 <= m < 0
x0 < x
Bresenham
Luego, hay que cambiar los signos de abscisa y ordenada y / o intercambiar abscisa
por ordenada
Propuesto!!