31
Computer Graphics Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics Lecture 3 Line & Circle Drawing

Embed Size (px)

Citation preview

Page 1: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

Computer Graphics

Lecture 3

Line & Circle Drawing

Page 2: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

2

Towards the Ideal Line

• We can only do a discrete approximation

• Illuminate pixels as close to the true path as possible, consider bi-level display only– Pixels are either lit or not lit

Page 3: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

3

What is an ideal line

• Must appear straight and continuous– Only possible axis-aligned and 45o lines

• Must interpolate both defining end points• Must have uniform density and intensity

– Consistent within a line and over all lines– What about antialiasing?

• Must be efficient, drawn quickly– Lots of them are required!!!

Page 4: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

4

Simple Line

Based on slope-intercept algorithm from algebra:

y = mx + b

Simple approach:

increment x, solve for y

Floating point arithmetic required

Page 5: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

5

Does it Work?It seems to work okay for lines with a slope of 1 or less,

but doesn’t work well for lines with slope greater than 1 – lines become more discontinuous in appearance and we must add more than 1 pixel per column to make it work.

Solution? - use symmetry.

Page 6: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

6

Modify algorithm per octant

OR, increment along x-axis if dy<dx else increment along y-axis

Page 7: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

7

DDA algorithm

• DDA = Digital Differential Analyser– finite differences

• Treat line as parametric equation in t :

)()(

)()(

121

121

yytyty

xxtxtx

),(

),(

22

11

yx

yxStart point -End point -

Page 8: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

8

DDA Algorithm

• Start at t = 0

• At each step, increment t by dt

• Choose appropriate value for dt

• Ensure no pixels are missed:– Implies: and

• Set dt to maximum of dx and dy

)()(

)()(

121

121

yytyty

xxtxtx

dt

dyyy

dt

dxxx

oldnew

oldnew

1dt

dx1

dt

dy

12

12

yydy

xxdx

Page 9: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

9

DDA algorithmline(int x1, int y1, int x2, int y2)

{float x,y;int dx = x2-x1, dy = y2-y1;int n = max(abs(dx),abs(dy));float dt = n, dxdt = dx/dt, dydt = dy/dt;

x = x1;y = y1;while( n-- ) {

point(round(x),round(y));x += dxdt;y += dydt;}

}

n - range of t.

Page 10: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

10

DDA algorithm

• Still need a lot of floating point arithmetic.– 2 ‘round’s and 2 adds per pixel.

• Is there a simpler way ?

• Can we use only integer arithmetic ?– Easier to implement in hardware.

Page 11: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

11

Observation on lines.

while( n-- ) {draw(x,y);move right;if( below line )move up;}

Page 12: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

12

Testing for the side of a line.

• Need a test to determine which side of a line a pixel lies.

• Write the line in implicit form:

0),( cbyaxyxF

•If (b<0) F<0 for points above the line, F>0 for points below.

Page 13: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

13

Testing for the side of a line.

• Need to find coefficients a,b,c.• Recall explicit, slope-intercept form :

• So:

0),( cbyaxyxF

bxdx

dyybmxy so and

0..),( cydxxdyyxF

Page 14: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

Decision variable.

PreviousPixel(xp,yp)

Choices forCurrent pixel

Choices forNext pixel

Let’s assume dy/dx < 0.5 (we can use symmetry)

Evaluate F at point M

Referred to as decision variable

)2

1,1( pp yxFd

M

NE

E

Page 15: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

15

Decision variable.Evaluate d for next pixel, Depends on whether E or NE Is chosen :

If E chosen :

cybxayxFd ppppnew )2

1()2()

2

1,2(

But recall :

cybxa

yxFd

pp

ppold

)2

1()1(

)2

1,1(

So :

dyd

add

old

oldnew

M

E

NE

PreviousPixel

(xp,yp)

Choices forCurrent pixel

Choices forNext pixel

Page 16: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

16

Decision variable.

If NE was chosen :

cybxayxFd ppppnew )2

3()2()

2

3,2(

So :

dxdyd

badd

old

oldnew

M

E

NE

PreviousPixel

(xp,yp)

Choices forCurrent pixel

Choices forNext pixel

Page 17: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

17

Summary of mid-point algorithm

• Choose between 2 pixels at each step based upon the sign of a decision variable.

• Update the decision variable based upon which pixel is chosen.

• Start point is simply first endpoint (x1,y1).

• Need to calculate the initial value for d

Page 18: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

18

Initial value of d.

2

)2

1()1()

2

