CE-201 Lect 4-6 _ZA

69
Lecture Outline Scan Conversion  Point  Line  Circle

Transcript of CE-201 Lect 4-6 _ZA

Page 1: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 1/69

Lecture Outline

• Scan Conversion

 – Point

 – Line

 – Circle

Page 2: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 2/69

Point Scan

• Point plotting is furnished by converting a single

coordinate position into appropriate operations for

the output device in use.

• Random scan uses stored point-plotting instructions(coordinates) and convert them in deflection voltage

that positions the electron beam at the screen

locations to be plotted during each refresh cycle.

Page 3: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 3/69

Point Scan…1 

• Raster scan depends on setting the bit value

corresponding the specified screen position within

the frame buffer to 1. The electron beam when

sweeps across such position in a line emits burst of electrons with intensities corresponding to colour

codes to be displayed at that location.

Page 4: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 4/69

Point Scan…2 

• Let as scan-convert a point (x, y) to a pixel location

(x’, y’) 

• x’ = Floor(x), and y’ = Floor(y) 

• Where Floor is a function that returns largest integer thatis less than or equal to the argument.

• In such a case, the origin is placed at the lowest left

corner of the pixel grid in the image space

• All points that satisfy x’  x < x’+1 and y’  y < y’ + 1

will be mapped to pixel location (x’, y’) (refer Fig a) 

Page 5: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 5/69

Point Scan…3 

Page 6: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 6/69

Point Scan…4 

• If the origin of coordinate system for (x, y) is to

be shifted to new location say (x+0.5, y+0.5),

then

 – x’ = Floor(x+0.5), and y’ = Floor(y+0.5) 

 – This will place the origin of the coordinate system

(x, y) at the centre of pixel (0, 0)

 – Now, all points that satisfy x’-0.5  x < x’+0.5 andy’-0.5  y < y’+0.5 will be mapped to pixel location

(x’, y’) (refer Fig b) 

Page 7: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 7/69

Line Scan-Conversion

• Line plotting is done by calculating intermediate

positions between the two specified endpoint positions.

• Linearly varying horizontal and vertical deflection

voltages are generated in proportion to the requiredchanges in x, y directions to produce the smooth line.

• A straight line segment is displayed by plotting the

discrete points between endpoint positions.

 – These intermediate positions are calculated from the equationof the line

 – Colour intensity is loaded into the frame buffer at the

corresponding pixel coordinate

Page 8: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 8/69

Line Scan-Conversion…1 

• Screen locations are referenced with integer values. E.g.

(10.48, 20.51) will be converted to pixel position (10, 20)

• This rounding effect causes lines to be displayed with a

stairstep appearance . This is noticeable on lowresolution systems.

• Better smoothing can be achieved by adjusting light

intensities along the line paths.

Page 9: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 9/69

Line Scan-Conversion…2 

• Pixel column number is basically pixel position across a

scan line. These are increasing from left to right.

• Scan line number are increasing from bottom to top.

• Loading a specified colour into framebuffer at a pixel position defined by

column ‘x’ along scan line ‘y’ 

setPixel (x, y)

• Current frame-buffer intensity for a

specified location can be accomplished

getPixel (x, y)Pixel

column No

   S  c  a  n

   L   i  n  e

   N  o

0

0 1 2

12

Page 10: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 10/69

Line Scan-Conversion…3 

• Line is defined by two end points P1, P2 and the equation of 

line as shown in the Figure

• These can be plotted or scan-converted using different line

plotting algorithms.

• The slope-intercept equation is

not suitable for vertical lines.

Horizontal, vertical and diagonal

(|m| = 1) lines can be handled

as special cases and can bemapped to image space

straightforward.

y

b

y = m.x + b

P1 (x1, y1)

P2(x2, y2)

x

Page 11: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 11/69

Line Drawing Algorithms

• Direct use of line equation

• DDA algorithm

• Bresenham’s Line Algorithm 

Page 12: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 12/69

Direct use of Line equation

• Direct approach

 – The Cartesian slope

intercept equation for a

straight line:

y = m . x + b (1)

 – ‘m’ represents slope of 

