480 likes | 631 Views
Review: Math (Ch 4). General Purpose Graphics. API for use in high level languages Appl.program ------- Graph.API ------- Graph.hardware Primitives and Attributes Geometric and modeling transformations Viewing transformations Hierarchical modeling and manipulation
E N D
Review: Math (Ch 4) Hofstra University – CSC290B
General Purpose Graphics • API for use in high level languages • Appl.program ------- Graph.API ------- Graph.hardware • Primitives and Attributes • Geometric and modeling transformations • Viewing transformations • Hierarchical modeling and manipulation • Raster (buffer) oriented transformations • Control functions Hofstra University – CSC290B
Fundamental Operations • Transformation – changes in coordinate systems through matrix operations • Clipping – adjusting our view of the world • Projection – from 3D to 2D • Rasterization – pixels in the frame buffer Hofstra University – CSC290B
Geometric Transformations • Work in Euclidean affine space: vectors, + , multiplication with scalars, 0 linear combinations, linear independence, basis linear maps (transformations), change of basis points, point+vector, point –point affine combinations, frame inner product, distances, angles, unit vector, perpendicular orthonormal frame, change of frames, affine maps Hofstra University – CSC290B
Review: Affine Transformations change objects so programmer can: • Model objects in simple configurations • Make multiple copies of objects • Animate objects, move or deform over time Hofstra University – CSC290B
Vectors • Directed line segment that connects points • Does not have a fixed position Hofstra University – CSC290B
Vectors head-to-tail rule Linear independence, basis, linear maps Hofstra University – CSC290B
Geometric ADTs • Scalars, Points and Vectors are members of mathematical sets • Abstract spaces for representing and manipulating these sets of objects • Linear Vector Space – scalars & vectors • Affine Space – adds the point • Euclidean Space – add concept of distance and angle Hofstra University – CSC290B
Geometric ADTs • Operations that relate points and vectors • Subtraction of two points yields a vector:v = P – Q • Point-vector addition yields a point:P = v + Q Hofstra University – CSC290B
Geometric ADTs: Lines • Consider all points of the formP () = P0 + dwhere P0 is an arbitrary point, d is an arbitrary vector, and is a scalar • P () is a point for any value of • Called the parametric form of the line • Generate points on the line by varying the parameter • For non-negative values, we get a ray emanating from P0 in the direction of d Hofstra University – CSC290B
Geometric ADTs: Affine Sums • For any point Q, vector v, and positive scalar ,P= Q + vdescribes all points on the line from Q in the direction of v • Affine addition is characterized by the addition of two arbitrary points and multiplication of a point by a scalar,P= R + Q where 1 + 2 = 1 Hofstra University – CSC290B
Geometric ADTs: Dot Product • We are concerned about the orientation between two vectors • Dot (Inner) Product of vectors u and v is written u v • If u v= 0, then u and v are orthogonal • In Euclidean space, the square of the magnitude of a vector is |u|2 = u u • The angle between two vectors is given by Hofstra University – CSC290B
Geometric ADTs: Cross Product • Cross Product – is determined by a third vector n that is orthogonal to two other vectors v and u. It is denoted asn = u v Hofstra University – CSC290B
3D Primitives Curves Surfaces Volume Objects Hofstra University – CSC290B
3D Primitves Objects With Good Characteristics • Described by their surfaces; thought to be hollow • Specified through a set of vertices in 3D • Composed of or approximated by flat convex polygons Hofstra University – CSC290B
Coordinate Systems Given a frame (P0, v1, v2, v3), a vector w: And in the same frame a point P: Hofstra University – CSC290B
Changes of Basis • How do we represent the vector if we change the basis? • Suppose the {v1,v2,v3} and {u1,u2,u3} are two bases. • Basis vector in second set can be represented in terms of the first basis Hofstra University – CSC290B
Change of Basis in Linear Space U = MV Hofstra University – CSC290B
Change of Basis In V basis, the vector is represented by a, and in U by b U=MV, b’U=b’MV=a’V, a’=b’M, a=M’b Hofstra University – CSC290B
Homogeneous Coordinates Represent a point at (x,y,z) wrt a 3D frame determined by (P0, v1, v2, v3 ) with a column matrix Where x,y,z are the components of the basis vectors for this point, so that and represent a vector in the same form Hofstra University – CSC290B
Homogeneous Coordinates • Maintain distinction between points and vectors • Use four dimensional column matrices to represent both points and vectors in three dimensions • If we assume a frame specified by (v1, v2, v3, P0), then any point P can be written Hofstra University – CSC290B
Homogeneous Coordinates • …and if we define multiplication of a point by the scalars 0 and 1 as0 ·P = 0, 1 . P = P, • then we can use a matrix product to express this relation formally as homogeneous-coordinate representation Hofstra University – CSC290B
Homogeneous Coordinates Point Vector We carry out operations on points and vectors using their homogeneous-coordinate representation and ordinary matrix algebra Hofstra University – CSC290B
Homogeneous Coordinates two frames change of frames matrix representation All affine transformations can be represented as matrix multiplications in homogeneous coordinates Hofstra University – CSC290B
Frames In OpenGL • We use two frames: the camera frame and the world frame • We regard the camera frame as fixed • The model-view matrix positions the world frame relative to the camera frame • Perform homogeneous coordinate transformations on object in other frames to define new frames relative to the camera frame • Model-view Matrix: translate along z, to separate the two frames, so object could be in camera’s field of view Hofstra University – CSC290B
Frames In OpenGL Hofstra University – CSC290B
Modeling • Select modeling (local) coordiante system best suited for modeling the object • Define objects in terms of vertices • Pass vertices through a number of transformations using homogeneous coordinates Hofstra University – CSC290B
Affine Transformations • A map f () is linear iff, for any scalars and , and any vectors p and q,f(p+ q) = f(p)+ f(p) • Affine maps preserve affine combinations of points f(P+ Q) = f(P)+ f(Q), where + =1 • are linear in homogenious coordinates ( i.e. represented by 4x4 matrix, last row (0,0,0,1), act as matrix multiplications). • the transf. of affine combinations of points is same affine combination of the transformed points • can be represented as a composition of translations, rotations, and scalings Hofstra University – CSC290B
Transformations in Homogeneous Coordinates • Each affine transformation is represented by a 4 x 4 matrix of the form Hofstra University – CSC290B
Graphics Pipeline • Pipeline endpoints (in homogeneous coordinates) through affine transformations to generate the rastered image Hofstra University – CSC290B
Concatenation of Transformations • We can multiply together sequences of transformations – concatenating • Works well with pipeline architecture • e.g., three successive transformations on a point p creates a new point q q = CBAp Hofstra University – CSC290B
Concatenation of Transformations • If we have a lot of points to transform, then we can calculateM = CBAand then we use this matrix on each pointq = Mp Hofstra University – CSC290B
Translation • Translation is an operation that displace points by a fixed distance in a given direction • Only need to specify a displacement vector d • Transformed points are given by P = P + d Hofstra University – CSC290B
Translation Hofstra University – CSC290B
Rotation about a pivot point P in 2D R(P;u)=T(-P)R(O;u)T(P) Hofstra University – CSC290B
Rigid Body Transformation • Rotation and translation are rigid-body transformations • No combination of transformations can alter the shape of an • object Non-rigid-body transformations Hofstra University – CSC290B
Scaling non-uniform uniform Hofstra University – CSC290B
Rotation About Axis Parrallel to z-axis Move the cube to the originApply Rz()Move back to original position Hofstra University – CSC290B
Instance Transformation instance objectprototype Hofstra University – CSC290B
Instance Transformation Hofstra University – CSC290B
Current Transformation Matrix • Current Transformation Matrix (CTM) – matrix that is applied to any vertex that is defined subsequent to setting the CTM • Changing the CTM, alters the state of the system • 4x4 matrix that can be altered by a set of functions provided by the graphics package • Common to most systems. Part of the pipeline • If p is a vertex, the pipeline produces Cp Hofstra University – CSC290B
Current Transformation Matrix Let C denote the CTM. It is set to the 4x4 identity matrix, initially. The symboldenotes replacement Initialization operation: CI Three transformations about the fixed point of the origin: translation, rotation, scaling Set:Postmultiplication: CT CCT CR CCR CS CCS Hofstra University – CSC290B
Current Transformation Matrix The matrix the is applied to all primitives is the product of the model-view matrix (GL_MODELVIEW) and the projection matrix (GL_PROJECTION) The CTM is the product of these matrices! Hofstra University – CSC290B
Current Transformation Matrix The matrix that is applied to all primitives is the product of the model-view matrix (GL_MODELVIEW) and the projection matrix (GL_PROJECTION) The CTM is the product of these matrices We select the desired matrix of each with glMatrixMode then alter the selected matrix through postmultiplication using: glLoadIdentity( ); glRotatef(angle, vx, vy, vz); glTranslatef(dx, dy, dz); glScalef(sx, sy, sz); Hofstra University – CSC290B
Order of Transformations • Transformation specified most recently is the one applied firstglMatrixModel(GL_MODELVIEW) glLoadIdentity( ); glTranslatef(4.0, 5.0, 6.0); glRotatef(45.0, 1.0, 2.0, 3.0); glTranslatef(-4.0, -5.0, -6.0); Hofstra University – CSC290B
Summary: Affine Maps • Composition of translations, rotations, scalings • Preserve affine combination of points • If object is modeled as affine combination from vertices, under affine map, the transformed object is the same affine combination of the transformed vertices. Hofstra University – CSC290B
Summary: Affine Maps • Liner maps in homogeneous coordinates, represented by matrices • Composition of affine maps is represented by a matrix which is product of the matrices of the individual maps. Hofstra University – CSC290B
Fundamental Operations • Transformation – changes in coordinate systems through matrix operations • Clipping – adjusting our view of the world • Projection – from 3D to 2D • Rasterization – pixels in the frame buffer Hofstra University – CSC290B