# Polygon Scan Conversion - PowerPoint PPT Presentation

PPT – Polygon Scan Conversion PowerPoint presentation | free to download - id: 48da63-ZWFhY The Adobe Flash plugin is needed to view this content

Get the plugin now

View by Category
Title:

## Polygon Scan Conversion

Description:

### Polygon Scan Conversion Instructor: Paul Merrell Edge Tables We will use two different edge tables: Active Edge Table (AET) Stores all edges that intersect the ... – PowerPoint PPT presentation

Number of Views:26
Avg rating:3.0/5.0
Slides: 86
Provided by: pm5
Category:
Tags:
Transcript and Presenter's Notes

Title: Polygon Scan Conversion

1
Polygon Scan Conversion
• Instructor Paul Merrell

2
Rasterization
• Rasterization takes shapes like triangles and
determines which pixels to fill.

3
Filling Polygons
• First approach
• 1. Polygon Scan-Conversion
• Rasterize a polygon scan line by scan line,
determining which pixels to fill on each line.

4
Filling Polygons
• Second Approach
• Polygon Fill
• Select a pixel inside the polygon. Grow outward
until the whole polygon is filled.

5
Why Polygons?
• You can approximate practically any surface if
you have enough polygons.
• Graphics hardware is optimized for polygons (and
especially triangles)

6
Coherence
Scan-line
Edge
Span
7
Polygon Scan Conversion
Intersection Points
Other points in the span
8
Polygon Scan Conversion
• Process each scan line
• Find the intersections of the scan line with all
polygon edges.
• Sort the intersections by x coordinate.
• Fill in pixels between pairs of intersections
using an odd-parity rule.
• Set parity even initially.
• Each intersection flips the
• parity.
• Draw when parity is odd.

9
Polygon Scan-Conversion
• Process for scan converting polygons
• Process one polygon at a time.
• Store information about every polygon edge.
• Compute spans for each scan line.
• Draw the pixels between the spans.
• This can be optimized using an table that stores
• Perform scan conversion one scan line at a time.

10
Computing Intersections
• For each scan line, we need to know if it
intersects the polygon edges.
• It is expensive to compute a complete line-line
intersection computation for each scan line.
• After computing the intersection between a scan
line and an edge, we can use that information in
the next scan line.

11
Scan Line Intersection
Polygon Edges
Intersection points needed
Previous scan line yi
Current scan line yi1
Intersection points from previous scan line
12
Scan Line Intersection
• Use edge coherence to incrementally update the x
intersections.
• We know
• Each new scan line is 1 greater in y
• We need to compute x for a given scan line,

(x_at_ymax,ymax)
(x_at_ymin,ymin)
13
Scan Line Intersection
• So,
• and
• then
• This is a more efficient way to compute xi1.

14
Edge Tables
• We will use two different edge tables
• Active Edge Table (AET)
• Stores all edges that intersect the current scan
line.
• Global Edge Table (GET)
• Stores all polygon edges.
• Used to update the AET.

15
Active Edge Table
• Table contains one entry per edge intersected by
the current scan line.
• At each new scan line
• Compute new intersections for all edges using the
formula.
• Add any new edges intersected.
• Remove any edges no longer intersected.
• To efficiently update the AET, we will can use a
global edge table (GET)

16
Global Edge Table Example
Place entries into the GET based on the ymin
values.
GET
8
(ymax, x_at_ymin, 1/m)
7
8, 6, -3/2
6
CD
Indexed by scan line
6, 3, 3
5
BC
8, 0, ¾
4
DE
3
AB (2, 1), (3, 5) BC (3, 5), (6, 6) CD (6,
6), (3, 8) DE (3, 8), (0, 4) EA (0, 4), (2, 1)
2
AB
EA
5, 2, ¼
4, 2, -2/3
1
0
17
Active Edge Table Example
• The active edge table stores information about
the edges that intersect the current scan line.
• Entries are
• The ymax value of the edge
• The x value where the edge intersects the current
scan line.
• The x increment value (1/m)
• Entries are sorted by x values.

18
Active Edge Table Example
1. The ymax value for that edge
2. The x value where the scan line intersects the
edge.
3. The x increment value (1/m)