the line and ‘b’ is

intercept on y-axis, suchthat

(2)

(3)11

12

 .

12

 xm yb

 x xm

y y

y1 

y2 

x1  x2 

y1 

y2 

x1  x2 

Page 13: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 13/69

Direct use of Line equation..1

• For a small change in ‘x’

along the line, the

corresponding change

in ‘y’ can be given by y = m . x (4)

or x = y/m (5)

 – These equations form

the basis for determiningthe deflection voltages

in analog devices.

• For lines with slope

magnitudes |m|<1, x

is set proportional to

small horizontaldeflection voltage and

the corresponding

vertical deflection is

then set proportional toy as calculated from

the equation (4).

Page 14: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 14/69

Direct use of Line equation…2 

• For lines with slope

magnitudes |m|>1, y

is set proportional to a

small vertical deflectionvoltage and the

corresponding

horizontal deflection is

then set proportional tox as calculated from

the equation (5).

• For lines with slope

magnitudes m=1, x =

y and the horizontal

and vertical deflectionvoltage are equal

Page 15: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 15/69

Direct use of Line equation…3 

• This means:

 – First scan convert end points to pixel locations (x1’, y1’) and

(x2’, y2’) 

 – Set ‘m’ and ‘b’ using equations  – For |m| 1, for integer value of x between and excluding

x1’, x2’, calculate the corresponding value of y and scan-

convert (x, y)

 – For |m|> 1, for integer value of y between and excludingy1’, y2’, calculate the corresponding value of x and scan-

convert (x, y)

Page 16: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 16/69

Direct use of Line equation…4 

• Example:

 – End points are (0, 0) and (6, 18). Compute each value of x

as y steps from 0 to 18 and plot.

• For equation y = m.x + b, compute slope as

 – m = y/x

• Using value of ‘m’ compute ‘b’ 

• Place y = 1 to 17 and compute corresponding value of ‘x’ 

• Plot

Page 17: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 17/69

Direct use of Line equation…5 

• Example:

 – M = (18 – 0) /(6 – 0) = 3 m > 1 b = 0

 – Change y: compute for y = 1 the value of x = ∆y/m = 1/3 

• Cartesian coordinate point (1, 0.3)• Pixel coordinate point (Case-I): (1, 0)

• Pixel coordinate point (Case-II): (1, 0)

 – Compute for y = 2 the value of x = 2/3

• Cartesian coordinate point (1, 0.67)

• Pixel coordinate point (Case-I): (1, 0)

• Pixel coordinate point (Case-II): (1, 1)

 – Plot the three graphs

 – Continue ….. 

Page 18: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 18/69

Digital Differential Analyzer (DDA)

• DDA is an incremental scan-conversion line algorithm

based on calculating either x or y as mentioned in

line primitives.

• Suppose at step ‘i’ the point is (xi, yi) on the line.• For next point (xi+1, yi+1)

 – yi+1 = yi + y, where y = m x

 – xi+1

= xi

+ x, where x = y/m

 – The process continues until x reaches x2’ (for |m| 1 case)

or y reaches y2’ (for |m|> 1 case) 

Page 19: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 19/69

Digital Differential Analyzer…1 

• Consider a line with positive slope. Let the slope be

less than or equal to 1. For unit interval x=1,

yk+1 = yk + m, where k = 1, 2, …., end point (6)

 – The value of yk+1 should be rounded to the nearest integer• For slope greater than 1, increasing y by 1

xk+1 = xk + 1/m, where k = 1, 2, …., end point (7)

 – The value of xk+1 should be rounded to the nearest integer

Page 20: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 20/69

Digital Differential Analyzer…2 

• The assumption here is that lines are processed from

left to right. If it is processed from right to left then

yk+1 = yk  – m (8)

xk+1 = xk  – 1/m (9)

x

y

Page 21: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 21/69

Digital Differential Analyzer…3 

• For negative slope of line as shown in figure:

• If moving from left to right:

 – Set x = +1 and use equation (8) for m<1 to calculate y values

 – Set y = -1 and use equation (7) for m>1 to calculate x values

