Computer Graphic Scan Conversion Line and Circle.
-
Upload
sheila-shannon-newton -
Category
Documents
-
view
249 -
download
3
Transcript of Computer Graphic Scan Conversion Line and Circle.
![Page 1: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/1.jpg)
Computer Graphic
Scan Conversion
Line and Circle
![Page 2: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/2.jpg)
The process of representing a continuous graphical objects as a collection of discrete pixels by identifying their locations and setting them On is called scan conversion
The process of determining which pixels will provide the best approximation to the desired line is properly known as rasterization.
Combined with the process of rendering the picture in scan line order it is known as scan conversion.
Scan Conversion
![Page 3: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/3.jpg)
Points and Line
Points:o A point in two dimensional space is given as an
ordered pair (x, y)o In three dimensions a point is given as an
ordered triple (x, y, z)Lines: A line is defined using a start point
and an end-pointo In 2d: (xstart, ystart) to (xend, yend)
o In 3d: (xstart, ystart , zstart) to (xend, yend , zend)
![Page 4: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/4.jpg)
x
y
(2, 3)
(6, 7)
(7, 1)
(7, 3)
(2, 7)
The line from (2, 7) to (7, 3)
![Page 5: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/5.jpg)
The slope-intercept Equation of a line is:
where:
The equation of the line gives us the corresponding y point for every x point
01
01
xx
yy
x
ym
00 xmyb
bxmy
Simple Straight Line Equation
![Page 6: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/6.jpg)
Example: Let’s draw a portion of the line given by the equation:
5
4
5
3 xy
5
32
5
43
5
3)3( y
5
13
5
44
5
3)4( y
5
43
5
45
5
3)5( y
5
24
5
46
5
3)6( y
55
47
5
3)7( y
25
42
5
3)2( y
x
y
2 3 4 5 6 7
2
5
![Page 7: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/7.jpg)
Digital Differential Analyser ( DDA) for a lineLet endpoints coordinates are (x1,y1 ) and (x2,y2) respectively , so we have
12
12
xx
yy
x
ym
ym
xxmy 1
or
A very simple procedure for scan converting a straight line is given as follows:
1. Plot the first pixel at (x,y)= (x1,y1 )
2. increment the x- and y-values by dx and dy respectively to get the next pixel . We consider either dx or dy to be unity and compute the other . Plot pixel at (x+dx,y+dy)
if dx=1 the
Else dy=1
3. Continue the above steps until the final (x2,y2) is reached
myy ii 1
mxx ii
11
![Page 8: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/8.jpg)
DDA Algorithm for a line (x1,y1,x2,y2)
Begin
dx=x2-x1, dy=y2-y1;
if |dx|>|dy| then
steps=|dx|
else steps=|dy|
Xinc=dx/steps
Yinc=dy/steps
x=x1; y=y1;
setpixel(x1,y1);
for k=1 to steps do
begin x=x+Xinc; y=y+Yinc;
setpixel (round(x),round(y));
end
end /*of DDA/
![Page 9: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/9.jpg)
Example1: Trace the DDA algorithm for drawing a line segment from (2,3) to (8,7)
solution : dx=8-2=6 dy=7-3=4
|dx|>|dy| then steps=|dx|=6 Xinc=dx/steps=1 Yinc=dy/steps =0.67 now starting with the point (2,3) ,generate the next points in sequence to reach the point (8,7). the computational steps are shown in table below
Xold Yold Xnew Ynew Round(x) Round(y)
2 3 3 3.67 3 4
3 3.67 4 4.34 4 4
4 4.34 5 5.01 5 5
5 5.01 6 5.68 6 6
6 5.68 7 6.35 7 6
7 6.35 8 7.02 8 7
![Page 10: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/10.jpg)
Example1: Trace the DDA algorithm for drawing a line segment from (2,3) to (8,10)
solution : dx=8-2=6 dy=10-3=7
|dy|>|dx| then steps=|dy|=7 Xinc=dx/steps=0.86 Yinc=dy/steps =1 now starting with the point (2,3) ,generate the next points in sequence to reach the point (8,10). the computational steps are shown in table below
Xold Yold Xnew Ynew Round(x) Round(y)
2 3 2.86 4 3 4
2.86 4 3.72 5 4 5
3.72 5 4.58 6 5 6
4.58 6 5.44 7 5 7
5.44 7 6.3 8 6 8
6.3 8 7.16 9 7 9
7.16 9 8.02 10 8 10
![Page 11: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/11.jpg)
Line Drawing Algorithm Drawbacks
DDA is the simplest line drawing algorithm but Not very efficient Round operation is expensiveOptimized algorithms typically used.Integer DDAE.g.Bresenham’s algorithm
![Page 12: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/12.jpg)
1.Uses only integer operations and does not use multiplication or division.
2. Algorithm always increments by one unit in either X or Y depending on the slope of the line.
3. The increment in the other variable, either zero or one, is determined by examining the distance (error) between the actual line location and the nearest grid locations.
Bresenham’s algorithm
![Page 13: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/13.jpg)
Move across the x axis in unit intervals and at each step choose between two different y coordinates
Big Idea
For example, from position (2, 3) we have to choose between (3, 3) and (3, 4)
We would like the point that is closer to the original line
2 3 4 5
2
4
3
5
(xk, yk)
(xk+1, yk)
(xk+1, yk+1)
![Page 14: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/14.jpg)
Deriving The Bresenham Line Algorithm
At sample position xk+1 the
vertical separations from the mathematical line are labelled dupper and dlower
y
yk
yk+1
xk+1
dlower
dupper
The y coordinate on the mathematical line at xk+1 is:
bxmy k )1(
![Page 15: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/15.jpg)
So, dupper and dlower are given as follows:
and:
We can use these to make a simple decision about which pixel is closer to the mathematical line
klower yyd
kk ybxm )1(
yyd kupper )1(
bxmy kk )1(1
122)1(2 byxmdd kkupperlower
![Page 16: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/16.jpg)
Let’s substitute m with ∆y/∆x where ∆x and ∆y are the differences between the end-points:
)122)1(2()(
byxx
yxddx kkupperlower
)12(222 bxyyxxy kk
cyxxy kk 22So, a decision parameter pk for the kth step along a line
is given by:
cyxxy
ddxp
kk
upperlowerk
22
)(
Remember coordinate changes occur along the x axis in unit steps so we can do everything with integer calculations.
![Page 17: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/17.jpg)
At step k+1 the decision parameter is given as:
cyxxyp kkk 111 22
Subtracting pk from this we get:
)(2)(2 111 kkkkkk yyxxxypp
But, xk+1 is the same as xk+1 so:
)(22 11 kkkk yyxypp
where yk+1 - yk is either 0 or 1 depending on the sign of pk
The first decision parameter p0 is evaluated at (x0, y0) is given as:
xyp 20
![Page 18: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/18.jpg)
BRESENHAM’S LINE DRAWING ALGORITHM(for |m| < 1.0)
1. Input the two line end-points, storing the left end-point in (x0, y0)
2. Plot the point (x0, y0)
3. Calculate the constants Δx, Δy, 2Δy, and (2Δy - 2Δx) and get the first value for the decision parameter as:
4. At each xk along the line, starting at k = 0, perform the following
test.
If pk < 0, the next point to plot is (xk+1, yk) and:
Otherwise, the next point to plot is (xk+1, yk+1) and:
5. Repeat step 4 (Δx ) times
xyp 20
ypp kk 21
xypp kk 221
![Page 19: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/19.jpg)
Bresenham Algorithm Besgin:
;
;
12
12
yydy
xxdx
dx
dyslope
yyxxyyxx ff
2211 ;;;
If(slope>1)
Begin
temp=dx;dx=dy;dy=temp
temp=x;x=y;y=temp
temp=xf;xf=yf;yf=temp
End
P=2dy-dx
Setpixel(x,y)
![Page 20: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/20.jpg)
For k=1 to dx do
Begin
If(p<0) then
Begin
If (x<xf) then x=x+1;
Else x=x-1; p=p+2dy
End
Else
Begin if(y<yf) then y=y+1
else y=y-1
If (x<xf) then x=x+1;
else x=x-1; p=p+2(dy-dx);
End
If (slope>1) then setpixel(y,x)
Else setpixel(x,y)
End;
![Page 21: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/21.jpg)
Example 3: Trace the Bresenham’s algorithm for drawing the line segment from (2,3) to (8,7)
P0=2dy-dx=2*4-6=2; dx=6; dy=4
Pk<0pk+1=pk+2dy;xk+1=xk+1;yk+1=yk
Pk>=0pk+1=pk+2dy-2dx; xk+1=xk+1; yk+1=yk+1
k xk yk pk Pk+1 Xk+1 Yk+1
0 2 3 2 -2 3 4
1 3 4 -2 6 4 4
2 4 4 6 2 5 5
3 5 5 2 -2 6 6
4 6 6 -2 6 7 6
5 7 6 6 2 8 7
6 8 7 2 -2 9 8
![Page 22: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/22.jpg)
Drawing Circles
1. Using Explicit Representation
2. Using Parametric Representation
3. Midpoint Circle Drawing Algorithm
1-Drawing Circles Using Explicit Representation
22
222
xc)(xrycy
ryc)(yxc)(x
Very simple
Considerable computation at each step.
The spacing between plotted pixel positions is not uniform.
![Page 23: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/23.jpg)
20020 220 y
20120 221 y
20220 222 y
61920 2219 y
02020 2220 y
![Page 24: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/24.jpg)
2- Drawing Circles Using Parametric Representation
rsinθycy
rcosθxcx
xc
ycr
θ
Still considerable computation at each step.
![Page 25: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/25.jpg)
Optimisation and speed-up
Symmetry of a circle can be used
Calculations of point coordinates only for a first one-eighth of a circle
(x,y)
(y,x)
(x,-y)
(y,-x)
(-x,y)
(-y,x)
(-y,-x)
(-x,-y)
![Page 26: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/26.jpg)
(xk+1, yk)
(xk+1, yk-1)
(xk, yk)
Assume that we have
just plotted point (xk, yk) The next point is a
choice between (xk+1, yk) and (xk+1, yk-1)
We would like to choose the point that is nearest to the actual circle
So how do we make this choice?
Mid-Point Circle Algorithm (Bresenham)
![Page 27: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/27.jpg)
Let’s re-jig the equation of the circle slightly to give us:
The equation evaluates as follows:
By evaluating this function at the midpoint between the candidate pixels we can make our decision
222),( ryxyxfcirc
,0
,0
,0
),( yxfcirc
boundary circle theinside is ),( if yx
boundary circle on the is ),( if yx
boundary circle theoutside is ),( if yx
![Page 28: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/28.jpg)
Assuming we have just plotted the pixel at (xk,yk) so we need to choose between (xk+1,yk) and (xk+1,yk-1)
Our decision variable can be defined as:
If pk < 0 the midpoint is inside the circle and the pixel at yk is closer to the circle
Otherwise the midpoint is outside and yk-1 is closer
222 )21()1(
)21,1(
ryx
yxfp
kk
kkcirck
![Page 29: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/29.jpg)
222 )2
1()1()
2
1,1( ryxyxfplet kkkkk
otherwise 1
0
1
)2
1()2()
2
1,1(
1
1
221
2111
k
kkk
kk
kkkkk
y
pifyy
xxwhere
ryxyxfp
otherwise 5)(2
0 321
kkk
kkkk yxp
pifxpp
),0(),( since4
5)
2
1()10()
2
1,1(
00
222000
ryx
rrryxfp
(0, r)
![Page 30: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/30.jpg)
MID-POINT CIRCLE ALGORITHM
1. Input radius r and circle centre (xc, yc), then set the coordinates for the first point on the circumference of a circle centred on the origin as:
2. Calculate the initial value of the decision parameter as:
3. Starting with k = 0 at each position xk, perform the following test. If pk < 0, the next point along the circle centred on (0, 0) is (xk+1, yk) and:
Otherwise the next point along the circle is (xk+1, yk-1) and:
),0(),( 00 ryx
rrp 145
0
321 kkk xpp
5)(21 kkkk yxpp
![Page 31: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/31.jpg)
4. Determine symmetry points in the other seven octants
5. Move each calculated pixel position (x, y) onto the circular path centred at (xc, yc) to plot the coordinate values:
6. Repeat steps 3 to 5 until x >= ycxxx cyyy
![Page 32: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/32.jpg)
k pk (xk+1,yk+1) 2xk+1 2yk+1
0
1
2
3
4
5
6
-9
-6
-1
6
-3
8
5
(1,10)
(2,10)
(3,10)
(4,9)
(5,9)
(6,8)
(7,7)
2
4
6
8
10
12
14
20
20
20
18
18
16
14
r=10,p0=1-r=-9,(x0,y0)= (0,10),2x0=0, 2y0=20
Midpoint Circle Algorithm. Example
![Page 33: Computer Graphic Scan Conversion Line and Circle.](https://reader033.fdocuments.in/reader033/viewer/2022050809/56649e405503460f94b321d4/html5/thumbnails/33.jpg)
As in Bresenham's line algorithm, the midpoint method calculates pixel positions along the circumference of a circle using integer additions and subtractions, assuming that the circle parameters are specified un integer screen Coordinates.
Midpoint Circle Algorithm. Summary