computer graphics

34
Seminar On Computer Graphics TOPICS: Mid-point Circle Algorithm, Filling Algorithms & Polygons. 1/ 2 - 1

Upload: nanhen-verma

Post on 22-May-2015

1.676 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Computer graphics

Seminar On Computer Graphics

TOPICS: Mid-point Circle Algorithm, Filling Algorithms & Polygons.

1/2 - 1

Page 2: Computer graphics

Mid-point Circle Algorithm

Page 3: Computer graphics

1/2 - 3

To determine the closest pixel position to the specified circle path at each step.

For given radius r and screen center position (xc, yc), calculate pixel positions around a circle path centered at the coordinate origin (0,0).

Then, move each calculated position (x, y) to its proper screen position by adding xc to x and yc

to y .

Midpoint Circle Drawing Algorithm

Page 4: Computer graphics

4

Midpoint Circle Drawing Algorithm

8 segments of octants for a circle:

Page 5: Computer graphics

5

Midpoint Circle Drawing Algorithm

Circle function: fcircle (x,y) = x2 + y2 –r2

> 0, (x,y) outside the circle

< 0, (x,y) inside the circle

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

{fcircle (x,y) =

Page 6: Computer graphics

1/2 - 6

yk

Midpoint Circle Drawing Algorithm

Next pixel = (xk+1, yk)

Pk < 0

yk+1 = yk

Next pixel = (xk+1, yk-1)

Pk >= 0yk+1 = yk - 1

xk Xk+1Xk+2

yk

XkXk+1

Xk+2

yk-1yk-1

midpoint midpoint

Page 7: Computer graphics

Midpoint Circle Drawing Algorithm

We know xk+1 = xk+1,

Pk = fcircle(xk+1, yk- ½)

Pk = (xk +1)2 + (yk - ½)2 - r2 -------- (1)

Pk+1 = fcircle(xk+1+1, yk+1- ½)

Pk+1 = [(xk +1)+1]2 + (yk+1 - ½)2 - r2 -------- (2)

6

Page 8: Computer graphics

8

By subtracting eq.1 from eq.2, we get

Pk+1 –Pk = 2(xk+1) + (y2k+1 – y2

k) - (yk+1 – yk) + 1

If Pk < 0, Pk+1 = Pk + 2xk+1+1

If Pk >= 0, Pk+1 = Pk + 2xk+1+1 – 2yk+1

Pk+1 = Pk + 2(xk+1) + (y2k+1 – y2

k) - (yk+1 – yk) + 1

Page 9: Computer graphics

9

Midpoint Circle Drawing Algorithm

For the initial point, (x0 , y0 ) = (0, r)

p0 = fcircle (1, r-½ )

= 1 + (r-½ )2 – r2

= 5 – r 4

≈ 1 – r

Page 10: Computer graphics

Taking input radius ‘r’ and circle center (xc , yc), we obtain the first point on the circumference of a circle centered on the origin as:

(x0 , y0) = (0,r) Next we will calculate the initial value of the decision

parameter as p0 = 5/4-r

At each x position, starting at k=0 , perform the following test: if p<0 the next point along the circle centered on (0,0) is (xk+1, yk) and

pk+1= pk+ 2 xk+1 +1

10

Algorithm:

Page 11: Computer graphics

1/2 -

11

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

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

where, 2 xk+1 =2 xk+2 and 2 yk+1 = 2 yk -2.

After this we will determine the symmetric points in the other 7 octants.

At Move each calculated pixel position (x,y) on to the circle path centered on (xc , yc) and plot the coordinate values:

x=x+xc y=y+yc

Repeat step 3 through 5 until x>=y

Page 12: Computer graphics

12

Midpoint Circle Drawing Algorithm

Example:

Given a circle radius = 10, determine the circle octant in the first quadrant from x=0 to x=y.

Solution:

p0 = 5 – r 4

= 5 – 10 4= -8.75

≈ –9

Page 13: Computer graphics

13

Midpoint Circle Drawing Algorithm

Initial (x0, y0) = (0,10)Decision parameters are: 2x0 = 0, 2y0 = 20

k Pk x y 2xk+1 2yk+1

0 -9 1 10 2 20

1 -9+2+1=-6 2 10 4 20

2 -6+4+1=-1 3 10 6 20

3 -1+6+1=6 4 9 8 18

4 6+8+1-18=-3 5 9 10 18

5 -3+10+1=8 6 8 12 16

6 8+12+1-16=5 7 7 14 14

Page 14: Computer graphics

Filling Algorithms

Page 15: Computer graphics

15

Fill Area Algorithms Fill-Area algorithms are used to fill the

interior of a polygonal shape.

Many algorithms perform fill operations by first identifying the interior points, given the polygon boundary.

Page 16: Computer graphics

16

The basic filling algorithm is commonly used in interactive graphics packages, where the user specifies an interior point of the region to be filled.

Basic Filling Algorithm

4-connected pixels

Page 17: Computer graphics

17

[1] Set the user specified point.[2] Store the four neighboring pixels in a stack.[3] Remove a pixel from the stack.[4] If the pixel is not set,

Set the pixelPush its four neighboring pixels into the stack

[5] Go to step 3[6] Repeat till the stack is empty.

Basic Filling Algorithm

Page 18: Computer graphics

18

void fill(int x, int y) { if(getPixel(x,y)==0){

setPixel(x,y);fill(x+1,y);fill(x-1,y);fill(x,y+1);fill(x,y-1);

}}

Basic Filling Algorithm (Code)

Page 19: Computer graphics

19

Boundary Fill Algorithm◦ For filling a region with a single boundary color.◦ Condition for setting pixels:

Color is not the same as border color Color is not the same as fill color

Flood Fill Algorithm◦ For filling a region with multiple boundary colors.◦ Here we don’t have to deal with boundary color◦ Condition for setting pixels:

Coloring of the pixels of the polygon is done with the fill color until we keep getting the old interior color.

Types of Basic Filling Algorithms

Page 20: Computer graphics

20

void boundaryFill(int x, int y, int fillColor, int borderColor) { getPixel(x, y, color); if ((color != borderColor)

&& (color != fillColor)) {setPixel(x,y);boundaryFill(x+1,y,fillColor,borderColor);boundaryFill(x-1,y,fillColor,borderColor);boundaryFill(x,y+1,fillColor,borderColor);boundaryFill(x,y-1,fillColor,borderColor);

}}

Boundary Fill Algorithm (Code)

Page 21: Computer graphics

Boundary-Fill Algorithm (cont.)

1. The 4-connected method.

2. The 8-connected method.

Page 22: Computer graphics

Boundary-Fill Algorithm (cont.)

Page 23: Computer graphics

CS 380

Pixel Span Method

Page 24: Computer graphics

Pixel Span Method (cont.)

Page 25: Computer graphics

Polygon

Page 26: Computer graphics

Definition Polygon is a closed figure with many vertices and edges (line

segments), and at each vertex exactly two edges meet and no edge crosses the other.

Types of Polygon: Regular polygons

No. of egdes equal to no. of angles. Convex polygons

Line generated by taking two points in the polygon must lie within the polygon.

Concave polygons Line generated by taking two points in the polygon may lie

outside the polygon.

Page 27: Computer graphics

This test is required to identify whether a point is inside or outside the polygon. This test is mostly used for identify the points in hollow polgons.

Two types of methods are there for this test:I. Even-Odd Method,II. Winding Number Method.

1/2 -

27

Polygon Inside/Outside Test

Page 28: Computer graphics

Even-Odd method:

1. Draw a line from any position P to a distant point outside the coordinate extents of the object and counting the number of edge crossings along the scan line.

2. If the number of polygon edges crossed by this line is odd then

P is an interior point.Else

P is an exterior point

Page 29: Computer graphics

29

In some situations the logic described above doesn’t hold, when a scan line passes through a vertex having two intersecting edges then if both the edges lies on the same side of the scan line the intersection is considered to be even.Otherwise the intersection is considered to be odd i.e. if the two edges are on the opposite side of the scan line.

Page 30: Computer graphics

Nonzero Winding Number Rule :

Another method of finding whether a point is inside or outside of the polygon. In this every point has a winding number, and the interior points of a two-dimensional object are defined to be those that have a nonzero value for the winding number.

1. Initializing the winding number to 0.2. Imagine a line drawn from any position P to a distant point

beyond the coordinate extents of the object.3. Count the number of edges that cross the line in each

direction. We add 1 to the winding number every time we intersect a polygon edge that crosses the line from right to left, and we subtract 1 every time we intersect an edge that crosses from left to right.

Page 31: Computer graphics

4. If the winding number is nonzero, then P is defined to be an interior point Else P is taken to be an exterior point.

Page 32: Computer graphics

Scan Line Polygon Fill Algorithm

Interior pixels along a scan line passing through a polygon area• For each scan line crossing a polygon ,the area filling algorithm locates the

intersection points of the scan line with the polygon edges.

• These intersection points are then sorted from left to right , and the corresponding frame buffer positions between each intersection pair are set to specified fill color

10 14 18 24

Page 33: Computer graphics

Scan Line Polygon Fill Algorithm

Adjusting endpoint values for a polygon, as we process edges in order around the polygon perimeter. The edge currently being processed is indicated as a solid like. In (a), the y coordinate of the upper endpoint of the current edge id decreased by 1. In (b), the y coordinate of the upper end point of the next edge is decreased by 1

(a) (b)

Page 34: Computer graphics

1/2 -

34

Thank You