KEMBAR78
Line Drawing Algorithms - Computer Graphics - Notes | PPTX
1. Line Drawing Algorithms
Straight line drawing algorithms are based on incremental methods.
In incremental method line starts with a straight point, then some fix
incrementable is added to current point to get next point on line and same is
continued all the end of line.
1
Simple DDAAlgorithm
Step 1: Read the end points of line.
Step 2: x =abs (x2-x1) and
 y=abs (y2-y1)
Step 3: if x ≥ v then
length = x
else
length = y
end if
Step 4: x line = (x2-x1) / length
Step 5: y line = (y2-y1) / length
Step 6: x=x1+0.5*sign (x line)
y=y1+0.5*sign (y line)
Step 7: i=1
while (i ≤length)
{ plot (integer (x), integer (y))
x= x + x line
y= y + y line
i=i+1
}
Step 8: End
2
Simple DDAAlgorithm (Example)
Q: (First Quadrant Example)
Consider a line from (0,0) to (5,6). Use simple DDA
algorithm to rasterize this line.
Solutions: it is a line in first quadrant.
Now follow algorithm step-by-step.
Step 1: Read end points of line
(x1,y1) = (0,0) and
(x2,y2) = (5,6)
Step 2: x=abs (x2-x1)
x=abs(5-0)
x=5
y=abs(y2-ya)
y=abs(6-0)
y=6
Step 3: As (6>5)
length=6
Step 4: x line = 5/6
x=0.833
y=6/6
y=1
Step 5: x=x1+0.5*sign(x line)
x=0+0.5*sign(0.8333)
x=0+0.5*1
x=0.5
Step 6: y=y1+0.5*sign(y line)
y=0+0.5*sign(1)
y=0+0.5*1
y=0.5
Step 7: End
3
1. Line Drawing Algorithms
Value of 1 Plot
Pixel
x y
0.5 0.5
1 (0,0)
1.333 1.5
2 (1,1)
2.166 2.5
3 (2,2)
2.999 3.5
4 (2,3)
3.832 4.5
5 (3,4)
4.665 5.5
6 (4,5)
5.498 6.5
0 1 2 3 4 5
012345
(0,0)
4
Demerits of DDAAlgorithm
1. Floating points arithmetic in DDA algorithm is time consuming.
2. Accumulation of round-off error in successive additions of floating
point increment can cause the calculated pixel positions to drift away
from the true line path for long line segments.
Merits of DDAAlgorithm
1. It is simple algorithm.
2. It is faster method.
Let’s see example problems to illustrate simple DDAAlgorithm.
5
Bresnahan's line drawing
The process of "turning on" the pixels for a line is called the generation.
A line that means we have to change the intensity of the pixels present on
that line.
In this we have two different algorithm.
yk + 1
y
yk
xk + 1
d2
d1
6
Bresnahan's line drawing algorithm
Step 1: Read line end points as (x1-x1) and (x2-y2)
Step 2: x=|x2=x1| and y=|y2-y1|
Step 3: Initialize starting point of line
i.e. x=x1
y=y1
Step 4: Plot (x,y) i.e. plot first point
Step 5: obtain initial value of decision parameter Pk
as
Pk=2 y- x
Step 6: if Pk,0
{
x=x+1
y=y+1
Pk=Pk+2 y
}
if Pk ≥ 0
{
x=x+1
y=y+1
Pk=Pk+2y=2x
}
plot (x,y)
Step 7: Repeat step (6) x times.
Step 8: Stop
7
Bresnahan's line drawing Example
Q: Consider the line from (6,6) to (12,9)
Use Brissenden's algorithm to rasterize this line.
Solutions: Following algorithm 3 step-by-step
Step 1: x1=6
y1=6
x2=12
y2=9
Step 2: x=|12-6|=6
t=|12-9|=3
Step 3: x=6
y=6
Step 4: Plot (x,y) i..e Plot (6,6), initial point
Step 5: value of decision parameter,
Pk=2 y- x
Pk=2(3)-6
Pk=0
Step 6 and 7: Now i=1 . See Table
Step 8: Stop
i Plot
Pixel
X Y Pk
6 6 0
1 (6,6) 7 7 -6
2 (7,7) 8 7 0
3 (8,7) 9 8 -6
4 (9,8) 10 8 0
5 (10,8) 11 9 -6
6 (11,9) 12 9 0
Output:
Step 6 and 7
10
11
9
8
6
7
4
5
10 11986 74 5
8
DDA VS Bresnahan's (Different)
SR DDA Bresnahan's
1 Based on increment method. Based on increment
method.
2 Use floating point arithmetic. Use only integers.
3 Slower then Bresnahan's Faster than DDA.
4 Use of multiplication and
division operations.
Use of only Addition
and Subtraction
operations.
5 To display pixel we need to use
either floor or ceil function.
No need of floor or
ceil function for
display.
6 Because of floor and ceil
function error component is
introduced.
No error component
is introduced.
7 The co-ordinate location is same
as that of Bresnahan's.
The co-ordinate
location same as that
DDA 9
Circle Generating Algorithms
-x, y
-x, -y
-y, -x y, -x
x, -y
x, y
y, x-y, x
45
Symmetry of Circle
10
Bresnahan’s circle Generating Algorithm
Step 1: Read radius (r) of circle.
Step 2: Calculate initial decision variable Pi
Step 3: x=0 and y=r
Step 4: if (Pi,0)
{
x=x+1
Pi=Pi+4x+6
}
else if (Pi≥ 0)
{
x=x+1
y=y-1
Pi=Pi+4(x-y)+10
}
Step 5: Plot pixels in all octants as
Plot (x,y)
Plot(y,x)
Plot(-y,x)
Plot(-x,y)
Plot(-x,-y)
Plot(y,-x)
Plot(x,-y)
Step 6: Stop
11
Mid-point Circle Generating Algorithms
Step 1: Read radius (r) of circle.
Step 2: obtain first point on circle boundary as
(x0,y0)=(0,r)
Step 3: Calculate initial decision parameter as
P0=1-r
Step 4: if (Pi,0)
{
xi=xi+1
yi=yi
Pi+1=Pi+2(xi+1)+1
}
else if(Pi.0)
{
xi=xi+1
yi=yi-1
Pi+1=Pi+2(xi+1)+1-2yi+1
}
Step 5: Plot pixels in all octants as
Plot (y,x)
Plot(-y,x)
Plot(-x,y)
Plot(-x,-y)
Plot(-y,-x)
Plot(y,-x)
Plot(x,-y)
Step 6: Repeat step 4 and 5 until xi≥ yi
Step 7: Stop
12
Mid-point Circle Generating Example
Q : Given radius of circle r=8 with center at origin.
Solution : Here origin is center of circle and we
will demonstrate algorithm execution for
determining points along circle boundary only in
first quadrant from x=0 and x=y
Now, following are the seps of algorithm.
Step 1: r=8
Step 2: (x0,y0)=(0,8)
Step 3: P0=1-r
P0=1-8=-7
Step 4: Following table shows iterative execution
of this step to calculate each next x0i,yi(i.e. xi+1,
yi+1) till xi ≥yi
Step 5: for each value of I in step 4 plot
(xi+1,yi+1) and also plot all symmetric points in all
rest octants.
Step 6: Note, Actually step 4 and 5 are executed in
iteration for each value of I step 4 followed by step
5 is executed.
Step 7: Stop
i Pi (xi+1,yi+1) Pi+1 if
(Pi<0)
Pi+1 if
(Pi>0)
0 -7 (1,7) -3 -
1 -3 (2,7) +2 -
2 2 (3,6) - -3
3 -3 (4,6) 6 -
4 6 (5,5) - 7
13
Character Generation Method
1. Stroke method/vector character generation method
14
Character Generation Method
2. Dot-matrix or Bit-map method
1 2 3 4 5 1
2
3
4
5
6
7
8
9
2
3
4
5
6
1
7
1 2 3 4 5 6 7
Height
Height
Width
Width
15
Character Generation Method
3. Starbust method
1
2
3 4
14 5
62221
17 18
2313
12
11
10 9
8
7
1524
19
16
20
43
2
1
10 9
12
11
21
Starbust pattern of 24 line segments Starbust pattern for character E
24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
Bit number
16