(ymax, x, 1/m)
AET
Scan Line 3
4, 2/3, -2/3
5, 5/2, 1/4
AB
EA
AB (2, 1), (3, 5) BC (3, 5), (6, 6) CD (6,
6), (3, 8) DE (3, 8), (0, 4) EA (0, 4), (2, 1)
19
Active Edge Table Example
1. The ymax value for that edge
2. The x value where the scan line intersects the
edge.
3. The x increment value (1/m)

(ymax, x, 1/m)
AET
Scan Line 4
4, 2/3, -2/3
5, 5/2, 1/4
8, 0, 3/4
5, 11/4, 1/4
AB
EA
DE
Scan Line 4
In the GET, edge DE is stored in bucket 4, so it
ymax 4 for EA, so it gets removed from the AET.
New x value for AB is 5/2 1/4 11/4
AB (2, 1), (3, 5) BC (3, 5), (6, 6) CD (6,
6), (3, 8) DE (3, 8), (0, 4) EA (0, 4), (2, 1)
20
Active Edge Table Example
1. The ymax value for that edge
2. The x value where the scan line intersects the
edge.
3. The x increment value (1/m)

Scan Line 5
(ymax, x, 1/m)
AET
8, 0, 3/4
5, 11/4, 1/4
8, 3/4, 3/4
6, 3, 3
AB
DE
BC
Increment x 0 3/4
Remove AB, since ymax 5.
Add BC since it is in the GET at ymin 5.
AB (2, 1), (3, 5) BC (3, 5), (6, 6) CD (6,
6), (3, 8) DE (3, 8), (0, 4) EA (0, 4), (2, 1)
21
Active Edge Table Example
D
8
7
C
Scan Line 6
6
5
B
E
4
3
2
1
A
0
0
1
2
3
4
5
6
7
8
AB (2, 1), (3, 5) BC (3, 5), (6, 6) CD (6,
6), (3, 8) DE (3, 8), (0, 4) EA (0, 4), (2, 1)
22
Clipping
23
Line Clipping
• What happens when one or both endpoints of a
line segment are not inside the specified drawing
area?

Drawing Area
24
Line Clipping
• Strategies for clipping
• Check (in inner loop) if each point is inside ?
Works, but slow
• Find intersection of line with boundary ?
Correct

if (x xmin and x xmax and y ymin and y
ymax) drawPoint(x,y,c)
Clip line to intersection
25
Line Clipping Possible Configurations
• Both endpoints are inside the region (line AB)
• No clipping necessary
• One endpoint in, one
• out (line CD)
• Clip at intersection point
• Both endpoints outside
• the region
• No intersection (lines EF, GH)
• Line intersects the region (line IJ)
• Clip line at both intersection points

J
D
I
A
F
C
H
B
E
G
26
Line Clipping Cohen-Sutherland
• Basic algorithm
• Accept lines that have both endpoints inside the
region.
• Reject lines that have both endpoints less than
xmin or ymin or greater than xmax or ymax.
• Clip the remaining lines at a region boundary and
repeat the previous steps on the clipped line
segments.

27
Cohen-Sutherland Accept/Reject Tests
• Assign a 4-bit code to each
• endpoint c0, c1 based on its
• position
• 1st bit (1000) if y gt ymax
• 2nd bit (0100) if y lt ymin
• 3rd bit (0010) if x gt xmax
• 4th bit (0001) if x lt xmin
• Test using bitwise functions
• if c0 c1 0000
• accept (draw)
• else if c0 c1 ? 0000
• reject (dont draw)
• else clip and retest

1000
1001
1010
0001
0010
0000
0100
0101
0110
28
Cohen-Sutherland Accept/Reject
• Accept/reject/redo all based on bit-wise Boolean
ops.

1000
1001
1010
0001
0010
0000
0100
0101
0110
29
Polygon Clipping

