240 likes | 252 Views
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
E N D
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
3D Geometry • To model, animate, and render 3D scenes, we must specify: • Location • Displacement from arbitrary locations • Orientation • We’ll look at two types of spaces: • Vector spaces • Affine spaces • We will often be sloppy about the distinction
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
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
Affine spaces vs. Vector spaces • Vector spaces • All vectors originate at the origin • Thus, can be denoted with (x,y,z) coordinates • The head of the vector • The origin is absolute • Affine spaces • 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
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, …) • 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 • P + 0 = P • Note that the addition of two points is not defined Q v P
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
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 0aproduces a ray • Setting d to P - Q and restricting 0a 1 produces a line segment between P and Q
v θ u 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 • length(v) = |v| = sqrt(v • v) • Normalizing a vector, making it unit-length • Divide each coordinate by the length • Computing the angle between two vectors: • u • v = |u| |v| cos(θ) • Checking two vectors for orthogonality • Does the angle equal 90º? • Projecting one vector onto another
Cross Product • The cross product or vector product of two vectors is a vector: • 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
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
Matrices • By convention, matrix element Mrc is located at row r and column c: • This is called row-major order • By (OpenGL) convention, vectors are columns: • And 2-D matrices are in column-major order!
Matrices • Matrix-vector multiplication applies a linear transformation to a vector: • Recall how to do matrix multiplication
Matrix Transformations • A sequence or composition of linear trans-formations corresponds to the product of the corresponding matrices • Note: the matrices to the right affect vector first • Note: order of matrices matters! • The identity matrixI has no effect in multiplication • Some (not all) matrices have an inverse:
3D Scene Representation • Scene is usually approximated by 3D primitives • Point • Line segment • Polygon • Polyhedron • Curved surface • Solid object • etc.
Origin 3D Point • Specifies a location • Represented by three coordinates • Infinitely small • typedef struct { • Coordinate x; • Coordinate y; • Coordinate z; • } Point; (x,y,z)
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!) • Dot product of two 3D vectors • V1·V2 = dx1dx2 +dy1dy2 +dz1dz2 • V1·V2 = ||V1 || || V2 || cos(Q) (dx,dy,dz) • typedef struct { • Coordinate dx; • Coordinate dy; • Coordinate dz; • } Vector; (dx2,dy2 ,dz2) Q
Origin 3D Line Segment • Use a linear combination of two points • Parametric representation: • P = P1 + t (P2 - P1), (0 t 1) • typedef struct { • Point P1; • Point P2; • } Segment; P2 P1
Origin 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 3D Line • Line segment with both endpoints at infinity • Parametric representation: • P = P1 + t V, (- < t < ) • typedef struct { • Point P1; • Vector V; • } Line; V P1
N = (a,b,c) d Origin 3D Plane • A combination of three non-linear points • Implicit representation: • N + d = 0, or • ax + by + cz + d = 0 • N is the plane “normal” • Unit-length vector • Perpendicular to plane • typedef struct { • Vector N; • Distance d; • } Plane; P2 P3 P1
3D Polygon • Area “inside” a sequence of coplanar points • Triangle • Quadrilateral • Convex • Star-shaped • Concave • Self-intersecting • Points are in counter-clockwise order • Holes (use > 1 polygon struct) • typedef struct { • Point *points; • int npoints; • } Polygon;
r Origin 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() + cx • y = r cos() sin() + cy • z = r sin() + cz • typedef struct { • Point center; • Distance radius; • } Sphere;