• If moving from right to left:

 – If m < 1 then set x = -1 and obtain y

values from equation (6)

 – If m > 1 then set y = +1 and obtain x

values from equation (9)

x

y

Page 22: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 22/69

Digital Differential Analyzer…4 

• This algorithm is faster in calculating pixel positions

• It eliminates multiplication by making use of raster

characteristics

• But rounding off in successive additions and itsaccumulation may cause drifting of the pixel position

away from the true line

• This rounding off procedure is also time consuming• By converting m or 1/m into integer or fractional

part, the time consumed can be reduced.

Page 23: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 23/69

Bresenham’s Line Algorithm 

• This raster-line generating algorithm is more accurate

and efficient

• It uses only incremental integer calculations

• It can be adapted to display circles and other curves.• The method is based on identifying the nearest pixel

position closer to the line path at each sample step.

10

11

12

13

10 11 12 13

50

51

52

53

50 51 52 53

Fig-1 Fig-2

Page 24: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 24/69

Bresenham’s Line Algorithm…1 

• In Fig 1 the line segment

starts from scan line 11

and pixel position

(column) 10. The next

point along the line may

be at pixel position (11,

11) or (11, 12)

• Similarly, in Fig 2 the linesegment starts from (50,

52) and the next pixel

position may be (51, 52)

or (51, 51)

Fig-1

Fig-2

10

11

12

13

10 11 12 13

50

51

52

53

50 51 52 53

Page 25: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 25/69

Bresenham’s Line Algorithm…2 

• Bresenham’s line algorithm tests the sign of an

integer parameter and the one whose value is

proportional to the difference between the

separations of the two pixel positions from the actualline path is selected.

• Let the line starts from left-end

point (xo, yo) of a given line. Now,

the pixel whose scan-line y valueis closest to the line path is plotted.

Fig-3

yk 

yk+1 

yk+2 

yk+3 

xk  xk+1  xk+2 xk+3 

Page 26: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 26/69

Bresenham’s Line Algorithm…3 

• Let the pixel displayed is (xk, yk). The next pixel to

plot will be in column xk+1 and may be represented as

(xk+1, yk) or (xk+1, yk+1)

• The difference between estimatedvalue of y and new y value along the

line is to be computed.

For first point yest =m . (xk+1) + b (10)

Difference d1 = yest  – yk (11)

For second point d2 = (yk+1) – yest (12)

Difference between the two separations = d1  – d2

Fig-3

yk 

yk+1 

yk+2 

yk+3 

xk  xk+1  xk+2 xk+3 

d1 

d2 

y = m.x + b

Page 27: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 27/69

Bresenham’s Line Algorithm…4 

• Difference (d1  – d2) = 2m.(xk+1) – 2 yk + 2b – 1 (13)

• Let m = y/x denoting vertical and horizontal

separations. Let px is defined as

px = x (d1  – d2)px = 2 y . xk - 2 x . yk + c (14)

Where, c = 2 y + x (2b – 1) (15)

• Decision parameter px

is –ve i.e. d1

<d2

 – Pixel at yk is closer to line than that at yk+1

 – Lower point will be plotted

 – Vice-Versa

Fig-3

yk 

yk+1 

yk+2 

yk+3 

xk  xk+1  xk+2 xk+3 

d1 

d2 

y = m.x + b

Page 28: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 28/69

Bresenham’s Line Algorithm…5 

• The change in coordinate along the line takes place

in unit steps. The decision parameter at next step will

be:

pk+1 = 2y . xk+1 - 2 x . yk+1 + cAnd pk+1  – pk = 2 y (xk+1  – xk) - 2 x (yk+1  – yk) (16)

But xk+1 = xk+1, so that

pk+1 = pk + 2 y - 2 x (yk+1  – yk) (17)

(yk+1  – yk) is either 0 or 1 depending upon the sign of pk.

The initial value of parameter will be

po = 2 y - x (18)

Page 29: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 29/69

Bresenham’s Line Algorithm…6 

• Algorithm for |m|<1: (steps)

 – Input and store (xo, yo). Plot it (load on buffer).

 – Calculate x, y, 2 y - 2 x

 – Compute decision parameter, po (= 2 y - x) – Assuming pk < 0, the next point will be (xk+1, yk) and

