HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
cgrchapter2version-1-200729063505 (1).pdf
1. 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
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
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
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
7. 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+2y=2x
}
plot (x,y)
Step 7: Repeat step (6) x times.
Step 8: Stop
7
8. 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 11
9
8
6 7
4 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
11. 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
12. 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
13. 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