Professional Documents
Culture Documents
Output Primitives / Display Techniques: - Line Drawing
Output Primitives / Display Techniques: - Line Drawing
Output Primitives / Display Techniques: - Line Drawing
DISPLAY TECHNIQUES
LINE DRAWING
TO DRAW LINE FROM (X1 Y1) TO (X2 Y2)
(x2 y2)
(x1y1)
RASTER SCREEN
(x2 y2)
(x1 y1)
DIGITAL DIFFERENTIAL
ANALYZER (DDA)
y=mx+b
m = (y2 - y1) / (x2 - x1)
= y / x = dely / delx
xk+1 = xk + delx
yk+1 = yk + dely
= ?????
TWO ALTERNATIVES
= 1 / max [(x2-x1), (y2 - y1)] (BOOK)
= 1 / 2 K WHERE K IS SUCH THAT
2K-1 < (max [(x2-x1), (y2 - y1)]) 2K
SIMPLE DDA
delx = x2 - x1; dely = y2 - y1; steps = abs(dely);
if abs (delx) > abs (dely) then steps = abs(delx);
xinc = delx / steps; yinc = dely / steps;
x = x1; y = y1;
drawpixel (round(x), round(y))
for k = 1 to steps do begin
x = x + xinc; y = y + yinc;
drawpixel (round(x), round(y))
end
end
BRESENHAMS ALGO
WHICH PIXEL NEXT ??
?2
(xk yk)
? 1
pk + m - 1
pk + m
pk = p0 = m - 0.5
Circle Generation
(x - a)2 + (y - b)2 = r2
OR x = a + r cos ; y = b + r sin
(Fixed angular step size with lines between
them)
(Step Size = 1/r)
OR m = dy / dx = - (x - a) / (y - b)
USE DDA with m as above
?? 1
yk
yk - 1
?? 2
xk
xk + 1
MIDPOINT CIRCLE
f (x, y) = x2 + y2 - r2
pk = (xk + 1)2 + (yk - 0.5)2 - r2 (error at next
midpoint)
If pk < 0 then Pixel 1 Else Pixel 2 (is closer
to circle in iteration k+1)
pk+1 = [(xk + 1) + 1]2 + (yk+1 - 0.5)2 - r2
pk+1 = pk + 2 (xk + 1) + (yk+12 - yk2)
- (yk+1 -yk) + 1
ELLIPSE DRAWING
OTHER CURVES
FOR IMPLICIT CURVES F (X, Y) = 0,
DEVELOP MIDPOINT ALGO (eg,
hyperbola, parabola)
OTHER CURVES
FOR EXPLICIT CURVES Y = F(X), OR
PARAMETRIC CURVES APPROXIMATE WITH STRAIGHT LINE
SEGMENTS
Generate points at constant parameter
values
Join them by straight lines
Closer points for larger curvatures
ADDRESSING PIXELS
BY PIXEL CENTERS
BY GRID OF PIXEL BOUNDARY LINES
(H & V)
PREFERRED, AS
NO HALF INTEGER BOUNDARIES
PRECISE OBJECT REPRESENTATIONS
CONVENIENT IN RASTER ALGOS
SIZE OF OBJECTS
RECTANGLE (0, 0) --- (4, 3)
?
(4, 3)
?
?
?
(0, 0)