pk+1 = pk + 2y

Otherwise, plot point (xk +1, yk +1) and

pk+1 = pk + 2 y - 2 x

 – Repeat step x times

Page 30: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 30/69

Bresenham’s Line Algorithm…7 

• E.g. Plot a line with end points (20, 10) and (30, 18).

The slope of line is 0.8.

 – Calculate x (=10), y (=8)

 – Compute decision parameter, po (= 2 y - x = 6) – Compute 2 y (=16), 2 y - 2 x (= -4)

 – Assuming pk < 0, the next point will be (xk+1, yk) and

pk+1 = pk + 2y

Otherwise, plot point (xk +1, yk +1) and

pk+1 = pk + 2 y - 2 x

 – Repeat step x times

Page 31: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 31/69

Bresenham’s Line Algorithm…8 

• It is generalized to lines with arbitrary slopes.

• Considers symmetry between octants and quadrants of 

the xy plane.

• Algorithm allows moving along pixel position from eitherend of the line.

• For positive slope and start from left end point, both the

increments are positive. It is vice-versa for start from

right end point.• For negative slope, one increment will be positive and

other negative depending upon the start point.

Page 32: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 32/69

Bresenham’s Line Algorithm…9 

• When the two vertical separations from the line path are

equal (d1 = d2), we choose upper (or lower) of the two

candidate pixels.

• Special cases like

y = 0 (horizontal line);

x = 0 (verticalline) and |x| = |y| (diagonal line) can be loaded

directly into the frame buffer without processing them

through the line –plotting algorithm.

Page 33: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 33/69

Bresenham’s Line Algorithm…10 

• For negative slope of a line (|m|<1)

 – When moving from left to right

 – Po = - 2∆y - ∆x 

 – If po

is – ve point will be (xk+1

, yk

)

and pk+1 = po - 2 ∆y 

 – If po is + ve point will be (xk+1, yk-1)

and pk+1 = po - 2 ∆y - 2 ∆x 

Page 34: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 34/69

Bresenham’s Line Algorithm…11 

• For negative slope of a line (|m|<1)

 – When moving from right to left

 – Po = 2∆y + ∆x 

 – If po

is – ve point will be (xk-1

, yk

)

and pk+1 = po - 2 ∆y 

 – If po is + ve point will be (xk-1, yk+1)

and pk+1 = po + 2 ∆y + 2 ∆x 

Page 35: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 35/69

Bresenham’s Line Algorithm…12 

• For negative slope of a line (|m|>1)

 – Increment is ∆y 

 – When moving from left to right

 – ∆x = ∆y/m or (1/m) = ∆x/ ∆y 

 – d1 = xest - xk 

 – d1 = (1/m)(yk+1  – b) – xk 

 – d2 = xk+1  – xest 

 – d2

= xk+1

  – (1/m)(yk+1

  – b)

 – d1  – d2 = (2/m)(yk + 1) – 2xk  – (2b/m) – 1

 – pk = ∆y . (d1  – d2)

 – pk = 2 ∆x . yk - 2 ∆y . xk + 2 ∆x (1-b) - ∆y 

d1 d2 

y = m. x + b

yk 

yk+1 

yk+2 

yk+3 

xk  xk+1  xk+2 xk+3 

Page 36: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 36/69

Bresenham’s Line Algorithm…13 

• For negative slope of a line (|m|>1)

 – When moving from left to right

 – pk = 2 ∆x . yk - 2 ∆y . xk + 2 ∆x (1-b) - ∆y 

 – pk = 2 ∆x . yk - 2 ∆y . xk + c – Where c = 2 ∆x (1-b) - ∆y 

 – When pk ≤ 0, then d1 < d2 point (xk, yk+1)

 – When pk > 0, then d1 > d2 point (xk+1, yk+1)

 – Now, pk+1 = 2 ∆x . yk+1 - 2 ∆y . xk+1 + c – pk+1  – pk = 2 ∆x . (yk+1  – yk) - 2 ∆y . (xk+1  –xk)

 – pk+1 = pk+2 ∆x . (yk + 1 – yk) - 2 ∆y . (xk+1  –xk)