30
Polygon Clipping Example
v6
v7
Clip first to ymin and ymax
v0
v8
vertex v0
ymax
Inside region No
v9
v5
v1
v2
ymin
v3
v4
Input vertex list (v0, v1, v2, v3, v4, v5, v6,
v7, v8, v9)
Output vertex list
p0
31
Polygon Clipping Example
v6
v7
Clip first to ymin and ymax
v0
v8
vertex v1
ymax
inside region yes
v9
v5
v1
v2
ymin
v3
v4
Input vertex list (v0, v1, v2, v3, v4, v5, v6,
v7, v8, v9)
Output vertex list
, v1
p0
32
Polygon Clipping Example
v6
v7
Clip first to ymin and ymax
v0
v8
vertex v2
ymax
inside region yes
v9
v5
v1
v2
add v2, p1 to output list
ymin
v3
v4
Input vertex list (v0, v1, v2, v3, v4, v5, v6,
v7, v8, v9)
Output vertex list
, v2, p1
p0 , v1
33
Polygon Clipping Example
v6
v7
Clip first to ymin and ymax
v0
v8
vertex v3
ymax
inside region no
v9
v5
v1
v2
ymin
v3
v4
Input vertex list (v0, v1, v2, v3, v4, v5, v6,
v7, v8, v9)
Output vertex list
p0, v1, v2, p1
34
Polygon Clipping Example
v6
v7
Clip first to ymin and ymax
v0
v8
vertex v4
ymax
inside region no
v9
v5
v1
v2
ymin
v3
v4
Input vertex list (v0, v1, v2, v3, v4, v5, v6,
v7, v8, v9)
Output vertex list
p0, v1, v2, p1
, p2
35
Polygon Clipping Example
v6
v7
Clip first to ymin and ymax
v0
v8
vertex v5
ymax
inside region yes
v9
v5
v1
v2
add v5, p3 to output list
ymin
v3
v4
Input vertex list (v0, v1, v2, v3, v4, v5, v6,
v7, v8, v9)
Output vertex list
p0, v1, v2, p1, p2
, v5, p3
36
Polygon Clipping Example
v6
v7
Clip first to ymin and ymax
v0
v8
vertex v6
ymax
inside region no
v9
v5
v1
v2
ymin
v3
v4
Input vertex list (v0, v1, v2, v3, v4, v5, v6,
v7, v8, v9)
Output vertex list
p0, v1, v2, p1, p2, v5, p3
37
Polygon Clipping Example
v6
v7
Clip first to ymin and ymax
v0
v8
vertex v7
ymax
inside region no
v9
v5
v1
v2
ymin
v3
v4
Input vertex list (v0, v1, v2, v3, v4, v5, v6,
v7, v8, v9)
Output vertex list
p0, v1, v2, p1, p2, v5, p3
38
Polygon Clipping Example
v6
v7
Clip first to ymin and ymax
v0
v8
vertex v8
ymax
inside region no
v9
v5
v1
v2
ymin
v3
v4
Input vertex list (v0, v1, v2, v3, v4, v5, v6,
v7, v8, v9)
Output vertex list
p0, v1, v2, p1, p2, v5, p3
, p4
39
Polygon Clipping Example
v6
v7
Clip first to ymin and ymax
v0
v8
vertex v9
ymax
inside region yes
v9
v5
v1
v2
add v9, p5 to output list
ymin
v3
v4
Input vertex list (v0, v1, v2, v3, v4, v5, v6,
v7, v8, v9)
Output vertex list
p0, v1, v2, p1, p2, v5, p3, p4
, v9, p5
40
Polygon Clipping Example
This gives us a new polygon
ymax
v9
v5
v1
v2
ymin
with vertices
(p0, v1, v2, p1, p2, v5, p3, p4, v9, p5)
41
Polygon Clipping Example (cont.)
Now clip to xmin and xmax
xmin
xmax
p9
v9
p6
v5
p7
v1
v2
p8
Input vertex list (p0, v1, v2, p1, p2, v5,
p3, p4, v9, p5) Output vertex list (p0, p6, p7,
v2, p1, p8, p9, p3, p4, v9, p5)
42
Polygon Clipping Example (cont.)
Now post-process
xmin
xmax
p3
p4
p5
p0
p9
v9
p6
p7
v2
p1
v3
p8
Output vertex list (p0, p6, p7, v2,
p1, p8, p9, p3, p4, v9, p5) Post-process (p0,
p6, p9, p3,) and (p7, v2, p1, p8) and (v4, v9, p5)
43
Transformations
44
General Transformations
• Want to be able to manipulate graphical objects
• Translation move an object
• Rotation change orientation
• Scale change size
• Other transformations reflection, shear, etc.
• A general 2-D transformation has the form
• x fx(x, y)
• y fy(x, y)
• where x and y are the original coordinates and
x and y are the transformed coordinates.
• In vector form

