V - Skidmore College

advertisement
CS 325
Computer Graphics
02 / 15 / 2012
Instructor: Michael Eckmann
Today’s Topics
• Questions? Comments?
• Clipping
– Line Clipping algorithms
– Polygon clipping
• 3d Mathematics
– Right handed coordinate system
– Vectors and operations (dot product, cross
product)
– 3D line equation
– Plane equation
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
Clipping
|
this region code is 4 bits
1st bit is the sign of yT-y
2nd bit is the sign of y-yB
3rd bit is the sign of xR-x
4th bit is the sign of x-XL
0 = positive
1 = negative
1001
1000
|
1010
--------------|-----------------------|-------------|
0001
Clipping window is the center
area in the right diagram
|
|
|
|
0000
|
0010
--------------|-----------------------|-------------|
containing 0000
0101
|
|
0100
|
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
|
|
0110
Clipping
• Liang-Barsky line clipping
– based on parametric equation of a line
• given end points (x0 , y0) and (xend , yend) the parametric equations
of a line are:
• x = x0 + u (xend – x0)
• y = y0 + u (yend – y0)
• 0 <= u <= 1
– recall that our clipping window has the following vertices in the world
(xL, yB), (xR, yB), (xR, yT), (xL, yT)
– and a point (x,y) is visible if
xL <= x <= xR AND
yB <= y <= yT
– replace the parametric equations for x and y in those inequalites
xL <= x0 + u (xend – x0) <= xR
yB <= y0 + u (yend – y0) <= yT
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
Liang-Barsky Line Clipping
xL <= x0 + u (xend – x0) <= xR
yB <= y0 + u (yend – y0) <= yT
– which can be expressed as 4 inequalities of the form
• u pk <= qk, where k = 1, 2, 3, or 4 and
– p1= (x0 – xend) p2= (xend – x0) p3= (y0 – yend) p4= (yend – y0)
– q1= (x0 – xL) q2= (xR – x0) q3= (y0 – yB) q4= (yT – y0)
– a line parallel to a clipping edge has pk= 0, where k represents the edge
to which it is parallel: 1=Left, 2=Right, 3=Bottom, 4=Top
– if (pk== 0 and qk< 0) then line completely outside boundary, done
– if (pk== 0 and qk>= 0) then the line is inside the boundary
– if (pk< 0) then the line goes from outside to inside of the infinite
extension of a clipping window edge
– if (pk> 0) then the line goes from inside to outside of the infinite
extension of a clipping window edge
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
Liang-Barsky Line Clipping
– Recall what k's mean: 1=Left, 2=Right, 3=Bottom, 4=Top
– when pk is non-zero, we find the intersection of the line with the infinite
extension of the clipping window edge k
• recall that u pk <= qk so this intersection is simply when u = qk/pk
– initialize u1 to be 0 and u2 to be 1 (line segment between u = 0 and 1)
– For each of the four infinite extensions of a clipping window edge we
calculate either r1 or r2
• r1 is the u parameter for the intersection of the line with the edge when
coming from the outside of the clipping window to the inside (p < 0)
• r2 is the u parameter for the intersection of the line with the edge when
coming from the inside of the clipping window to the outside (p > 0)
• if p<0, update u1 to be r1 if it results in a shorter line (i.e. if r1 > u1)
• if p>0, update u2 to be r2 if it results in a shorter line (i.e. if r2 < u2)
• if u1 > u2 we reject the line, and we're done.
– if it makes it through all four boundary checks without rejection, then the
line to be drawn is between u1 and u2.
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
Liang-Barsky Line Clipping
• Example of Liang-Barsky line clipping algorithm in action
– (x0,y0) = (10,5)
– (xend,yend) = (30,30)
– Clipping window: xL = 20, xR = 35, yB = 10, yT = 20.
–
–
–
–
–
–
–
–
–
p1= (x0 – xend) = -20
p2= (xend – x0) = 20
p3= (y0 – yend) = -25
p4= (yend – y0) = 25
q1= (x0 – xL) = -10
q2= (xR – x0) = 25
q3= (y0 – yB) = -5
q4= (yT – y0) = 15
u1= 0 and u2= 1 to start, let's run the algorithm on the board
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
Liang-Barsky Line Clipping
• Another example
– (x0,y0) = (10,18)
– (xend,yend) = (25,25)
– Clipping window: xL = 20, xR = 35, yB = 10, yT = 20.
–
–
–
–
–
–
–
–
–
p1= (x0 – xend) = -15
p2= (xend – x0) = 15
p3= (y0 – yend) = -17
p4= (yend – y0) = 17
q1= (x0 – xL) = -10
q2= (xR – x0) = 25
q3= (y0 – yB) = 8
q4= (yT – y0) = 2
u1= 0 and u2= 1 to start, let's run the algorithm on the board
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
Line Clipping
• Liang-Barsky (L-B) vs. Cohen-Sutherland (C-S)
– L-B in general more efficient
• updates of u1 & u2 require only one divide
• window edge intersections are computed only once when u1 & u2 are
final
– C-S
• repeatedly calcs intersections along a line path even though line may be
completely outside clipping window
• each intersection calc requires a divide and a multiply
• Both line clipping algorithms can be extended to 3-d
• A third line clipping algorithm, Nicholl-Lee-Nicholl (N-L-N), which we will
not go into is faster than both L-B & C-S but it cannot be extended to 3-d.
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
Polygon Clipping
• Polygon clipping
– Polygons can be clipped against successive infinite extensions of the
clipping window edges
– Keep track of new vertices (intersections with edge of clipping window) at
each stage.
– Notice the number of vertices increased in the example below.
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
Polygon Clipping
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
Polygon Clipping
• The text describes two polygon clipping algorithms.
• The Sutherland-Hodgman algorithm and the Weiler-Atherton algorithm.
• A major difference between the two is that the Sutherland-Hodgman algorithm
produces as output one polygon.
• Think about a concave polygon that when clipped, really should result in two
polygons. Example on board.
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
3d math (Ch. 9, Appdx A, Sec. 4-7)
• Coordinate systems
• Vectors
• Lines
• Plane
• Homogeneous Coordinates of a 3d point
• Transformations
– Translation
– Scaling
– Rotation (about x, y, z)
– Shear (in xy)
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
Right-handed 3d coordinate system
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
Left-handed 3d coordinate system
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
vectors
• A vector is a directed line segment that has magnitude (length)
and direction.
• We can define a vector as the difference between two points.
(Example on board.) fig A-13 in text.
• In 2 dimensions: V = P2-P1 = (vx, vy)
• In 3 dimensions: V = P2-P1 = (vx, vy, vz)
• The vx, vy, and vz values are the projections of the line segment onto
the x, y and z axes, respectively.
• Magnitude of a Vector is determined by the Pythagorean theorem:
• For 2d: |V| = sqrt(vx2 + vy2) and for 3d: |V| = sqrt(vx2 + vy2 + vz2)
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
vectors
• For 2d vectors: the direction of a vector is often specified as an
angle in relation to the horizontal.
• For 3d vectors: the direction of a vector is often specified as three
angles in relation to the positive axes. (note: The alpha in the
diagram would only be accurate if V was on the y-z plane.)
• cos α = vx / |V|
• cos β = vy / |V|
• cos γ = vz / |V|
• cos2 α + cos2 β + cos2 γ = 1
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
vectors
• A vector has a direction and a magnitude. Does it have a position in
the coordinate system?
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
vectors
• A vector has a direction and a magnitude. Does it have a position in
the coordinate system?
– No
– Example:
– p1 = (5,5,5), p2 = (7,7,5), p3 = (2,7,3), p4 = (4,9,3)
– The vectors generated by
• [p2 – p1] and [p4 – p3] result in the same vector
• which is [2,2,0]
• what's its magnitude?
• what's its direction?
• what's its position?
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
vectors
• A vector has a direction and a magnitude. Does it have a position in
the coordinate system?
– No
– Example:
– p1 = (5,5,5), p2 = (7,7,5), p3 = (2,7,3), p4 = (4,9,3)
– The vectors generated by
• [p2 – p1] and [p4 – p3] result in the same vector
• which is [2,2,0]
• what's its magnitude? sqrt (4+4) = sqrt(8) = 2*sqrt(2)
• what's its direction?
– cos-1(sqrt(2)/2) = 45 degrees
– cos-1(sqrt(2)/2) = 45 degrees
– cos-1(0) = 90 degrees
• what's its position?
– it has no position
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
vectors
• Vector addition:
V1 + V2 = (v1x+v2x, v1y+v2y,
v1z+v2z)
• Scalar multiplication:
sV = (svx, svy, svz)
• Dot product (aka scalar product) of 2 vectors results in a scalar:
V1 ● V2 = |V1| |V2|cos θ
θ is the (smaller) angle between the two vectors
alternatively:
V1 ● V2 = v1xv2x+v1yv2y+v1zv2z
• What would be the dot product of two perpendicular vectors (those
with the angle between them being 90 degrees)?
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
vectors
• Cross product (aka vector product) of 2 vectors results in a vector:
V1 x V2 = u |V1| |V2|sin θ
θ is the angle between the two vectors
u is a unit vector (length = 1) perpendicular to both V1 and V2
u's direction is determined by the right-hand rule
• Right-hand rule is: with your right hand, grasp the axis perpendicular to
the plane of the two vectors and make sure that the direction of your
fingers curve from v1 to v2. u's direction is the direction of your thumb.
• Alternatively:
• V1 x V2 = (v1yv2z – v1z v2y, v1zv2x – v1x v2z, v1xv2y – v1y v2x)
• Cross product is not commutative, nor associative.
• V1 x V2 = - (V2 x V1)
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
vectors
• Cross product of two vectors is a vector that is perpendicular to the two
vectors and has magnitude equal to the area of the parallelogram formed
by the two vectors. (picture on board)
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
vectors
• Recap
– a vector has magnitude and direction (but no position)
– addition of 2 vectors results in a vector
– a scalar times a vector results in a vector
– Cross product of two vectors results in a vector
– but
– dot product of two vectors results in a scalar
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
lines
• Parametric equation of a line in 3 dimensions
– Given points P1 and P2 the equation of a line that contains these points
is:
x = x1 + t(x2 – x1)
y = y1 + t(y2 – y1)
z = z1 + t(z2 – z1)
– Given a point P1 and vector V the equation of a line that contains the
point and is in the direction of V is:
x = x1 + t(xv)
y = y1 + t(yv)
z = z1 + t(zv)
• Line = P1 + t (P2 – P1)
• Line = P1 + Vt
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
Planes (part of 4-7)
• The general plane equation: Ax + By + Cz + D = 0
• A, B, C, D are constants and (x,y,z) are the coordinates of the points on the
plane.
• A useful form of the plane equation is:
A'x + B'y + C'z + D' = 0
where A'=A/d, B'=B/d, C'=C/d, D'=D/d, and d = sqrt(A2 + B2 + C2)
• Because then it's easy to find the distance between a point (x1, y1, z1) and the
plane which is simply:
A'x1 + B'y1 + C'z1 + D'
• A normal vector to a plane is perpendicular to the plane.
• If the equation of the plane is Ax + By + Cz + D = 0, then a normal to the plane
is the vector (A, B, C)
• Pictures on board.
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
The plane equation
• From the drawing on the board
– Equation of the plane: Ax + By + Cz + D = 0
– Given three non collinear points, P1, P2, P3 these points uniquely
determine the plane
– The cross product of P1 - P2 and P3 - P2, gives us a normal vector N.
– For an arbitrary point P = (x, y, z), P is on the plane if
N ● [P - P2] = 0
– Why?
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
The plane equation
• From the drawing on the board
– Equation of the plane: Ax + By + Cz + D = 0
– Given three non collinear points, P1, P2, P3 these points uniquely
determine the plane
– The cross product of P1 - P2 and P3 - P2, gives us a normal vector N.
– For an arbitrary point P = (x, y, z), P is on the plane if
N ● [P - P2] = 0
– Why? Because if N is normal to the plane, and P-P2 is a vector
on the plane, then the angle between these is 90 degrees and so
the dot product will be 0, since cos(90) = 0.
– If P is not on the plane, therefore P-P2 is not on the plane, so
what happens?
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
The plane equation
• For an arbitrary point P = (x, y, z), P is on the plane if
N ● [P - P2] = 0
– So, we can derive the plane equation like so:
– N = (A, B, C) and is normal to the plane
– P = (x, y, z) and represents any point on the plane
– P2 = (x2, y2, z2) is some fixed point on the plane
N ● [P - P2] = [A,B,C]●[x-x2,y-y2, z-z2]=
A(x-x2) + B(y-y2) + C(z-z2) =
Ax + By + Cz + A(-x2) + B(-y2) + C(-z2) = 0
Notice that x, y and z are variables and the rest are constant values
so this gives Ax + By + Cz + D = 0 where
D = A(-x2) + B(-y2) + C(-z2)
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
Inverse Transforms and Identity
• The inverse of a Matrix is the matrix that
when multiplied by the original results in the
Identity matrix.
• The identity matrix is an nxn matrix with 1's
along the main diagonal (from upperleft to
lowerright) and 0's elsewhere.
• MM-1 = I = M-1M
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
•
Reminder about Homogeneous
Coordinates
When we transform some homogeneous point (x,y,z,1) we may end
up with something other than 1 in the homogeneous parameter slot
i.e. (x1,y1,z1,w), w!= 1.
• To figure out which point to plot in 3d, we need to divide each
coordinate by w
• x' = x1 / w
• y' = y1 / w
• z' = z1 / w
• 1=w/w
• so we plot (x',y',z')
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
3d transformations
• Translation
• Scale
• Rotation
• Shear
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
3d Translation
• 3d Translation in homogeneous coordinates is a direct extension of
translation in 2d.
[ 1 0 0 tx ] [x] [x+tx]
[ 0 1 0 ty ] [y] = [y+ty]
[ 0 0 1 tz ] [z] [z+tz]
[ 0 0 0 1 ] [1] [ 1 ]
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
3d Scale
• 3d Scale
[ sx 0
[ 0 sy
[ 0 0
[ 0 0
0
0
sz
0
0]
0]
0]
1]
[x]
[y] =
[z]
[1]
[sxx]
[syy]
[szz]
[1]
• 3d Scale has the same problem/feature that 2d scaling has, namely it
also translates.
Michael Eckmann - Skidmore
College - CS 325 - Spring 2012
Download