1 / 70

CGMB214: Introduction to Computer Graphics

CGMB214: Introduction to Computer Graphics. Topic 4 part III Fill area primitives Polygon fill areas. What we are going to learn. To be able to understand the concept of fill attributes To be able to understand the concept of polygon. Fill Area Primitives.  Filled-Area Primitives.

kiara
Télécharger la présentation

CGMB214: Introduction to Computer Graphics

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CGMB214: Introduction to Computer Graphics Topic 4 part III Fill area primitives Polygon fill areas

  2. What we are going to learn To be able to understand the concept of fill attributes To be able to understand the concept of polygon

  3. Fill Area Primitives

  4.  Filled-Area Primitives • Two ways of area filling on raster system • By determining the overlaps intervals for scan lines that cross the area. • By starting from interior position outward until specified boundary condition is encountered.

  5. Filling 2D Shapes Types of filling Pattern Fill Solid Fill Texture Fill

  6. Filling 2D Shapes • Some requirements • A digital representation of the shape • The shape must be closed • It must have a well defines inside and outside • A test for determining if a point is inside or outside of the shape • A rule or procedure for determining the colors of points inside the shape

  7. Representing Filled Shapes • Digital images • Inside determined by a color or range of colors Original Image Pink pixels have been filled with yellow

  8. Representing Filled Shapes A digital outline and a seed point indicating the interior Digital outline and seed points Filled outlines

  9. Representing Filled Shapes An implicit function representing a shape’s interior The inside of a circle of radius R The inside of a unit square

  10. Representing Filled Shapes • An equation or list of edges representing a shape’s boundary and a rule for determining its interior • E.g. • Edge list • Line from (0,0) to (1,0) • Line from (1,0) to (1,1) • Line from (1,1) to (0,1) • Line from (0,1) to (0,0) • Rule for interior points • All points to the right of all of the (ordered) edges

  11. Representing Filled Shapes • Edge list • Line from (0,0) to (1,0) • Line from (1,0) to (1,1) • Line from (1,1) to (0,1) • Line from (0,1) to (0,0) • Rule for interior points • All points to the right of all of the (ordered) edges

  12. Representing Filled Shapes • Edge list • Line from (0,0) to (1,0) • Line from (1,0) to (1,1) • Line from (1,1) to (0,1) • Line from (0,1) to (0,0) • Rule for interior points • All points to the right of all of the (ordered) edges Filled shape

  13. Fill Options How to set pixel colors for points inside the shape? Solid Fill Texture Fill Pattern Fill

  14. Seed Fill • Approach • Select a seed point inside a region • Move outwards from the seed point, setting neighboring pixels until the region is filled Seed point Move outwards to neighbors Stop when the region is filled

  15. Selecting the Seed Point • Difficult to place the seed point automatically • Seed fill works best in an interactive application where the user sets the seed point What is the inside of this shape? It depends on the user’s intent

  16. Seed Fill Basic algorithm select seed pixelinitialize a fill list to contain seed pixelwhile (fill list not empty) { pixel  get next pixel from fill list setPixel(pixel) for (each of the pixel’s neighbors) { if (neighbor is inside region AND neighbor not set) add neighbor to fill list } }

  17. Which neighbors should be tested? • There are two types of 2D regions • 4-connected region (test 4 neighbors) • Two pixels are 4-connected if they are vertical or horizontal neighbors • 8-connected region (test 8 neighbors) • Two pixels are 8-connected if they are vertical, horizontal, or diagonal neighbors

  18. Using 4-connected and 8-connected neighbors gives different results Which neighbors should be tested? Magnified area Fill using 4-connected neighbors Original boundary Fill using 8-connected neighbors

  19. When is a Neighbor Inside the Region? • There are two types of tests, resulting in two filling approaches • Boundary fill • Flood fill

  20. Boundary Fill • Fill condition • The region is defined by a set of boundary pixels • A neighbor of an inside pixel is also inside if it is not a boundary pixel Seed pixel Boundary pixel Image after 4-connected boundary fill Original image and seed point

  21. Flood Fill • Fill condition • The region is defined by a patch of like-colored pixels • A neighbor of an inside pixel is also inside if its color is within a range of the seed pixel’s original color • The range of inside colors can be specified in the application Seed pixel Original image and seed point Image after 4-connected flood fill

  22. Improving Performance • Problems with the basic algorithm • We don’t know how big the fill list should be • Worst case, all the image pixels • Slow • Pixels may be checked many times to see if they have already been set (especially for 8-connected regions)

  23. Improving Performance • Use coherence (logical connection) to improve performance and reduce memory requirements • Neighbor coherence • Neighboring pixels tend to be in the same region • Span coherence • Neighboring pixels along a given scan line tend to be in the same region • Scan-line coherence • The filling patterns of adjacent scan lines tends to be similar

  24. Improving Performance Span-based seed fill algorithm Seed point

  25. Improving Performance • Span-based seed fill algorithm • Start from the seed point • Fill the entire horizontal span of pixels inside the region Seed point

  26. Improving Performance • Span-based seed fill algorithm • Determine spans of pixels in the rows above and below the current row that are connected to the current span • Add the left-most pixel of these spans to the fill list

  27. Improving Performance • Span-based seed fill algorithm • Repeat until the fill list is empty

  28. Improving Performance • Span-based seed fill algorithm • Repeat until the fill list is empty

  29. Improving Performance • Span-based seed fill algorithm • Repeat until the fill list is empty

  30. Improving Performance • Span-based seed fill algorithm • Repeat until the fill list is empty

  31. Filling Axis-Aligned Rectangles • An axis-aligned rectangle is defined by its corner points (Xmin, Ymin) and (Xmax, Ymax) (Xmax, Ymax) (Xmin, Ymin)

  32. Filling Axis-Aligned Rectangles Filling can be done in a nested loop for (j = Ymin, j < Ymax, j++) { for (i = Xmin, i < Xmax, i++) {setPixel(i, j, fillColor) } } (Xmax, Ymax) (Xmin, Ymin)

  33. Polygon Fill Areas

  34. What is polygon? • A plane figure specified by a set of three or more coordinate positions (called vertices), that are connected in sequence by straight line segments (called edges or sides of the polygon). • Polygon must have • All vertices within a single plane • No edge crossing

  35. Polygon Classification An interior angle of a polygon is an angle inside the polygon boundary formed by two adjacent edges If all interior angles of a polygon are less than or equal to 180 degree, the polygon is said to be convex If there is at least one interior angle greater than 180 degree, the polygon is said to be concave The order of vertices for a polygon can be either clockwise or anti-clockwise

  36. Polygon Classification • Polygon • Concave • Convex

  37. Identifying Concave Polygon Setup vectors for all edges Perform cross product to adjacent vectors to test for concavity Perform dot product if we want to determine the angle between two edges All vector products will be the same value (positive or negative) for convex polygon If there are some cross products yield a positive and some yield a negative value, we have a concave polygon

  38. Identifying Concave Polygon Vn Ej V6 E5 V5 Vm Ej = (Vnx – Vmx , Vny – Vmy) E4 V4 (E1 X E2) > 0 (E2 X E3) > 0 (E3 X E4) < 0 (E4 X E5) > 0 (E5 X E6) > 0 (E6 X E1) > 0 E3 E6 V3 E2 V2 E1 V1 EJ X EK = EJXEKY - EJYEKX

  39. Identifying Concave Polygon • Example: • Given 6 vertices: • V1 = (1,1) • V2 = (5,1) • V3 = (7,3) • V4 = (4,5) • V5 = (4,10) • V6 = (1,10) • Prove that these vertices is for concave polygon. What can you say about the cross product values if we change the order of these vertices (v6 becomes v1, v5 becomes v2, etc…).

  40. Exact angle between two adjacent edges Use dot product operation a.b = |a||b|cosθ |a| means the magnitude of vector a |a| = θ Angle between Edges

  41. Angle Between Edges • Example: • Given 2 vectors a = (2,3) and b = (6,3). Determine the angle between these two vectors • Determine the angle between E3 and E4

  42. Filling General Polygons • Representing general polygons • Defined by a list of connected line segments • The line segments must form a closed shape (i.e. the boundary must connected) • General polygons • Can be self intersecting • Can have interior holes

  43. Filling General Polygons • Specifying the interior • Must be able to determine which points are inside the polygon • Need a fill rule

  44. Filling General Polygons • Inside-Outside Tests • Filling means coloring a region • How to identify interior or exterior region? • Once determined only then interior to be filled accordingly

  45. Filling General Polygons • Specifying the interior • There are two commonly used fill rules • Even-odd parity rule • Non-zero winding rule Filled using even-odd parity rule Filled using none-zero winding rule

  46. Inside-Outside Tests: Even-Odd Rule • Even-Odd Rule • Also known as odd-parity and odd-even rule. • How its work? • Pick a point of P in the region of interest • Draw a line from P to a distant point which lower than the smallest x • Move from P along the line to the distant point • Count the number of region edges the line crosses • If the number of crossed is odd then P is inside the interior region • If the number of crossed is even then P is inside the exterior region

  47. Inside-Outside Tests: Even-Odd Rule • To determine if a point P is inside or outside • Draw a line from P to infinity • Count the number of times the line crosses an edge • If the number of crossing is odd, the point is inside • If the number of crossing is even, the point is outside

  48. Inside-Outside Tests: Non-Zero Winding Rule • Non-Zero Winding Number Rule • Each boundary is given a direction number and then sum the numbers. • Rules • The line chosen must not pass through any vertices. • If first y values less than second y value • Then give direction number –1 • If first y values greater than second y value • Then give direction number 1. • Move from P along the line to the distant point. • Add or minus based on the direction number when crossing the edges. • Interior regions have non-zero winding numbers. • Exterior regions have a winding number of 0.

  49. Inside-Outside Tests: Non-Zero Winding Rule • The outline of the shape must be directed • The line segments must have a consistent direction so that they formed a continuous, closed path

  50. Inside-Outside Tests: Non-Zero Winding Rule • To determine if a points is inside or outside • Determine the winding number (i.e. the number of times the edge winds around the point in either a clockwise or counterclockwise direction) • Points are outside if the winding number is zero • Point are inside if the winding number is not zero

More Related