+ All Categories
Home > Documents > + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

+ CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

Date post: 14-Dec-2015
Category:
Upload: deven-freebairn
View: 217 times
Download: 3 times
Share this document with a friend
35
+ CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3
Transcript
Page 1: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

+

CPCS 391 Computer Graphics 1

Instructor: Dr. Sahar ShabanahLecture 3

Page 2: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

+Scan conversion Algorithms

Primitives and Attributes

Why Scan Conversion?

Algorithms for Scan Conversion:

Lines

Circles

Ellipses

Filling

Polygons

2

Page 3: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

+Scan Conversion Problem

To represent a perfect image as a bitmapped image.

3

Page 4: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

+Line Drawing Algorithms

Lines are used a lot - want to get them right.

Lines should appear straight, not jagged.

Horizontal, vertical and diagonal easy, others difficult

Lines should terminate accurately.

Lines should have constant density.

Line density should be independent of line length or angle.

Lines should be drawn rapidly.

Efficient algorithms.

4

Page 5: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

+DDA: Digital Differential Analyzer

y i1 mx i1 B

m(x i x) B

mx i mx B

(mx i B) mx

y i mx

y i1 y i m x 1

(xi,yi)

(xi,Round(yi))

(xi,Round(yi+m))

(xi,yi +m)

Desired Line

Line: Left to Right:1- Slope m>0: sample at unit x intervals ( Δx= 1), calculate each succeeding y value as

5

Page 6: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

+DDA

x i1 x i 1

my 1

2- Slope m<0: sample at unit y

intervals ( Δy= 1), calculate each

succeeding x value as

Line: from Right to Left

3- Slope m> 0:

y i1 y i m x 1

4- Slope m< 0:

x i1 x i 1

my 1

6

Page 7: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

+DDA

Faster than brute force.

Based on Calculating either ∆x or ∆y.

Mathematically well defined

Floating point

Round off error.

Time consuming arithmetic

Advantages Disadvantages

7

Page 8: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

+Bresenhams Line Algorithm

Accurate

Efficient

Integer Calculations

Uses Symmetry for other lines

Adapted to display circles, ellipses and curves

It has been proven that the algorithm gives an optimal fit for lines

8

Page 9: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

+Bresenhams Line Algorithm

d2

d1

Xk+1

yk+1

y

yk

9

Page 10: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

+Bresenhams Line Algorithm

y m(x i 1) b

d1 y y

m(xk1) b yk

d2 (yk1) y

yk1 m(xk1) b

d1 d2 2m(xk1) 2y 2b 1 (3 11)

decision parameter, use m y

xpk x(d1 d2)

2yxk 2xy c (3 12)

10

Page 11: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

+Bresenhams Line Algorithm

The sign of pk is the same as the sign of d1 – d2,

since Δx> 0 for our example. Parameter c is independent and will be eliminated in the recursive calculations for pk.

If the pixel at yk is closer to the line path than the pixel at yk+l (that is, d1 < d2), then decision parameter pk is negative. In that case, we plot the lower pixel; otherwise, we plot the upper pixel.

pk1 2yxk1 2xyk c

11

Page 12: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

+ Bresenhams Line Algorithm

This recursive calculation of decision parameters is performed at each integer x position, starting at the left coordinate endpoint of the line. The first parameter, po is evaluated from Eq. 3-12 at the starting pixel position (xo, yo) and with m evaluated as Δy/Δx:

pk1 pk 2y(xk1 xk ) 2x(yk1 yk )

but xk1 xk 1

pk1 pk 2y 2x(yk1 yk )

p0 2y 2x

yk1 yk 0or1

12

Page 13: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

+Bresenhams Line Drawing Algorithm1. Input the two line endpoints, store the left endpoint

(x0,y0).

2. Plot the first point (x0,y0).

3. Calculate constants ∆x, ∆y, and 2∆y - 2∆x and 2∆y, get starting values for decision parameter pk, p0=2∆y-∆x

4. At each xk along the line, starting at k = 0, do the following test: if pk < 0, the next point to plot is(xk+1, yk)

pk+1 = pk + 2∆y

else, the next point to plot is(xk+1, yk+1)

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

5. Repeat step 4. ∆x times.

13

Page 14: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

+Bresenhams Line Algorithm

14

Page 15: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

+Midpoint Line Algorithm

If (BlueLine < Midpoint) Plot_East_Pixel();

Else Plot_Northeast_Pixel();

15

Page 16: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

+

Find an equation, given a line and a point, that will tell us if the point is above or below that line?

Midpoint Line Algorithm

y y

xx B

xy yx Bx

yx xy Bx

F(x,y) ax by c 0

F(x,y) yx xy Bx

now,d F(M) M midpoint

F(x p 1, y p 12)

y(x p 1) x(y p 12) Bx

y d y d

If F(x,y) ==0 (x,y) on the line <0 for points below the

line >0 for points above the

line d=F(M)