1,1(

11

1111

bacbyax

cybxayxFdstart

But (x1,y1) is a point on the line, so F(x1,y1) =0

2/dxdydstart

Conventional to multiply by 2 to remove fraction doesn’t effect sign.

2),( 11

bayxF

Start point is (x1,y1)

Page 19: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

19

Midpoint algorithm

void MidpointLine(int x1,y1,x2,y2)

{

int dx=x2-x1;

int dy=y2-y1;

int d=2*dy-dx;

int increE=2*dy;

int incrNE=2*(dy-dx);

x=x1;

y=y1;

WritePixel(x,y);

while (x < x2) {if (d<= 0) {

d+=incrE;x++

} else {d+=incrNE;x++;y++;

}WritePixel(x,y);

}}

Page 20: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

20

Circle drawing.• Can also use Bresenham to draw circles.

• Use 8-fold symmetry

Choices forNext pixel

M

E

SE

PreviousPixel

Choices forCurrent pixel

Page 21: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

21

Circle drawing.

• Implicit form for a circle is:

)32(chosen is E If

)522(chosen is SE If

poldnew

ppoldnew

xdd

yxdd

• Functions are linear equations in terms of (xp,yp)

–Termed point of evaluation

222 )()(),( ryyxxyxf cc

Page 22: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

22

Summary of line drawing so far.

• Explicit form of line– Inefficient, difficult to control.

• Parametric form of line.– Express line in terms of parameter t– DDA algorithm

• Implicit form of line– Only need to test for ‘side’ of line.– Bresenham algorithm.– Can also draw circles.

Page 23: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

23

Problems with Bresenham algorithm

• Pixels are drawn as a single line unequal line intensity with change in angle.

Pixel density = n pixels/mm

Pixel density = 2.n pixels/mm

Can draw lines in darker colours according to line direction.-Better solution : antialiasing !-(eg. Gupta-Sproull algorithm)

Page 24: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

Gupta-Sproull algorithm.• Calculate the distance of the line and the pixel

center

• Adjust the colour according to the distance

Page 25: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

25

Gupta-Sproull algorithm.

M

NE

Calculate distance using features of mid-point algorithm

DAngle = v

dy

dx

22

cos

dydx

vdx

vD

E

Page 26: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

Gupta-Sproull algorithm (cont)

Recall from the midpoint algorithm:

So

For pixel E:

So:

fraction) avoid to(doubled 02),( cbyaxyxF

y

1px

v

xp

NE

m

E xp+1

Line to draw

vyp

yp+1

Db

cax

)(

1py py v 1 pyy1px

pp y

b

cxa

)1(

Page 27: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

Gupta-Sproull algorithm (cont)

From previous slide:

From the midpoint computation,

So:

dxb

pp

yb

cxav

)1(

2/),1()1( pppp yxFcbyxavdx

xp

NE

m

E xp+1

Line to draw

vyp

yp+1

D

Page 28: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

Gupta-Sproull algorithm (cont)From the midpoint algorithm, we had the decision

variable (remember?)

Going back to our previous equation:

)2

1,()( 1 pp yxFMFd

xp

NE

m

E xp+1

Line to draw

vyp

yp+1

D

),1(2 pp yxFvdx cbyxa pp 22)1(2

cbybxa pp 22/2)2/1(2)1(2 byxF pp )2/1,1(

bMF )( bd dxd

Page 29: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

Gupta-Sproull algorithm (cont)So,

And the denominator is constant

Since we are blurring the line, we also need to compute the distances to points yp – 1 and yp + 1

vdxdxdxvy

vdxdxdxvy

p

p

22)1(2 1for numerator

22)1(2 1for numerator

222 dydx

dxdD

Page 30: Computer Graphics Lecture 3 Line & Circle Drawing

Computer GraphicsGupta-Sproull algorithm (cont)

If the NE pixel had been chosen:

vdxdxdxvy

vdxdxdxvy

p

p

22)1(2 for numerator

22)1(2 2for numerator

dxd

bd

bMF

byxF

cbybxa

cbyxa

yxFvdx

pp

pp

pp

pp

)(

)2/1,1(

22/2)2/1(2)1(2

2)1(2)1(2

)1,1(2

Page 31: Computer Graphics Lecture 3 Line & Circle Drawing

Computer Graphics

Gupta-Sproull algorithm (cont)• Compute midpoint line algorithm, with the following alterations:

• At each iteration of the algorithm:

– If the E pixel is chosen, set numerator = d + dx

– If the NE pixel is chosen, set numerator = d – dx

– Update d as in the regular algorithm

– Compute D = numerator/denominator

– Color the current pixel according to D

– Compute Dupper = (2dx-2vdx)/denominator

– Compute Dlower = (2dx+2vdx)/denominator

– Color upper and lower accordingly