Line Drawing Algorithms - Computer Graphics - Notes

  • 1.
    1. Line DrawingAlgorithms Straight line drawing algorithms are based on incremental methods. In incremental method line starts with a straight point, then some fix incrementable is added to current point to get next point on line and same is continued all the end of line. 1
  • 2.
    Simple DDAAlgorithm Step 1:Read the end points of line. Step 2: x =abs (x2-x1) and  y=abs (y2-y1) Step 3: if x ≥ v then length = x else length = y end if Step 4: x line = (x2-x1) / length Step 5: y line = (y2-y1) / length Step 6: x=x1+0.5*sign (x line) y=y1+0.5*sign (y line) Step 7: i=1 while (i ≤length) { plot (integer (x), integer (y)) x= x + x line y= y + y line i=i+1 } Step 8: End 2
  • 3.
    Simple DDAAlgorithm (Example) Q:(First Quadrant Example) Consider a line from (0,0) to (5,6). Use simple DDA algorithm to rasterize this line. Solutions: it is a line in first quadrant. Now follow algorithm step-by-step. Step 1: Read end points of line (x1,y1) = (0,0) and (x2,y2) = (5,6) Step 2: x=abs (x2-x1) x=abs(5-0) x=5 y=abs(y2-ya) y=abs(6-0) y=6 Step 3: As (6>5) length=6 Step 4: x line = 5/6 x=0.833 y=6/6 y=1 Step 5: x=x1+0.5*sign(x line) x=0+0.5*sign(0.8333) x=0+0.5*1 x=0.5 Step 6: y=y1+0.5*sign(y line) y=0+0.5*sign(1) y=0+0.5*1 y=0.5 Step 7: End 3
  • 4.
    1. Line DrawingAlgorithms Value of 1 Plot Pixel x y 0.5 0.5 1 (0,0) 1.333 1.5 2 (1,1) 2.166 2.5 3 (2,2) 2.999 3.5 4 (2,3) 3.832 4.5 5 (3,4) 4.665 5.5 6 (4,5) 5.498 6.5 0 1 2 3 4 5 012345 (0,0) 4
  • 5.
    Demerits of DDAAlgorithm 1.Floating points arithmetic in DDA algorithm is time consuming. 2. Accumulation of round-off error in successive additions of floating point increment can cause the calculated pixel positions to drift away from the true line path for long line segments. Merits of DDAAlgorithm 1. It is simple algorithm. 2. It is faster method. Let’s see example problems to illustrate simple DDAAlgorithm. 5
  • 6.
    Bresnahan's line drawing Theprocess of "turning on" the pixels for a line is called the generation. A line that means we have to change the intensity of the pixels present on that line. In this we have two different algorithm. yk + 1 y yk xk + 1 d2 d1 6
  • 7.
    Bresnahan's line drawingalgorithm Step 1: Read line end points as (x1-x1) and (x2-y2) Step 2: x=|x2=x1| and y=|y2-y1| Step 3: Initialize starting point of line i.e. x=x1 y=y1 Step 4: Plot (x,y) i.e. plot first point Step 5: obtain initial value of decision parameter Pk as Pk=2 y- x Step 6: if Pk,0 { x=x+1 y=y+1 Pk=Pk+2 y } if Pk ≥ 0 { x=x+1 y=y+1 Pk=Pk+2y=2x } plot (x,y) Step 7: Repeat step (6) x times. Step 8: Stop 7
  • 8.
    Bresnahan's line drawingExample Q: Consider the line from (6,6) to (12,9) Use Brissenden's algorithm to rasterize this line. Solutions: Following algorithm 3 step-by-step Step 1: x1=6 y1=6 x2=12 y2=9 Step 2: x=|12-6|=6 t=|12-9|=3 Step 3: x=6 y=6 Step 4: Plot (x,y) i..e Plot (6,6), initial point Step 5: value of decision parameter, Pk=2 y- x Pk=2(3)-6 Pk=0 Step 6 and 7: Now i=1 . See Table Step 8: Stop i Plot Pixel X Y Pk 6 6 0 1 (6,6) 7 7 -6 2 (7,7) 8 7 0 3 (8,7) 9 8 -6 4 (9,8) 10 8 0 5 (10,8) 11 9 -6 6 (11,9) 12 9 0 Output: Step 6 and 7 10 11 9 8 6 7 4 5 10 11986 74 5 8
  • 9.
    DDA VS Bresnahan's(Different) SR DDA Bresnahan's 1 Based on increment method. Based on increment method. 2 Use floating point arithmetic. Use only integers. 3 Slower then Bresnahan's Faster than DDA. 4 Use of multiplication and division operations. Use of only Addition and Subtraction operations. 5 To display pixel we need to use either floor or ceil function. No need of floor or ceil function for display. 6 Because of floor and ceil function error component is introduced. No error component is introduced. 7 The co-ordinate location is same as that of Bresnahan's. The co-ordinate location same as that DDA 9
  • 10.
    Circle Generating Algorithms -x,y -x, -y -y, -x y, -x x, -y x, y y, x-y, x 45 Symmetry of Circle 10
  • 11.
    Bresnahan’s circle GeneratingAlgorithm Step 1: Read radius (r) of circle. Step 2: Calculate initial decision variable Pi Step 3: x=0 and y=r Step 4: if (Pi,0) { x=x+1 Pi=Pi+4x+6 } else if (Pi≥ 0) { x=x+1 y=y-1 Pi=Pi+4(x-y)+10 } Step 5: Plot pixels in all octants as Plot (x,y) Plot(y,x) Plot(-y,x) Plot(-x,y) Plot(-x,-y) Plot(y,-x) Plot(x,-y) Step 6: Stop 11
  • 12.
    Mid-point Circle GeneratingAlgorithms Step 1: Read radius (r) of circle. Step 2: obtain first point on circle boundary as (x0,y0)=(0,r) Step 3: Calculate initial decision parameter as P0=1-r Step 4: if (Pi,0) { xi=xi+1 yi=yi Pi+1=Pi+2(xi+1)+1 } else if(Pi.0) { xi=xi+1 yi=yi-1 Pi+1=Pi+2(xi+1)+1-2yi+1 } Step 5: Plot pixels in all octants as Plot (y,x) Plot(-y,x) Plot(-x,y) Plot(-x,-y) Plot(-y,-x) Plot(y,-x) Plot(x,-y) Step 6: Repeat step 4 and 5 until xi≥ yi Step 7: Stop 12
  • 13.
    Mid-point Circle GeneratingExample Q : Given radius of circle r=8 with center at origin. Solution : Here origin is center of circle and we will demonstrate algorithm execution for determining points along circle boundary only in first quadrant from x=0 and x=y Now, following are the seps of algorithm. Step 1: r=8 Step 2: (x0,y0)=(0,8) Step 3: P0=1-r P0=1-8=-7 Step 4: Following table shows iterative execution of this step to calculate each next x0i,yi(i.e. xi+1, yi+1) till xi ≥yi Step 5: for each value of I in step 4 plot (xi+1,yi+1) and also plot all symmetric points in all rest octants. Step 6: Note, Actually step 4 and 5 are executed in iteration for each value of I step 4 followed by step 5 is executed. Step 7: Stop i Pi (xi+1,yi+1) Pi+1 if (Pi<0) Pi+1 if (Pi>0) 0 -7 (1,7) -3 - 1 -3 (2,7) +2 - 2 2 (3,6) - -3 3 -3 (4,6) 6 - 4 6 (5,5) - 7 13
  • 14.
    Character Generation Method 1.Stroke method/vector character generation method 14
  • 15.
    Character Generation Method 2.Dot-matrix or Bit-map method 1 2 3 4 5 1 2 3 4 5 6 7 8 9 2 3 4 5 6 1 7 1 2 3 4 5 6 7 Height Height Width Width 15
  • 16.
    Character Generation Method 3.Starbust method 1 2 3 4 14 5 62221 17 18 2313 12 11 10 9 8 7 1524 19 16 20 43 2 1 10 9 12 11 21 Starbust pattern of 24 line segments Starbust pattern for character E 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 Bit number 16