d1 d2 

y = m. x + b

yk 

yk+1 

yk+2 

yk+3 

xk  xk+1  xk+2 xk+3 

Page 37: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 37/69

Bresenham’s Line Algorithm…14 

• For negative slope of a line (|m|>1)

 – When moving from left to right

 – pk+1 = pk + 2 ∆x . (yk + 1 – yk) - 2 ∆y . (xk+1  –xk)

 – pk+1 = pk + 2 ∆x - 2 ∆y . (xk+1  –xk) – Now, if pk+1 ≤ 0, then d1 < d2 point (xk, yk+1)

 – Decision parameter pk+1 = pk + 2 ∆x 

 – When pk+1 > 0, then d1 > d2 point (xk+1, yk+1)

 – Decision parameter pk+1 = pk + 2 ∆x - 2∆y  – Initial decision parameter po = 2 ∆x - ∆y 

d1 d2 

y = m. x + b

yk 

yk+1 

yk+2 

yk+3 

xk  xk+1  xk+2 xk+3 

Page 38: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 38/69

Bresenham’s Line Algorithm…15 

• For negative slope of a line (|m|>1)

 – When moving from left to right

 – Steps:

 – Initial decision parameter po

= 2 ∆x - ∆y 

 – If ≤ 0, then point (xk, yk+1) and

Decision parameter pk+1 = pk + 2 ∆x 

 – If > 0, then point (xk+1, yk+1) and

Decision parameter pk+1 = pk + 2 ∆x - 2∆y  – For other orientations or start from right to left, change the sign

of ∆x and ∆y based on change in value of respective x or y  

d1 d2 

y = m. x + b

yk 

yk+1 

yk+2 

yk+3 

xk  xk+1  xk+2 xk+3 

Page 39: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 39/69

Bresenham’s Line Algorithm…16 

• Example: Line 6x + 5y = 30

 – Points are (0, 6) and (5, 0) (|m|>1) increment ∆y 

 – ∆x = 5; ∆y = -6; 2 ∆x = 10; 2 ∆y = -12

 – po = 2 ∆x + ∆y = 10 - 6 = 4 point (1, 5) – p > 0; pk+1 = pk + 2 ∆x + 2∆y = 4 + 10 – 12 = 2

point (2, 4)

 – p2 = 2 + 10 -12 = 0 point (2, 3)

 – p3 = pk + 2 ∆x = 0 + 10 = 10 point (3, 2)  – p4 = 10 + 10 - 12 = 8 point (4, 1)

 – p5 = 8 + 10 - 12 = 6 point (5, 0)

Page 40: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 40/69

Circle Generating Algorithms

• Properties of circle:

 – A circle is defined as the set of points that are all at a given

distance r from a center position ( x c ,y c)

 – This distance relationship is expressed by the Pythagoreantheorem in Cartesian coordinates as

(x – xc)2 + (y – yc)

2 = r2 (22)

 – For position of points on a circle

• Move from (xc – r) to (xc + r) in unit steps• Calculate corresponding y values as:

y = yc ± √(r2  – (xc  – x)2 (23) xc 

yc 

r

Page 41: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 41/69

Circle Generating Algorithms…1 

• This is not the best method for generating a circle.

• One problem with this approach is that it involvesconsiderable computation at each step.

• Moreover, the spacing between plotted pixelpositions is not uniform

• The spacing can be adjusted by interchanging x and ywhenever the absolute value of 

slope of the curve is greater than 1.• This is computationally more

cumbersome.

Page 42: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 42/69

Circle Generating Algorithms…2 

• Another approach is to use polar coordinates r and θ ,

yielding

x = xc + r Cos θ (24)

y = yc + r Sin θ (25)• Larger angular separations along the circumference can

be connected with straight line segments to approximate

the circular path.

• For a more continues boundary on a raster display, thestep size is set at 1/r. This plots pixel positions that are

approximately one unit apart.

Page 43: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 43/69

Circle Generating Algorithms…3 

• Computation can be reduced either by

 – Considering symmetry w.r.t. y-axis for segment in 1st and

2nd quadrant, and then considering symmetry w.r.t. x-axis

for segment in 3rd and 4th quadrant or

 – Considering the symmetry between adjacent octants

within a quadrant w.r.t 45o line

 – Therefore calculations are required

for points between x=0 and x=y

and then these are mapped to rest

eight sectors.

450 

(y, x)

(-x, y)

(-y, x)

(-x, -y) (x, -y)

(-y, -x) (y, -x)

(x, y)

Page 44: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 44/69

Circle Generating Algorithm…4 

Page 45: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 45/69

Circle Generating Algorithms…5 

• All these procedures require a good deal of 

computation time

• More efficient circle algorithms are based on

incremental calculations as in the Bresenham linealgorithm

• Bresenham’s line algorithm is adapted to circlegeneration by setting up decision parameters for

finding the closest pixel to the circumference at eachsampling step

• It avoids square-root calculations by comparing thesquares of the pixel separation distances

Page 46: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 46/69

Midpoint Circle Algorithm

• The closest pixel position to the specified circle path

is determined by moving unit distance at each step

• Let radius is r and screen center position is ( x c , y c)

• Set up algorithm to calculate pixel positions around acircle path centered at the coordinate origin (0, 0)

• To move each calculated position ( x, y ) to its proper

screen position add x c

to x and y c

to y  

• Along the circle section from x = 0 to x = y in the first

quadrant the slope of the curve varies from 0 to -1

Page 47: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 47/69

Midpoint Circle Algorithm…1 

• To apply the midpoint method, circle function is

defined as:

 f circle (x, y) = x2 + y2 – r2 (26) 

Such thatf circle (x, y) < 0, if ( x, y ) is inside the circle boundary

= 0, if ( x, y ) is on the circle boundary

> 0, if ( x, y ) outside the circle boundary

• This becomes the decision parameter for midpointalgorithm

Page 48: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 48/69

Midpoint Circle Algorithm…2 

• Let us consider the midpoint between the two

candidate pixels at sampling position xk +1.

• After plotting of the pixel at (xk , yk ), next to

determine is whether the pixel at position (xk +1, yk )or the one at position (xk +1, yk -1) is closer to the

circle.

• Decision parameter will be:

(27)

Midpoint

x2+y2-r2=0

xk xk + 1 xk + 2

yk-1

yk

 

along a circular path.

 

  

 2

1,1 k k circlek  y x  f  p

22

k 2

k  r2

1y1x

 

  

 

Page 49: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 49/69

Midpoint Circle Algorithm…3 

• If pk<0, this midpoint is inside the circle and the pixel

on scan line yk is closer to the circle boundary.

• Otherwise, the mid position is outside or on the

circle boundary, and we select the pixel on scanlineyk-1.

• Successive decision parameters are obtained using

incremental calculations. For pixel location (xk+1+ 1)

(28)

• yk+1 is either yk or yk-1 depending on the sign of pk 

1)yy()yy()1x(2pp k 1k 2k 

21k k k 1k 

Page 50: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 50/69

Midpoint Circle Algorithm…4 

• Increments for obtaining pk+1 are either 2xk+1 +1 (if pk 

is negative) or (2xk+1 + 1 - 2yk+1)

• Evaluation of the terms 2xk+1 and 2yk+1 can also be

done incrementally as2xk+1 = 2xk + 2; 2yk+1 = 2yk - 2

• At the start position (0, r) these two terms have the

values 0 and 2r, respectively.

• Each successive value is obtained by adding 2 to the

previous value of 2 x  and subtracting 2 from the

previous value of 2y .

Page 51: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 51/69

Midpoint Circle Algorithm…5 

• The initial decision parameter is obtained by

evaluating the circle function at the start position

( x 0 , y 0) = (0, r) as:

(29)• If the radius r is specified as an integer, we can simply

round to p0 = 1 – r (for r an integer).

r  p

r r 

r   f   p cricle

 

  

 

  

  

4

5

2

11

21 ,1

0

2

2

0

or

Page 52: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 52/69

Steps

• Input radius r, circle center ( x c , y c), and obtain the first pointon the circumference of a circle centered at the origin as (x0,y0) = (0, r)

• Calculate the initial value of the decision parameter as

p0 = 5/4 – r• At each xk position, starting at k = 0, perform the following

test: if pk < 0, the next point along the circle centered on (0,0)is (xk+1 , yk) and pk+1 = pk + 2xk+1 + 1

• Otherwise, the next point along the circle is (xk+1, yk-1) and

pk+1 = pk + 2xk+1 + 1 - 2yk+1

Where 2xk+1 = 2x k + 2 and 2yk+1 = 2y k - 2

• Determine symmetry points in the seven other octants

• Move pixel position (calculated) to screen position by adding

Page 53: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 53/69

y = x

x

0 1 2 3 4 5 6 7 8 9 10

0

1

2

3

4

5

6

7

8

9

10

y

Example

• Plot the generated pixel positions for a circle with

radius r = 10 using midpoint circle algorithm.

 – po = 1 – r = -9

 – Initial point (0, 10) – Decision parameters

2xo = 0; 2yo = 20

Page 54: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 54/69

BRESENHAM’S ALGORITHM 

• Assume that (xi , yi ) are the coordinates of the last scan-

converted pixel upon entering step i .

• Let the distance from the origin to pixel T squared minus

the distance to the true circle squared = D(t ).

• Then let the distance from the origin to pixel S squared

minus the distance to the true circle squared = D(s).

• As the coordinates of T are (xi  + 1, yi ) and those of S are

(xi + 1, yi -1), the following expression can be developed:

Page 55: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 55/69

Choosing Pixels in Bresenham’s Circle Algorithm

(xi + 1, yi)

(xi, + 1, yi - 1)

T(xi, yi) 

S

r

y

x

    2

    2

    )   1

   ( 

   i

   i

   y

  x

   

   

  22

11 ii y x

BRESENHAM’S ALGORITHM…1 

Page 56: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 56/69

BRESENHAM’S ALGORITHM…2 

D(t ) = (xi + 1)2 + yi2 - r2 

D(s) = (xi+1)2 + (yi  – 1)2  – r2

• This function D provides a relative measurement of the

distance from the center of a pixel to the true circle.• Since D(t ) will always be positive (T is outside the true

circle) and D(s) will always be negative (S is inside thetrue circle), a decision variable, d i  may be defined as

follows:d i = D(t ) + D(s)

Therefore

d i = 2(xi + 1)2 + yi2 + (yi  – 1)2  – 2r2

Page 57: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 57/69

BRESENHAM’S ALGORITHM…3 

• When d i <0, |D(t )|<|D(s)|, then select pixel T.

• When di  ≥ 0, |D(t ) ≥ |D(s)|, then select pixel S.

• The decision variable di +1 for the next step:

d i +1 = 2(xi +1+1)2 + y2i + 1 + (yi+1-1)2  – 2 r2 Hence

d i+1- d i = 2(xi+1 + 1)2 + y2i+1 + (yi+1 - 1)2 

 – 2(xi  

+ 1)2 – y2

i  

 – (yi 

  – 1)2 

Since xi+1 = xi + 1 so,

d i+1 = d i + 4xi + 2(y2i+1  – y2

i ) – 2(yi+1 - yi ) + 6

Page 58: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 58/69

BRESENHAM’S ALGORITHM…4 

• If T is the chosen pixel (di  < 0) then yi+1=yi and so

d i+1 = di  + 4xi  + 6

• If S is the chosen pixel (d i ≥ 0) then yi+1 = yi -1and so

d i+1

= d i 

+ 4(xi 

 –yi 

) + 10

• Set (0, r ) to be the starting pixel coordinates andcompute the base case value d i :

d 1 = 2 (0 + 1)2

+ r2

+ (r – 1)2

  – 2r2

 = 3- 2r

Page 59: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 59/69

Example

• Given a radius of 10 units.

• Compute di = 2(xi+1)2 + yi2+(yi-1)2-2r2.

• Set the value as (0,r) as the start point

d0 = 2(0+1)2 + 102 + 10-1)2 - 2x102

