computer graphic scan conversion line and circle

33
Computer Graphic Scan Conversion Line and Circle

Upload: sheila-shannon-newton

Post on 11-Jan-2016

253 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Computer Graphic Scan Conversion Line and Circle

Computer Graphic

Scan Conversion

Line and Circle

Page 2: Computer Graphic Scan Conversion Line and Circle

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

20020 220 y

20120 221 y

20220 222 y

61920 2219 y

02020 2220 y

Page 24: Computer Graphic Scan Conversion Line and Circle

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

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

(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

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

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

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

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

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

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

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