Background Mathematics Aaron Bloomfield CS 445: Introduction to Graphics Fall 2006 Mathematical Foundations A very brief review of some mathematical tools we’ll employ Geometry (2D, 3D) Trigonometry Vector and affine spaces Points, vectors, and coordinates Dot and cross products Linear transforms and matrices 2 3D Geometry To model, animate, and render 3D scenes, we must specify: We’ll look at two types of spaces: Location Displacement from arbitrary locations Orientation Vector spaces Affine spaces We will often be sloppy about the distinction 3 Vector Spaces 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 Best-known example: Cartesian coordinates Note that a given vector will have different coordinates for different bases 4 Vectors And Points We commonly use vectors to represent: Direction (i.e., orientation) Points in space (i.e., location) Displacements from point to point But we want points and directions to behave differently Ex: To translate something means to move it without changing its orientation Translation of a point = different point Translation of a direction = same direction 5 Affine spaces vs. Vector spaces Vector spaces All vectors originate at the origin Thus, can be denoted with (x,y,z) coordinates The origin is absolute Affine spaces The head of the vector Vectors can start at an arbitrary point Thus, can be denoted via (x,y,z) and starting point P The origin is relative to the current “context” Only when the distinction matters will we specify 6 Affine Spaces To be more rigorous, we need an explicit notion of position Affine spaces add a third element to vector spaces: points (P, Q, R, …) Q Points support these operations Point-point subtraction: v Result is a vector pointing from P to Q Vector-point addition: Q-P=v Result is a new point P+0=P P+v=Q P Note that the addition of two points is not defined 7 Affine Spaces Points, like vectors, can be expressed in coordinates The definition uses an affine combination Net effect is same: expressing a point in terms of a basis Thus the common practice of representing points as vectors with coordinates Be careful to avoid nonsensical operations Point + point Scalar * point 8 Affine Lines: An Aside Parametric representation of a line with a direction vector d and a point P1 on the line: P(a) = Porigin + ad Restricting 0 a produces a ray Setting d to P - Q and restricting 0 a 1 produces a line segment between P and Q 9 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 of a vector Normalizing a vector, making it unit-length u • v = |u| |v| cos(θ) Checking two vectors for orthogonality Divide each coordinate by the length Computing the angle between two vectors: length(v) = |v| = sqrt(v • v) v Does the angle equal 90º? Projecting one vector onto another θ u 10 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 Cross product of two vectors is orthogonal to both Right-hand rule dictates direction of cross product Cross product is handy for finding surface orientation Lighting Visibility 11 Linear Transformations A linear transformation: Maps one vector to another Preserves linear combinations Thus behavior of linear transformation is completely determined by what it does to a basis Turns out any and all linear transformations can be represented by a matrix 12 Matrices By convention, matrix element Mrc is located at row r and column c: M11 M12 M21 M22 M Mm1 Mm2 This is called row-major order By (OpenGL) convention, vectors are columns: And 2-D matrices are in column-major order! M1n M2n Mmn v1 v v 2 v 3 13 Matrices Matrix-vector multiplication transformation to a vector: applies a linear M11 M12 M13 vx M v M 21 M 22 M 23 vy M31 M32 M33 vz Recall how to do matrix multiplication 14 Matrix Transformations A sequence or composition of linear transformations corresponds to the product of the corresponding matrices Note: the matrices to the right affect vector first Note: order of matrices matters! The identity matrix I has no effect in multiplication Some (not all) matrices have an inverse: M 1 Mv v 15 3D Scene Representation Scene is usually approximated by 3D primitives Point Line segment Polygon Polyhedron Curved surface Solid object etc. 16 3D Point Specifies a location Represented by three coordinates Infinitely small typedef struct { Coordinate x; Coordinate y; Coordinate z; } Point; (x,y,z) Origin 17 3D Vector Specifies a direction and a magnitude Represented by three coordinates Magnitude ||V|| = sqrt(dx dx + dy dy + dz dz) Which is the square root of the dot product Has no location (in affine spaces!) typedef struct { Coordinate dx; Coordinate dy; Coordinate dz; } Vector; (dx,dy,dz) Q (dx2,dy2 ,dz2) Dot product of two 3D vectors V1·V2 = dx1dx2 + dy1dy2 + dz1dz2 V1·V2 = ||V1 || || V2 || cos(Q) 18 3D Line Segment Use a linear combination of two points Parametric representation: P = P1 + t (P2 - P1), typedef struct { Point P1; Point P2; } Segment; (0 t 1) P2 P1 Origin 19 3D Ray Line segment with one endpoint at infinity Parametric representation: P = P1 + t V, (0 <= t < ) typedef struct { Point P1; Vector V; } Ray; V P1 Origin 20 3D Line Line segment with both endpoints at infinity Parametric representation: P = P1 + t V, (- < t < ) typedef struct { Point P1; Vector V; } Line; P1 V Origin 21 3D Plane A combination of three non-linear points Implicit representation: typedef struct { Vector N; Distance d; } Plane; N is the plane “normal” N = (a,b,c) N + d = 0, or ax + by + cz + d = 0 P2 P3 P1 d Unit-length vector Perpendicular to plane Origin 22 3D Polygon Area “inside” a sequence of coplanar points Triangle Quadrilateral Convex Star-shaped Concave Self-intersecting typedef struct { Point *points; int npoints; } Polygon; Points are in counter-clockwise order Holes (use > 1 polygon struct) 23 3D Sphere All points at distance “r” from point “(cx, cy, cz)” Implicit representation: (x - cx)2 + (y - cy)2 + (z - cz)2 = r 2 Parametric representation: x = r cos() cos(Q) + cx y = r cos() sin(Q) + cy z = r sin() + cz r typedef struct { Point center; Distance radius; } Sphere; Origin 24