Upload
ginger-parker
View
213
Download
0
Embed Size (px)
Citation preview
CS 450: COMPUTER GRAPHICS
REVIEW: OVERVIEW OF POLYGONS
SPRING 2015
DR. MICHAEL J. REALE
NOTE: COUNTERCLOCKWISE ORDER
• Assuming:
• Right-handed system
• Vertices in counterclockwise order (looking at front of polygon)
FILL AREAS
• Fill area (or filled area) = area to be filled with color or pattern (or both)
• Usually surface of object
• Usually polygons
WHY POLYGONS?
• Why?
• Boundaries = linear equations (efficient fill algorithms)
• Can approximate most curved surfaces with polygons
• Shading easier (especially with triangles single plane per triangle)
• Surface tessellation = approximating a curved surface with polygons
• More polygons better detail, but more vertices/polygons to process
• Also called fitting the surface with a polygon mesh
http://www.guru3d.com/articles-pages/radeon-hd-5870-review-test,7.html
POLYGON DEFINITIONS• Polygon = a figure with 3 or more vertices connected in sequence by straight-line segments (edges or
sides of the polygon)
• Most loose definition any closed-polyline boundary
• More finicky definitions contained in single plane, edges have no common points other than their endpoints, no three successive points collinear
• Standard polygon or simple polygon = closed-polyline with no crossing edges
DOES A POLYGON LIE IN A SINGLE PLANE?
• In computer graphics, polygon not always in same plane:
• Round-off error
• E.g., after transformations
• Fitting to surface makes non-planar polygons
• E.g., quad “bent” in half
• Thus, use triangles single plane per triangle
DEGENERATE POLYGONS
• Degenerate polygons = often used to describe polygon with:
• 3 or more collinear vertices generates a line segment
• E.g., in extreme case, triangle with no area
• Repeated vertex positions some edges have length 0
CONVEX VS. CONCAVE
• Interior angle = angle inside polygon boundary formed by two adjacent edges
• By interior angle:
• Convex = all interior angles less than 180°
• Concave = one or more interior angles greater than or equal to 180°
• By looking at vertices compared to edge lines:
• Convex = for all edge lines, all other vertices are on one side
• Concave = for one or more edge lines, some of the vertices are on one side and some are on the other
• Also, one or more edge lines will intersect another edge
CONVEX VS. CONCAVE: CORNY MEMORY HOOK
DEALING WITH DEGENERATES AND CONCAVE POLYGONS
• OpenGL cannot deal with degenerate polygons or concave polygons programmer must detect/preprocess them
• Degenerate polygons detect and remove
• Concave polygons detect and split into convex polygons
WHAT’S YOUR VECTOR, VICTOR?
• A vector = (N x 1) or (1 x N) matrix
• (# of rows X # of columns)
• In computer graphics:
• N usually 2, 3, or 4 (homogeneous coordinates)
• Use column vectors (N x 1)
• Components of the vector:
• 2D x and y values
• 3D x, y, and z values
• 4D x, y, z, and w values
• Vector interpreted as:
• Location (w = 1)
• Direction (w = 0)
• Scalar = single value (or 1x1 vector)
http://www.spudislunarresources.com/
blog/wp-content/uploads/2013/03/Airplane.jpg
w
z
y
x
v
z
y
x
vy
xv
LENGTH OF A VECTOR AND THE ZERO VECTOR• Use Euclidean distance for length:
• A vector with a length of zero is called the zero vector:
222 zyxv
0
0
0
0
0
0
0
0
0vvv
SCALING VECTORS
• Scalar times a vector = scalar times the components of the vector
• Example: multiply 5 by a 3D vector A
A
A
A
A
A
A
z
y
x
z
y
x
A
*5
*5
*5
*55
NORMALIZED VECTORS
• Normalize a vector = divide vector by its length v ║ ║ makes length equal to 1
• Equivalent to multiplying vector by 1/ v║ ║
• Resulting vector is called a normalized vector
• WARNING: This is NOT the same as a NORMAL vector!
• Although normal vectors are often normalized.
222
222
222
222
zyx
zzyx
yzyx
x
zyx
v
v
v
ADDING/SUBTRACTING VECTORS
• Add/subtract vectors add/subtract components
• Geometric interpretation:
• Adding putting head of one vector on tail of the other
• Subtracting gives direction from one endpoint to the other
)(
)(
)(
BA
BA
BA
B
B
B
A
A
A
zz
yy
xx
z
y
x
z
y
x
BA
)(
)(
)(
BA
BA
BA
B
B
B
A
A
A
zz
yy
xx
z
y
x
z
y
x
BA
DOT PRODUCT
• Result is a single number (i.e., scalar) another name for the dot product is the scalar product
• Dot product of vector with itself = square of length of vector:
• Equivalent to:
• …where θ = smallest angle between the two vectors
• If the vectors are normalized, then:
BABABA zzyyxxBA
2222 AzyxAA
cosBABA
cos
1
1
BA
B
A
DOT PRODUCT: CHECKING ANGLES
• Look at sign of dot product to check angle:
• (A · B) > 0 vectors pointing in similar directions (0 <= θ < 90°)
• (A · B) = 0 vectors are orthogonal (i.e., perpendicular to each other) (θ = 90°)
• (A · B) < 0 vectors pointing away from each other (90° < θ <= 180°)
• For normalized vectors, dot product ranges from [-1, 1]:
• (A · B) = 1 vectors pointing in the exact same direction (θ = 0°)
• (A · B) = 0 vectors are orthogonal (i.e., perpendicular to each other) (θ = 90°)
• (A · B) = -1 vectors pointing in the exact opposite direction (θ = 180°)
• (We’re going to use this trick for lighting calculations later )
1)180cos(
0)90cos(
1)0cos(
cosBABA Remember:
CROSS PRODUCT
• Also called vector product (results is a vector)
• Given two vectors U and V gives vector W that is orthogonal (perpendicular) to both U and V
• U, V, and W form right-handed system!
• I.e., can use right-hand-rule on U and V (IN THAT ORDER) to get W
• Example: (X x Y) = Z axis!
• The length of W (= U X V) is equivalent to:
• …where again θ = smallest angle between U and V
• If U and V are parallel θ = 0° sin θ = 0 get zero vector for W!
sinVUVUW
xyyx
zxxz
yzzy
z
y
x
vuvu
vuvu
vuvu
VU
w
w
w
W
CROSS PRODUCT: ORDER MATTERS!
• WARNING! ORDER MATTERS with the cross product!
• Property of anti-commutativity
• REMEMBER THE RIGHT-HAND-RULE!!!
UVVU
COMPUTING THE CROSS PRODUCT: SARRUS’S SCHEME
• Follow diagonal arrows for each arrow multiply elements along arrow times sign at top
• ex = x axis, ey = y axis, ez = z axis
)()()(
)()()(
xyzzxyyzx
yxzxzyzyx
vuevuevue
vuevuevueVU
DETECTING AND SPLITTING CONCAVE POLYGONS
• There are 2 ways we can do this:• Vector method
• Check interior angles using cross product
• Rotational method• Rotate each edge in line with X axis check if vertex below X axis
SPLITTING BY VECTOR METHOD
• Transform to XY plane (if necessary)
• Get edge vectors in counterclockwise order:
• For each pair of consecutive edge vectors, get cross product
• If concave negative Z component split polygon along first vector in cross product pair
• Have to intersect this line with other edges
• Repeat process with two new polygons
• NOTE: 3 successive collinear points anywhere cross product becomes zero vector!
kkk VVE 1
0)(
0)(
0)(
0)(
0)(
15
54
43
32
21
z
z
z
z
z
EE
EE
EE
EE
EE
SPLITTING BY ROTATIONAL METHOD
• Transform to XY plane (if necessary)
• For each vertex Vk:
• Move polygon so that Vk is at the origin
• Rotate polygon so that Vk+1 is on the X axis
• If Vk+2 is below X axis polygon is concave split polygon along x axis
• Repeat concave test for each of the two new polygons
• Stop when we’ve checked all vertices
SPLITTING A CONVEX POLYGON
• Every 3 consecutive vertices make triangle
• Remove middle vertex
• Keep going until down to last 3 vertices
PLANE EQUATION
• Need plane equation:
• Collision detection, raytracing/raycasting, etc.
• Need normal of polygon:
• Lighting/shading
• Backface culling don’t draw polygon facing away from camera
• General equation of a plane:
• (x,y,z) = any point on the plane
• A,B,C,D = plane parameters
• ON the plane Ax + By + Cz + D = 0
• BEHIND the plane Ax + By + Cz + D < 0
• IN FRONT OF the plane Ax + By + Cz + D > 0
0 DCzByAx
CALCULATING THE PLANE EQUATION• Divide the formula by D
• Pick any 3 noncollinear points in the polygon
• Solve set of 3 simultaneous linear plane equations to get A/D, B/D, and C/D use Cramer’s Rule
3,2,1 1)/()/()/( kzDCyDBxDA kkk
333
222
111
33
22
11
33
22
11
33
22
11
1
1
1
1
1
1
1
1
1
zyx
zyx
zyx
D
yx
yx
yx
C
zx
zx
zx
B
zy
zy
zy
A
)()()(
)()()(
)()()(
)()()(
122133113223321
213132321
213132321
213132321
zyzyxzyzyxzyzyxD
yyxyyxyyxC
xxzxxzxxzB
zzyzzyzzyA
QUICK REVIEW: DETERMINANT OF A MATRIX
)4*25*1()6*14*3()5*36*2(
654
321
3*24*143
21
kji
kji
M
M
IF THE POLYGON IS NOT CONTAINED IN A PLANE
• Either:
• Divide into triangles
• OR:
• Find approximating plane
• Divide vertices into subsets of 3
• Get plane parameters for each subset
• Get average plane parameters
NORMAL VECTOR
• Normal vector = gives us orientation of plane/polygon
• Points towards OUTSIDE of plane
• From back face to front face
• Perpendicular to surface of plane
• Normal N = (A,B,C) parameters from plane equation!
• Although it doesn’t have to be, the normal vector is often normalized (i.e., length = 1)
GETTING NORMAL AND PLANE EQUATION
• Solve for plane equation normal = (A,B,C)
• OR
• Get normal from edges using cross-product solve for D in plane equation
• V1, V2, and V3 = consecutive vertices in counterclockwise order:
• NOTE: Counterclockwise looking from outside the polygon towards inside
)()( 2312 VVVVN
POINT-NORMAL PLANE EQUATION
• Given the normal N and any point on the plane, the following holds true:
• A related, alternative equation for a plane is the point-normal form:
• …where V is any 3D point
DPN
0)( PVN
EXAMPLE