16

Page 17: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

+Midpoint Line Algorithm P=(xp, yp) is pixel chosen by the algorithm in previous step

To calculate d incrementally we require dnew

If d > 0 then choose NE

d y(x p 1) x(y p 12) Bx

dnew F(x p 2,y p 32)

y(x p 2) x(y p 32) Bx

dnew d y xNE

1 2 4 3 4

dnew d NE

NE y x

P=(xp, yp)

Yp+2

M

E

NE

xp+1xp xp+2

Pre

vio

us

Curr

en

t

Next

),1( 21 yxp

),2( 23 yxp

yp

Yp+1

MNE

17

Page 18: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

+Midpoint Line Algorithm If d < 0 then choose E

d y(x p 1) x(y p 12) Bx

dnew F(x p 2,y p 12)

y(x p 2) x(y p 12) Bx

dnew d yE{

dnew d E

E y

P=(xp, yp)

M

E

NE

xp+1xp xp+2

Pre

vio

us

Curr

en

t

Next

),1( 21 pp yx

),2( 21 pp yx

yp

Yp+1

Yp+2

ME

18

Page 19: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

+Midpoint Line Algorithm To find Initial value of d

d0 F(x0 1, y0 12)

y(x p 1) x(y p 12) Bx

yx p xy p Bx y 12x

F(x0, y0) y 12x

d0 y 12x

[as (x0, y0) is on the line]

P=(x0, y0)

M

E

NE

x0+1x0

Sta

rt

Init

ial d

o

),1( 21

00 yx

Only fractional value

d0 2y x

NE 2(y x)

E 2y

Multiply by 2 to avoid fractions. Redefine d0, E, NE

19

Page 20: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

+Midpoint Line Algorithm

Midpoint: Looks at which side of the line the mid point falls on.

Bresenham: Looks at sign of scaled difference in errors.

It has been proven that Midpoint is equivalent to Bresenhams for lines.

20

Page 21: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

+void MidpointLine(int x0, int y0, int x1, int y1, int color){

int dx = x1 – x0, dy = y1 – y0;

int d = 2*dy – dx;

int dE = 2*dy, dNE = 2*(dy – dx);

int x = x0, y = y0;

WritePixels(x, y, color);

while (x < x1) {

if (d <= 0) { // Current d

d += dE; // Next d at E

x++;

} else {

d += dNE; // Next d at NE

x++;

y++} Write8Pixels(x, y, color);}}

21

Page 22: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

+Midpoint Circle Algorithm

Implicit of equation of circle is: x2 + y2 - R2

= 0, at origin

Eight way symmetry require to calculate one octant

For each pixel (x,y),

there are 8 symmetric pixels

In each iteration

only calculate one pixel,

but plot 8 pixels

22

Page 23: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

23+Midpoint Circle Algorithm

Define decision variable d as:

SE Choose

Circle outside s

E Choose

Circle inside s

iM

d

iM

d

Ryx

yxFMFd

pp

pp

0

0

1

),1()(

22

212

21

P=(xp, yp)

M

E

xp+1xp xp+2

Pre

vio

us

Curr

ent

Next

),1( 21 pp yx ),2( 2

1 pp yx

ME

yp

yp – 1

yp – 2

SE MSE

E choose we

either Choose

0d

(x p + 2, y p − 32)

Page 24: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

24+Midpoint Circle Algorithm

If d <= 0 then midpoint m is inside circle we choose E Increment x y remains unchanged

Edd

xdd

Ryx

yxFd

Ryxd

new

E

pnew

pp

ppnew

pp

32

2

),2(

1

22

212

21

22

212

P=(xp, yp)

M

E

xp+1xp xp+2

Pre

vio

us

Curr

ent

Next

),1( 21 pp yx ),2( 2

1 pp yx

ME

yp

yp – 1

yp – 2

d < 0

Page 25: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

25+Midpoint Circle Algorithm

If d > 0 then midpoint m is outside circle we choose E Increment x Decrement y

d = x p +1( )2

+ y p − 12( )

2

− R2

dnew = F(x p + 2,y p − 32)

= x p + 2( )2

+ y p − 32( )

2

− R2

dnew − d = 2x p − 2y p + 5ΔSE

1 2 4 4 3 4 4

dnew = d + ΔSE

Pre

vio

us

P=(xp, yp)

M

SE

xp+1

xp xp+2

Curr

ent

Next

),1( 21 pp yx

(x p + 2,y p − 32)

MSE

yp

yp – 1

yp – 2

d > 0

Page 26: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

26+Midpoint Circle Algorithm

Initial condition

Starting pixel (0, R)

Next Midpoint lies at (1, R – ½)

d0 = F(1, R – ½) = 1 + (R2 – R + ¼) – R2 = 5/4 – R

To remove the fractional value 5/4 : Consider a new decision variable h as, h = d – ¼ Substituting d for h + ¼,

d0=5/4 – R h = 1 – R

d < 0 h < – ¼ h < 0 Since h starts out with an integer value and is incremented by

integer value (E or SE), e can change the comparison to just h < 0

Page 27: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

27+Midpoint Circle Algorithmvoid MidpointCircle(int radius, int value) {

int x = 0;int y = radius ;int d = 1 – radius ;CirclePoints(x, y, value);while (y > x) {

if (d < 0) { /* Select E */d += 2 * x + 3;

} else { /* Select SE */

d += 2 * ( x – y ) + 5;y – –;

}x++;CirclePoints(x, y, value);

}}

Page 28: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

28+Midpoint Circle Algorithm

Void CirclePoints(int x, int y, float value){

SetPixel(x,y);SetPixel(x,-y); SetPixel(-x,y); SetPixel(-x,-y); SetPixel(y,x);

SetPixel(y,-x); SetPixel(-y,x);

SetPixel(-y,-x);}

Page 29: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

29+ Midpoint Circle Algorithm Second-order differences can be used to enhance

performance.

522

32),(

pp

ppp yxSE

xEyx

2

2

52)1(2

3)1(2),1(

SESE

EE

yxSE

xEyx

new

new

ppnew

pnewpp

4

2

5)1(2)1(2

3)1(2)1,1(

SESE

EE

yxSE

xEyx

new

new

ppnew

pnewpp

E is chosen

SE is chosen 52

3),0(

RSE

ER

:value Initial

M

SE

MSE

E

Page 30: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

30+Midpoint Circle Algorithmvoid MidpointCircle(int radius, int value) {

int x = 0;int y = radius ;int d = 1 – radius ;int dE = 3;int dSE = -2*radius +5;CirclePoints(x, y, value);while (y > x) {

if (d < 0) { /* Select E */d += dE;dE += 2;dSE += 2;

} else { /* Select SE */d += dSE;dE += 2;dSE += 4;y – –;}

x++;CirclePoints(x, y, value);}

}

Page 31: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

31+Midpoint Ellipse Algorithm

Implicit equation is: F(x,y) = b2x2 + a2y2 – a2b2 = 0

We have only 4-way symmetry

There exists two regions In Region 1 dx > dy

Increase x at each step y may decrease

In Region 2 dx < dy Decrease y at each step x may increase

(x1,y1)(-x1,y1)

(x1,-y1)(-x1,-y1)

(-x2,y2)

(-x2,-y2)

(x2,y2)

(x2,-y2)

Page 32: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

32+Midpoint Ellipse Algorithm

Region 1

Region 2S SE

E

SE

Gradient Vector

TangentSlope = -1

ya

xb

dx

dy

dx

dyaybx

2

2

22 022

yaxb

dx

dy

22

1 1 Region In

Page 33: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

33+Midpoint Ellipse Algorithm

In region 1

SE

ppnew

pp

ppnew

E

pnew

pp

ppnew

pp

pp

yaxbdd

bayaxb

yxFd

SEto move then 0 d if

xbdd

bayaxb

yxFd

E to move then 0 d if

bayaxb

yxFd

)22()32(

)()2(

),2(

)32(

)()2(

),2(

)()1(

),1(

22

222322

23

2

222122

21

222122

21

P=(xp, yp)

M

E

xp+1

xp

xp+2

Pre

vio

us C

urr

ent

Nex

t

),1( 21 pp yx ),2( 2

1 pp yx

ME

yp

yp – 1

yp – 2

SE

MSE

),2( 23 pp yx

Page 34: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

34+Midpoint Ellipse Algorithm

In region 2

SE

ppnew

pp

ppnew

S

pnew

pp

ppnew

pp

pp

yaxbdd

bayaxb

yxFd

SEto move then 0 d if

yadd

bayaxb

yxFd

Sto move then 0 d if

bayaxb

yxFd

)32()22(

)2()(

)2,(

)32(

)2()(

)2,(

)1()(

)1,(

22

222232

23

2

222212

21

222212

21

P=(xp, yp)

MS

xp+1

xp

xp+2

Pre

vio

us Curr

ent

Nex

t

)1,( 21 pp yx

)2,( 21 pp yx

MS

yp

yp – 1

yp – 2

SE

MSE

)2,( 23 pp yx

Page 35: + CPCS 391 Computer Graphics 1 Instructor: Dr. Sahar Shabanah Lecture 3.

35+Midpoint Ellipse AlgorithmDPx=2*ry*ry; Dpy =2*rx*rx; x=0; y=ry; Px=0; Py =2*rx*rx*ry; f =ry*ry +rx*rx(0.25-ry ); ry2=ry *ry; Set4Pixel(x,y); while (px<py ) //Region I{ x=x+1; Px=Px+DPx; if (f>0) // Bottom case{y=y -1; Py =Py -Dpy ; f=f+ry2+Px-Py;} else // Top casef=f+ry2+Px; Set4Pixel(x,y);


Recommended