45
General Transformations (cont.)
• General transforms may be non-linear
• Lines do not necessarily map to lines
• Every point (along lines, inside shapes, etc.)
needs to be transformed
• Non-linear Transformations are harder to deal
with.
• Fortunately, many important transformations are
linear.
• Non-Linear Example

46
Linear Transformations
• We will use linear transformations
• x fx(x, y) axx bxy cx
• y fy(x, y) ayx byy cy
• Linear Transforms can be written using matrix
operations
• Lines transform to lines
• Only need to transform vertices.
• Computationally efficient
• Problem would like to simplify further ? get rid
of T

47
Translation
• Move object from one place to another
• Forward transform
• x x tx
• y y ty
• or p p T where
• Inverse transform p p T

48
Scale
• Change an objects size
• Forward transform
• x sx x
• y sy y
• or p Sp where
• Inverse transform p S-1p
• where

Why do we get an apparent translation?
49
Scale
• Properties of the scale
• The scale is performed relative to the origin.
• A scale factor greater than one enlarges the
objects and moves it away from the origin.
• A scale factor less than one shrinks the object
and moves it towards the origin.
• Usually this isnt what we want
• Generally we would like to scale about the
objects center - not the coordinate origin.

50
Scale Transforms
• Scale can accomplish the following transforms
• Uniform scale sx sy
• Preserves angles, but not lengths
• Non-uniform scale sx ? sy
• Doesnt preserve angles or
• lengths
• x-axis sx 1, sy 1
• y-axis sx 1, sy 1
• line y x sx 1, sy 1
• Reflection preserves angles
• and lengths
• What is the inverse matrix?
• A reflection matrix is its own
• inverse.

y x
51
Rotation
• Given a point p on the plane, how do we rotate

1. Convert point p to polar coordinates
52
Rotation (cont)
• Now, lets rotate that point by q about the
origin

2. To rotate q degrees, simply add q to f
3. Apply the sum of angles formula
4. Substitute x and y back in
53
Rotation (cont)
• So, given a point p that we wish to rotate about
the origin, we simply multiply p by the rotation
matrix

54
Rotating an Object
• Apply the rotation to each vertex of the object
• Forward transform
• x x cos(q) y sin(q)
• y x sin(q) y cos(q)
• or p Rp where
• Inverse rotation p R-1p

q 45
q
55
Rotations
• Right-hand rule Stick your thumb towards the
z-axis. Your fingers rotate in the positive
direction as they curl.
• If q is positive, the rotation is

r
• If q is negative, the rotation is clockwise about
the origin.

y
p (x, y)
r
x
56
Composition
• How can we do more complex transformations?
• Scale an object in an arbitrary direction (other
than in x and/or y)
• Rotate an object about a point (other than the
origin)
• Etc.
• Composition combine basic transforms to achieve
a more complex one
• Example Scale by ½ at a 30 angle
• Rotate clockwise 30 (q p / 6) p RTp
• Scale in x by ½ p Sp
• Rotate counter-clockwise 30 (q p / 6) p
Rp
• Final result p Rp RSp RSRTp

Recall that a negative rotation matrix is the
transpose of its corresponding positive rotation
matrix.
57
Composition Scale at Arbitrary Angle
• Scale object at an arbitrary angle q
• Rotate clockwise by q p RTp
• Scale about origin p SRTp
• Rotate back (counter-clockwise
• by q) p RSRTp

q 30
5
4
q 30
3
2
1
0
0
1
2
3
4
58
Composition and Efficiency
• Multiple transformations Multiply each point
(i.e., vertex) in an object by each basic
transformation
• p RSRTp
• Requires multiple matrix multiplies per vertex
• Lots of extra computation if transforming
thousands (or millions) of points.
• Composition matrix multiply is associative
• Multiply matrices first to create a single matrix
• Multiply each point by a single matrix
• p RSRTp M p
• Much more efficient

59
• Our rotations (so far) have been about the origin
• This rotation moves the entire object as it
rotates
• Usually when we want to rotate an object, we want
to rotate it about its center (or some other
fixed point)
• How can we do this?
• Answer Apply a sequence of transformations

60
• Rotate object about an arbitrary point T
• Translate T to origin p p T
• Rotate about origin p R(p T)
• Translate back p R(p T) T