= 2+100+81-200

= 183-200

= -17. Or = 3 – 2r = 3 – 20 = -17

Page 60: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 60/69

Example…1 

• As d0 < 0, yi+1=yi. 

• So next point (1,10)

d1 = d0 + 4xi + 6.

= - 17+ 4 + 6= -7

• So next point is (2, 10).

d2

= d1

+ 4x2+6

= -7+8+6.

=+7. 

Page 61: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 61/69

Example…2 

• So next point (3, 9).

d3 = di+4(xi-yi)+10

= 7+4(3-9)+10

= 7-24+10= -7.

• So next point (4, 9)

d4 = -7+16+6 = 15.

• So next point (5, 8).

d5 = 15+4(5-8)+10 = 13.

Page 62: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 62/69

C i

Page 63: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 63/69

Comparison

Iteration Mid point Bresenham

0 (0,10) (0,10)

1 (1,10) (1,10)

2 (2,10) (2,10)

3 (3,10) (3,9)

4 (4,9) (4,9)

5 (5,9) (5,8)

6 (6,8) (6,7)

7 (7,7) (7,6)

Page 64: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 64/69

Coordinate Representations

• General graphics packages are designed to be used with CartesianCoordinate specifications.

• If coordinate values for a picture are specified in some otherreference frame, they must be converted to Cartesian system.

