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… From last class… 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 y P = (x, 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: y – t=0, we get (x1, y1) – t=1, we get (x2, y2) – (0<t<1), we get points on the segment between (x1, y1) and (x2, y2) 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 Coordinate Systems Grasp z-axis with hand Roll fingers from positive x-axis towards positive y-axis Thumb points in direction of z-axis Y Y Z X X Left-handed coordinate system Z Right-handed coordinate system Points Points support these operations – Point-point subtraction: Result is a vector pointing from P to Q – Vector-point addition: Q-P=v P+v=Q Q Result is a new point – Note that the addition of two points is not defined 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 Vector Addition/Subtraction – operation u + v, with: Identity 0 v+0=v Inverse v + (-v) = 0 – Vectors are “arrows” rooted at the origin – Addition uses the “parallelogram rule”: y u+v y v v u x 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 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 v 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 w v u – And the result, u, has length w • v u w cos( ) vw w v w v w 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: y1 z 2 y 2 z1 v1 v 2 ( x1 z 2 x 2 z1) x1 y 2 x 2 y1 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 a Surface area = sa = ½ * ||(b –a) X (c-a)|| Unit normal = (1/2sa) * (b-a) X (c-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