320 likes | 529 Views
CS 551 / 645: Introductory Computer Graphics. Mathematical Foundations. From last class…. U.S. film projectors play film at 24 fps Projectors have a shutter to block light during frame advance To reduce flicker, shutter opens twice for each frame – resulting in 48 fps flashing
E N D
CS 551 / 645: Introductory Computer Graphics Mathematical Foundations
From last class… • U.S. film projectors play film at 24 fps • Projectors have a shutter to block light during frame advance • To reduce flicker, shutter opens twice for each frame – resulting in 48 fps flashing • 48 fps is perceptually acceptable • European film projectors play film at 25 fps • American films are played ‘as is’ in Europe, resulting in everything moving 4% faster • Faster movements and increased audio pitch are considered perceptually acceptable
From last class… • Film to DVD transfer • Problem: 24 film fps must be converted to television interlaced 29.97 (30) fps • Use 3:2 Pulldown • First frame of movie is broken into first three frames • Next frame of movie is broken into next two frames • Next frame of movie is broken into next three frames…
Additional Displays • Display Walls (Princeton)
Additional Displays • Stereo
Mathematical Foundations • Hearn and Baker (A1 – A4) appendix gives good review • I’ll give a brief, informal review of some of the mathematical tools we’ll employ • Geometry (2D, 3D) • Trigonometry • Vector spaces • Points, vectors, and coordinates • Dot and cross products • Linear transforms and matrices
2D Geometry • Know your high school geometry: • Total angle around a circle is 360° or 2π radians • When two lines cross: • Opposite angles are equivalent • Angles along line sum to 180° • Similar triangles: • All corresponding angles are equivalent
Trigonometry • Sine: “opposite over hypotenuse” • Cosine: “adjacent over hypotenuse” • Tangent: “opposite over adjacent” • Unit circle definitions: • sin () = x • cos () = y • tan () = x/y • Etc… (x, y)
Slope-intercept Line Equation Slope = m = rise / run Slope = (y - y1) / (x - x1) = (y2 - y1) / (x2 - x1) Solve for y: y = [(y2 - y1)/(x2 - x1)]x + [-(y2-y1)/(x2 - x1)]x1 + y1 or: y = mx + b P = (x, y) y P2 = (x2, y2) P1 = (x1, y1) x
Parametric Line Equation • Given points P1 = (x1, y1) and P2 = (x2, y2) x = x1 + t(x2 - x1) y = y1 + t(y2 - y1) • When: • t=0, we get (x1, y1) • t=1, we get (x2, y2) • (0<t<1), we get pointson the segment between(x1, y1) and (x2, y2) y P2 = (x2, y2) P1 = (x1, y1) x
Other helpful formulas • Length = sqrt (x2 - x1)2 + (y2 - y1)2 • Midpoint, p2, between p1 and p3 • p2 = ((x1 + x3) / 2, (y1 + y3) / 2)) • Two lines are perpendicular if: • M1 = -1/M2 • cosine of the angle between them is 0
Y Y Z X X Z Coordinate Systems • Grasp z-axis with hand • Roll fingers from positive x-axis towards positive y-axis • Thumb points in direction of z-axis Left-handed Right-handed coordinate coordinate system system
Points • Points support these operations • Point-point subtraction: Q - P = v • Result is a vector pointing fromPtoQ • Vector-point addition: P + v = Q • Result is a new point • Note that the addition of two points is not defined Q v P
Vectors • We commonly use vectors to represent: • Points in space (i.e., location) • Displacements from point to point • Direction (i.e., orientation)
Vector Spaces • Two types of elements: • Scalars (real numbers): a, b, g, d, … • Vectors (n-tuples):u, v, w, … • Operations: • Addition • Subtraction • Dot Product • Cross Product • Norm
u+v y v u x Vector Addition/Subtraction • operation u + v, with: • Identity 0v + 0 = v • Inverse -v + (-v) = 0 • Vectors are “arrows” rooted at the origin • Addition uses the “parallelogram rule”: y v u x -v u-v
Scalar Multiplication • Scalar multiplication: • Distributive rule: a(u + v) = a(u) + a(v) (a + b)u = au + bu • Scalar multiplication “streches” a vector, changing its length (magnitude) but not its direction
v θ Dot Product • The dot product or, more generally, inner product of two vectors is a scalar: v1 • v2 = x1x2 + y1y2 + z1z2 (in 3D) • Useful for many purposes • Computing the length (Euclidean Norm) of a vector: length(v) = ||v|| = sqrt(v • v) • Normalizing a vector, making it unit-length: v = v / ||v|| • Computing the angle between two vectors: u • v = |u| |v| cos(θ) • Checking two vectors for orthogonality • u • v = 0.0 u
Dot Product • Projecting one vector onto another • If v is a unit vector and we have another vector, w • We can project w perpendicularly onto v • And the result, u, has length w • v w v u
Dot Product • Is commutative • u • v = v • u • Is distributive with respect to addition • u • (v + w) = u • v + u • w
Cross Product • The cross product or vector product of two vectors is a vector: • The cross product of two vectors is orthogonal to both • Right-hand rule dictates direction of cross product
Cross Product Right Hand Rule • See: http://www.phy.syr.edu/courses/video/RightHandRule/index2.html • Orient your right hand such that your palm is at the beginning of A and your fingers point in the direction of A • Twist your hand about the A-axis such that B extends perpendicularly from your palm • As you curl your fingers to make a fist, your thumb will point in the direction of the cross product
Cross Product Right Hand Rule • See: http://www.phy.syr.edu/courses/video/RightHandRule/index2.html • Orient your right hand such that your palm is at the beginning of A and your fingers point in the direction of A • Twist your hand about the A-axis such that B extends perpendicularly from your palm • As you curl your fingers to make a fist, your thumb will point in the direction of the cross product
Cross Product Right Hand Rule See: http://www.phy.syr.edu/courses/video/RightHandRule/index2.html Orient your right hand such that your palm is at the beginning of A and your fingers point in the direction of A Twist your hand about the A-axis such that B extends perpendicularly from your palm As you curl your fingers to make a fist, your thumb will point in the direction of the cross product
Cross Product Right Hand Rule See: http://www.phy.syr.edu/courses/video/RightHandRule/index2.html Orient your right hand such that your palm is at the beginning of A and your fingers point in the direction of A Twist your hand about the A-axis such that B extends perpendicularly from your palm As you curl your fingers to make a fist, your thumb will point in the direction of the cross product
Cross Product Right Hand Rule See: http://www.phy.syr.edu/courses/video/RightHandRule/index2.html Orient your right hand such that your palm is at the beginning of A and your fingers point in the direction of A Twist your hand about the A-axis such that B extends perpendicularly from your palm As you curl your fingers to make a fist, your thumb will point in the direction of the cross product
Triangle Arithmetic b • Consider a triangle, (a, b, c) • a,b,c = (x,y,z) tuples • Surface area = sa = ½ * ||(b –a) X (c-a)|| • Unit normal = (1/2sa) * (b-a) X (c-a) a c
Vector Spaces • A linear combination of vectors results in a new vector: v= a1v1 + a2v2 + … + anvn • If the only set of scalars such that a1v1 + a2v2 + … + anvn = 0 is a1 = a2 = … = a3 = 0 then we say the vectors are linearly independent • The dimension of a space is the greatest number of linearly independent vectors possible in a vector set • For a vector space of dimension n, any set of n linearly independent vectors form a basis
Vector Spaces: Basis Vectors • Given a basis for a vector space: • Each vector in the space is a unique linear combination of the basis vectors • The coordinates of a vector are the scalars from this linear combination • If basis vectors are orthogonal and unit length: • Vectors comprise orthonormal basis • Best-known example: Cartesian coordinates • Note that a given vector v will have different coordinates for different bases
Conclusion • Read Chapters 1 – 3 of OpenGL Programming Guide • Assignment 1 out today, due 8 days from now, Wednesday the 12th