• Several different Cartesian reference frames are used to construct anddisplay a scene:

 – Modeling or local coordinates

 – World coordinates

 – Device or screen coordinates

• Graphics system first converts world coordinates to normalizedcoordinates before final conversion to device coordinates.

64

Page 65: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 65/69

65

Modeling Coordinates

Coordinate Representations

ModelingTransformations

FRAME BUFFER

Page 66: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 66/69

66

FRAME BUFFER

A frame buffer is a video output device that drives a video display from amemory buffer containing a complete frame of data. The information in thememory buffer typically consists of color values for every pixel (point that can bedisplayed) on the screen.

Color values are commonly stored in 1-bit binary (monochrome), 4-bit palettized,8-bit palettized, 16-bit highcolor and 24-bit truecolor formats.

The total amount of the memory required to drive the frame buffer depends onthe resolution of the output signal, and on the color depth and palette size.

Loading Frame Buffer 

Page 67: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 67/69

g

• When objects are scan converted for display with

raster system, frame buffer positions must becalculated.

• Scan conversion algorithms generate pixel positionsat successive unit intervals, this allows the use of incremental methods to calculate frame buffer

addresses.• This is accomplished with setPixel procedure, which

stores intensity values for the pixels at thecorresponding addresses within the frame-bufferarray.

67

Page 68: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 68/69

68

Frame-buffer array is addressed in row-major order

Pixel screen positions stored linearly in row-major order within the frame buffer

For 1 bit per pixel, the frame buffer addressfor pixel position (x,y) is calculated as

addr(x,y)=addr(0,0)+y(xmax+1)+x

addr(x+1,y)=addr(x,y)+1

addr(x+1,y+1)=addr(x,y)+xmax+2

SOFTWARE STANDARDS

Page 69: CE-201 Lect 4-6 _ZA

7/31/2019 CE-201 Lect 4-6 _ZA

http://slidepdf.com/reader/full/ce-201-lect-4-6-za 69/69

SOFTWARE STANDARDS

The primary goal is portability among the graphics softwares.

Without standards, programs designed for one hardware system can not betransferred to another system without extensive rewriting of programs.

Several Int. & national standards planning organizations have cooperatedand developed Graphical Kernel System (GKS). The is adopted by Int.Standards organisation (ISO) and American National Standards Institute

(ANSI). Other system is PHIGS (Programmer’s Hierarchial Interactive Graphics

Standard), which is extension of GKS.

PHIGS+ is developed to provide 3D surface-shading.

Standard graphics functions are defined as a set of specifications that is in-dependent to any programming language.

PHIGS polyline(n,x,y)Fortran call gpl(n,x,y)C ppolyline (n pts)