Rasterizing Polygons

Preview:

DESCRIPTION

Rasterizing Polygons. Lecture 29 Wed, Dec 7, 2005. Rasterizing Polygons. Given a the vertices of a polygon, in viewport coordinates, which pixels should be shaded? How do we determine them efficiently?. Rasterizing Polygons. Rasterizing Polygons. - PowerPoint PPT Presentation

Citation preview

Rasterizing Polygons

Lecture 29Wed, Dec 7, 2005

Rasterizing Polygons

Given a the vertices of a polygon, in viewport coordinates, which pixels should be shaded?How do we determine them efficiently?

Rasterizing Polygons

Rasterizing Polygons

Obviously, any pixel lying entirely within the polygon should be shaded.What about the pixels that are partially within the polygon? Rule: Shade them if their center is

within the polygon.

What about the pixels whose center is exactly on the edge?

Edge Pixels

Neighboring Polygons

When two polygons share an edge, which one “owns” the pixels on the edge?Rule A polygon owns all pixels whose

centers are within its interior. A polygon owns all pixels whose

centers lie on one of its left edges.

Neighboring Polygons

Fill in all pixels whose centers are within the polygon.

Neighboring Polygons

Fill in all pixels whose centers are on a left edge of the polygon.

A Rasterization Algorithm

To rasterize a polygon, first determine its bounding box.

A Rasterization Algorithm

To rasterize a polygon, first determine its bounding rectangle.

A Rasterization Algorithm

Then scan each row of pixels in the bounding rectangle, left to right, bottom to top.

A Rasterization Algorithm

When an edge is encountered, If we were on the outside, we move

to the inside. If we were on the inside, we move to

the outside.

Thus, we stop or resume shading accordingly.

A Rasterization Algorithm

Then scan each row of pixels in the bounding rectangle, left to right, bottom to top.

row 0

A Rasterization Algorithm

Then scan each row of pixels in the bounding rectangle, left to right, bottom to top.

row 1

A Rasterization Algorithm

Then scan each row of pixels in the bounding rectangle, left to right, bottom to top.

row 2

A Rasterization Algorithm

Then scan each row of pixels in the bounding rectangle, left to right, bottom to top.

row 3

A Rasterization Algorithm

Then scan each row of pixels in the bounding rectangle, left to right, bottom to top.

row 4

A Rasterization Algorithm

Then scan each row of pixels in the bounding rectangle, left to right, bottom to top.

row 5

A Rasterization Algorithm

Then scan each row of pixels in the bounding rectangle, left to right, bottom to top.

row 6

A Rasterization Algorithm

Then scan each row of pixels in the bounding rectangle, left to right, bottom to top.

row 7

A Rasterization Algorithm

The following algorithm is designed to allow rapid shading of the pixels. As the vertices are given, create a list of

the vertices. (The order matters!) {(1, 0), (4, 3), (6, 1), (12, 1), (11, 8), (7, 8), (6,

5), (4, 8), (0, 7), (1, 0)}. From the list of vertices, form an edge

table. {{(1, 0), (4, 3)}, {(4, 3), (6, 1)}, …, {(0, 7), (1,

0)}}.

A Rasterization Algorithm

Organization of the edge table. Eliminate any horizontal edges. Sort the edges in the edge table by

the y-coordinate of the lower endpoint.

Begin scanning with the bottom scan line.

The Active Edge Table

Create the active edge table (AET). For each edge in the edge table

whose lower endpoint is on the scan line, Create an active-edge-table entry. Add it to the active edge table. Delete the edge from the edge table.

The Active Edge Table

Organization of an active-edge-table entry: y-coordinate of upper endpoint. Reciprocal of the slope. x-intercept with the horizontal line ½

unit above the current scan line.

The Active Edge Table

Activeedges

Scanline

The Active Edge Table

Scanline

(7, -1/7, 13/14)

(3, 1, 1-1/2)

The Active Edge Table

Sort the AET entries by their x-intercepts.The AET must contain an even number of entries. Why?

Shade pixels from the 1st to the 2nd x-intercepts, 3rd to 4th x-intercepts, etc., in the AET.

The Active Edge Table

Scanline

(no shading onthis scan line)

(7, -1/7, 13/14)

(3, 1, 1-1/2)

The Active Edge Table

Update the AET. Increment the scan line number. Delete from the AET any entries for which

the upper endpoint is on the scan line. Update the x-intercepts of all AET entries.

Add the reciprocal slope to the x-intercept. Create and add entries from the edge

table for edges whose lower endpoint is on the scan line.

A Rasterization Algorithm

Scanline

(7, -1/7, 13/14)

(3, 1, 1-1/2)

A Rasterization Algorithm

Scanline

(7, -1/7, 11/14)

(3, 1, 2-1/2)(3, -1, 5-1/2)

(8, -1/7, 11-13/14)

A Rasterization Algorithm

Scanline

(3, 1, 2-1/2)(3, -1, 5-1/2)

(7, -1/7, 11/14)

(8, -1/7, 11-13/14)

A Rasterization Algorithm

Scanline

(3, 1, 3-1/2)(3, -1, 4-1/2)

(8, -1/7, 11-11/14)

(7, -1/7, 9/14)

A Rasterization Algorithm

Scanline

(3, 1, 3-1/2)(3, -1, 4-1/2)

(7, -1/7, 9/14)

(8, -1/7, 11-11/14)

A Rasterization Algorithm

Scanline (8, -1/7, 11-9/14)

(7, -1/7, 1/2)

A Rasterization Algorithm

Scanline

(7, -1/7, 1/2)

(8, -1/7, 11-9/14)

A Rasterization Algorithm

Scanline (8, -1/7, 11-1/2)

(7, -1/7, 5/14)

A Rasterization Algorithm

Scanline

(7, -1/7, 5/14)

(8, -1/7, 11-1/2)

A Rasterization Algorithm

Scanline (8, -1/7, 11-5/14)

(7, -1/7, 3/14)

(8, -2/3, 5-5/6) (8, 1/3, 6-1/6)

A Rasterization Algorithm

Scanline

(7, -1/7, 3/14)

(8, -2/3, 5-2/3) (8, 1/3, 6-1/6)

(8, -1/7, 11-5/14)

A Rasterization Algorithm

Scanline (8, -1/7, 11-3/14)

(7, -1/7, 1/14)

(8, -2/3, 5) (8, 1/3, 6-1/2)

A Rasterization Algorithm

Scanline

(7, -1/7, 1/14)

(8, -2/3, 5) (8, 1/3, 6-1/2)

(8, -1/7, 11-3/14)

A Rasterization Algorithm

Scanline (8, -1/7, 11-3/14)

(8, -2/3, 5) (8, 1/3, 6-1/2)(8, 4, 2)

A Rasterization Algorithm

Scanline

(8, -2/3, 5) (8, 1/3, 6-1/2)(8, 4, 2)

(8, -1/7, 11-3/14)

A Rasterization Algorithm

Rasterizing Polygons

Read

Run

Rasterizing Polygons in OpenGL

Read

Run

Freehand Polygons

Read

Run

Recommended