q 45
61
• Standard format for rotating about an arbitrary
point
• Translate point of rotation to the origin
• Translate the point back to its original position
• Compute the composite transformation that will
accomplish this, then apply that transformation
to all vertices in the object.

62
Homogeneous Coordinates
• Problem
• Rotation, scale, and shear multiply a matrix with
p p Mp
• Translation adds a vector to p p p T
• Would like to treat all transformations the same
• Optimize the hardware
• Compose transformations
• Solution homogeneous coordinates
• Increase points dimensionality ? add a third
coordinate w
• Two homogeneous points (p1 and p2) specify
• the same 2-D Cartesian point if
• p1 cp2 for some real-valued scalar number c

63
Homogeneous Coordinates (cont.)
• With homogeneous coordinates, the x-y plane is a
two-dimensional sub-space in 3-D
• Although homogeneous points have three
coordinates, they correlate to positions on a 2-D
plane
• Can use any 2-D plane that doesnt
• include the origin
• For simplicity, choose the plane
• w 1 ? x y 1T X Y 1T

2-D Cartesian coordinates
Homogeneous point
y
x
64
Homogeneous Coordinates
• For 2D transformations, the points are now
3-vectors
• And the transformation matrices are 3x3 matrices

65
Homogeneous Coordinates Translation
• What does the translation matrix look like?
• To translate a point p to point p, we need
• with
• and

66
Homogeneous Coordinates Scale
• What does the scale matrix look like?
• To scale a point p to point p, we need
• with
• and

67
Homogeneous Coordinates Rotation
• Rotation has a similar derivation. Remember the
2D rotation matrix
• When we move to homogeneous coordinates, we have
• We apply this matrix to each vertex of a polygon
to rotate the polygon as a whole

68
• Now lets try that rotation about an arbitrary
point T
• Translate to origin p T1p
• Rotate about origin p RT1p
• Translate back p T2RT1p

q 45
69
• So
• Where M is the composite transformation matrix

70
3D Transformations
General Case
Translation
Scale
71
3D Rotation

These rotations can be combined to rotate about
an arbitrary axis.
72
Viewing
73
Graphics Pipeline
Model Space
Model Transformations
World Space
Viewing Transformation
Eye/Camera Space
Projection Window Transformation
Screen Space
74
Viewing Transformations
• Projection take a point from m dimensions to n
dimensions where n lt m
• There are essentially two types of viewing
transforms
• Orthographic parallel projection
• Points project directly onto the view plane
• In eye/camera space (after viewing
• transformation) drop z
• Perspective convergent projection
• Points project through the origin
• onto the view plane
• In eye/camera space (after viewing
• transformation) divide by z

75
Projection Environment
• We will use a right-handed view system

y
• The eye or camera position is on the z axis, a
distance d from the origin.

x
• The view direction is parallel to the z axis

z
• The view plane is in the xy plane and passes
through the origin

76
Parallel Projection
• Looking down the y axis

(x, y, z)
(x, y, z)
x
z
• So z 0, x x

77
Parallel Projection
• Thus, for parallel, orthographic projections,
• x x, y y, z 0
• So, to perform a parallel projection on an
object, we can use matrix multiplication

What is M?
i.e., we simply drop the z coordinate
78
Perspective Projection
• Points project through the focal point (e.g.,
eyepoint) onto the view plane
• Projection lines converge

y
Virtual Image Plane
x
z
79
Perspective Projection Computation
Looking down the y axis
By similar triangles
x
p (x, y, z)
x
x
view plane
p (x, y, z)
d-z
d
eye
z
80
Perspective Projection Computation
Looking down the x axis
By similar triangles
y
p (x, y, z)
p (x, y, z)
y
y
z
view plane
eye
d
d-z
81
Perspective Projection Computation
• So, we have
• what is z?
• can we put this into matrix form?

82
Perspective Projection Computation
• So, the matrix that will give us the correct
perspective is

This works - what is the problem with it?
Answer The entries in the matrix are point
dependent! i.e., every point will have to have a
different matrix
83
Perspective Projection Computation
• Solution use homogeneous points (remember them?)
• Our Cartesian point is
• A homogeneous point that is equivalent to our
desired Cartesian point is
• can we come up with a matrix that gives us what
we need, but is point independent?

84
Perspective Projection Computation
• We want

so,
85
Perspective Projection Computation
• So, the new matrix we get is

This gives us correct results, and is point
independent