Presentation is loading. Please wait.

Presentation is loading. Please wait.

Introduction to Computer Graphics CS 445 / 645 Lecture 5 Transformations Transformations M.C. Escher – Smaller and Smaller (1956)

Similar presentations


Presentation on theme: "Introduction to Computer Graphics CS 445 / 645 Lecture 5 Transformations Transformations M.C. Escher – Smaller and Smaller (1956)"— Presentation transcript:

1 Introduction to Computer Graphics CS 445 / 645 Lecture 5 Transformations Transformations M.C. Escher – Smaller and Smaller (1956)

2 Modeling Transformations Specify transformations for objects Allows definitions of objects in own coordinate systemsAllows definitions of objects in own coordinate systems Allows use of object definition multiple times in a sceneAllows use of object definition multiple times in a scene –Remember how OpenGL provides a transformation stack because they are so frequently reused Chapter 5 from Hearn and Baker Specify transformations for objects Allows definitions of objects in own coordinate systemsAllows definitions of objects in own coordinate systems Allows use of object definition multiple times in a sceneAllows use of object definition multiple times in a scene –Remember how OpenGL provides a transformation stack because they are so frequently reused Chapter 5 from Hearn and Baker H&B Figure 109

3 Overview 2D Transformations Basic 2D transformationsBasic 2D transformations Matrix representationMatrix representation Matrix compositionMatrix composition 3D Transformations Basic 3D transformationsBasic 3D transformations Same as 2DSame as 2D 2D Transformations Basic 2D transformationsBasic 2D transformations Matrix representationMatrix representation Matrix compositionMatrix composition 3D Transformations Basic 3D transformationsBasic 3D transformations Same as 2DSame as 2D

4 2D Modeling Transformations Scale Rotate Translate Scale Translate x y World Coordinates Modeling Coordinates

5 2D Modeling Transformations x y World Coordinates Modeling Coordinates Let’s look at this in detail…

6 2D Modeling Transformations x y Modeling Coordinates Initial location at (0, 0) with x- and y-axes aligned

7 2D Modeling Transformations x y Modeling Coordinates Scale.3,.3 Rotate -90 Translate 5, 3

8 2D Modeling Transformations x y Modeling Coordinates Scale.3,.3 Rotate -90 Translate 5, 3

9 2D Modeling Transformations x y Modeling Coordinates Scale.3,.3 Rotate -90 Translate 5, 3 World Coordinates

10 Scaling Scaling a coordinate means multiplying each of its components by a scalar Uniform scaling means this scalar is the same for all components: Scaling a coordinate means multiplying each of its components by a scalar Uniform scaling means this scalar is the same for all components:  2 2

11 Non-uniform scaling: different scalars per component: How can we represent this in matrix form? Non-uniform scaling: different scalars per component: How can we represent this in matrix form? Scaling X  2, Y  0.5

12 Scaling Scaling operation: Or, in matrix form: Scaling operation: Or, in matrix form: scaling matrix

13 2-D Rotation  (x, y) (x’, y’) x’ = x cos(  ) - y sin(  ) y’ = x sin(  ) + y cos(  )

14 2-D Rotation x = r cos (  ) y = r sin (  ) x’ = r cos (  +  ) y’ = r sin (  +  ) Trig Identity… x’ = r cos(  ) cos(  ) – r sin(  ) sin(  ) y’ = r sin(  ) sin(  ) + r cos(  ) cos(  ) Substitute… x’ = x cos(  ) - y sin(  ) y’ = x sin(  ) + y cos(  )  (x, y) (x’, y’) 

15 2-D Rotation This is easy to capture in matrix form: Even though sin(  ) and cos(  ) are nonlinear functions of , x’ is a linear combination of x and yx’ is a linear combination of x and y y’ is a linear combination of x and yy’ is a linear combination of x and y This is easy to capture in matrix form: Even though sin(  ) and cos(  ) are nonlinear functions of , x’ is a linear combination of x and yx’ is a linear combination of x and y y’ is a linear combination of x and yy’ is a linear combination of x and y

16 Basic 2D Transformations Translation: x’ = x + t xx’ = x + t x y’ = y + t yy’ = y + t yScale: x’ = x * s xx’ = x * s x y’ = y * s yy’ = y * s yShear: x’ = x + h x *yx’ = x + h x *y y’ = y + h y *xy’ = y + h y *xRotation: x’ = x*cos  - y*sin x’ = x*cos  - y*sin  y’ = x*sin  + y*cos y’ = x*sin  + y*cos Translation: x’ = x + t xx’ = x + t x y’ = y + t yy’ = y + t yScale: x’ = x * s xx’ = x * s x y’ = y * s yy’ = y * s yShear: x’ = x + h x *yx’ = x + h x *y y’ = y + h y *xy’ = y + h y *xRotation: x’ = x*cos  - y*sin x’ = x*cos  - y*sin  y’ = x*sin  + y*cos y’ = x*sin  + y*cos  Transformations can be combined (with simple algebra)

17 Basic 2D Transformations Translation: x’ = x + t xx’ = x + t x y’ = y + t yy’ = y + t yScale: x’ = x * s xx’ = x * s x y’ = y * s yy’ = y * s yShear: x’ = x + h x *yx’ = x + h x *y y’ = y + h y *xy’ = y + h y *xRotation: x’ = x*cos  - y*sin x’ = x*cos  - y*sin  y’ = x*sin  + y*cos y’ = x*sin  + y*cos Translation: x’ = x + t xx’ = x + t x y’ = y + t yy’ = y + t yScale: x’ = x * s xx’ = x * s x y’ = y * s yy’ = y * s yShear: x’ = x + h x *yx’ = x + h x *y y’ = y + h y *xy’ = y + h y *xRotation: x’ = x*cos  - y*sin x’ = x*cos  - y*sin  y’ = x*sin  + y*cos y’ = x*sin  + y*cos 

18 Basic 2D Transformations Translation: x’ = x + t xx’ = x + t x y’ = y + t yy’ = y + t yScale: x’ = x * s xx’ = x * s x y’ = y * s yy’ = y * s yShear: x’ = x + h x *yx’ = x + h x *y y’ = y + h y *xy’ = y + h y *xRotation: x’ = x*cos  - y*sin x’ = x*cos  - y*sin  y’ = x*sin  + y*cos y’ = x*sin  + y*cos Translation: x’ = x + t xx’ = x + t x y’ = y + t yy’ = y + t yScale: x’ = x * s xx’ = x * s x y’ = y * s yy’ = y * s yShear: x’ = x + h x *yx’ = x + h x *y y’ = y + h y *xy’ = y + h y *xRotation: x’ = x*cos  - y*sin x’ = x*cos  - y*sin  y’ = x*sin  + y*cos y’ = x*sin  + y*cos  x’ = x*s x y’ = y*s y x’ = x*s x y’ = y*s y (x,y) (x’,y’)

19 Basic 2D Transformations x’ = (x*s x )*cos  - (y*s y )*sin  y’ = (x*s x )*sin  + (y*s y )*cos  x’ = (x*s x )*cos  - (y*s y )*sin  y’ = (x*s x )*sin  + (y*s y )*cos  (x’,y’) Translation: x’ = x + t xx’ = x + t x y’ = y + t yy’ = y + t yScale: x’ = x * s xx’ = x * s x y’ = y * s yy’ = y * s yShear: x’ = x + h x *yx’ = x + h x *y y’ = y + h y *xy’ = y + h y *xRotation: x’ = x*cos  - y*sin x’ = x*cos  - y*sin  y’ = x*sin  + y*cos y’ = x*sin  + y*cos Translation: x’ = x + t xx’ = x + t x y’ = y + t yy’ = y + t yScale: x’ = x * s xx’ = x * s x y’ = y * s yy’ = y * s yShear: x’ = x + h x *yx’ = x + h x *y y’ = y + h y *xy’ = y + h y *xRotation: x’ = x*cos  - y*sin x’ = x*cos  - y*sin  y’ = x*sin  + y*cos y’ = x*sin  + y*cos 

20 Basic 2D Transformations Translation: x’ = x + t xx’ = x + t x y’ = y + t yy’ = y + t yScale: x’ = x * s xx’ = x * s x y’ = y * s yy’ = y * s yShear: x’ = x + h x *yx’ = x + h x *y y’ = y + h y *xy’ = y + h y *xRotation: x’ = x*cos  - y*sin x’ = x*cos  - y*sin  y’ = x*sin  + y*cos y’ = x*sin  + y*cos Translation: x’ = x + t xx’ = x + t x y’ = y + t yy’ = y + t yScale: x’ = x * s xx’ = x * s x y’ = y * s yy’ = y * s yShear: x’ = x + h x *yx’ = x + h x *y y’ = y + h y *xy’ = y + h y *xRotation: x’ = x*cos  - y*sin x’ = x*cos  - y*sin  y’ = x*sin  + y*cos y’ = x*sin  + y*cos  x’ = ((x*s x )*cos  - (y*s y )*sin  ) + t x y’ = ((x*s x )*sin  + (y*s y )*cos  ) + t y x’ = ((x*s x )*cos  - (y*s y )*sin  ) + t x y’ = ((x*s x )*sin  + (y*s y )*cos  ) + t y (x’,y’)

21 Basic 2D Transformations Translation: x’ = x + t xx’ = x + t x y’ = y + t yy’ = y + t yScale: x’ = x * s xx’ = x * s x y’ = y * s yy’ = y * s yShear: x’ = x + h x *yx’ = x + h x *y y’ = y + h y *xy’ = y + h y *xRotation: x’ = x*cos  - y*sin x’ = x*cos  - y*sin  y’ = x*sin  + y*cos y’ = x*sin  + y*cos Translation: x’ = x + t xx’ = x + t x y’ = y + t yy’ = y + t yScale: x’ = x * s xx’ = x * s x y’ = y * s yy’ = y * s yShear: x’ = x + h x *yx’ = x + h x *y y’ = y + h y *xy’ = y + h y *xRotation: x’ = x*cos  - y*sin x’ = x*cos  - y*sin  y’ = x*sin  + y*cos y’ = x*sin  + y*cos  x’ = ((x*s x )*cos  - (y*s y )*sin  ) + t x y’ = ((x*s x )*sin  + (y*s y )*cos  ) + t y x’ = ((x*s x )*cos  - (y*s y )*sin  ) + t x y’ = ((x*s x )*sin  + (y*s y )*cos  ) + t y

22 Overview 2D Transformations Basic 2D transformationsBasic 2D transformations Matrix representationMatrix representation Matrix compositionMatrix composition 3D Transformations Basic 3D transformationsBasic 3D transformations Same as 2DSame as 2D 2D Transformations Basic 2D transformationsBasic 2D transformations Matrix representationMatrix representation Matrix compositionMatrix composition 3D Transformations Basic 3D transformationsBasic 3D transformations Same as 2DSame as 2D

23 Matrix Representation Represent 2D transformation by a matrix Multiply matrix by column vector  apply transformation to point Represent 2D transformation by a matrix Multiply matrix by column vector  apply transformation to point

24 Matrix Representation Transformations combined by multiplication Matrices are a convenient and efficient way to represent a sequence of transformations!

25 2x2 Matrices What types of transformations can be represented with a 2x2 matrix? 2D Identity? 2D Scale around (0,0)?

26 2x2 Matrices What types of transformations can be represented with a 2x2 matrix? 2D Rotate around (0,0)? 2D Shear?

27 2x2 Matrices What types of transformations can be represented with a 2x2 matrix? 2D Mirror about Y axis? 2D Mirror over (0,0)?

28 2x2 Matrices What types of transformations can be represented with a 2x2 matrix? 2D Translation? Only linear 2D transformations can be represented with a 2x2 matrix NO!

29 Linear Transformations Linear transformations are combinations of … Scale,Scale, Rotation,Rotation, Shear, andShear, and MirrorMirror Properties of linear transformations: Satisfies:Satisfies: Origin maps to originOrigin maps to origin Lines map to linesLines map to lines Parallel lines remain parallelParallel lines remain parallel Ratios are preservedRatios are preserved Closed under compositionClosed under composition Linear transformations are combinations of … Scale,Scale, Rotation,Rotation, Shear, andShear, and MirrorMirror Properties of linear transformations: Satisfies:Satisfies: Origin maps to originOrigin maps to origin Lines map to linesLines map to lines Parallel lines remain parallelParallel lines remain parallel Ratios are preservedRatios are preserved Closed under compositionClosed under composition

30 Homogeneous Coordinates Q: How can we represent translation as a 3x3 matrix?

31 Homogeneous Coordinates Homogeneous coordinates represent coordinates in 2 dimensions with a 3-vectorrepresent coordinates in 2 dimensions with a 3-vector Homogeneous coordinates represent coordinates in 2 dimensions with a 3-vectorrepresent coordinates in 2 dimensions with a 3-vector Homogeneous coordinates seem unintuitive, but they make graphics operations much easier

32 Homogeneous Coordinates Q: How can we represent translation as a 3x3 matrix? A: Using the rightmost column: Q: How can we represent translation as a 3x3 matrix? A: Using the rightmost column:

33 Translation Example of translation   t x = 2 t y = 1 Homogeneous Coordinates

34 Add a 3rd coordinate to every 2D point (x, y, w) represents a point at location (x/w, y/w)(x, y, w) represents a point at location (x/w, y/w) (x, y, 0) represents a point at infinity(x, y, 0) represents a point at infinity (0, 0, 0) is not allowed(0, 0, 0) is not allowed Add a 3rd coordinate to every 2D point (x, y, w) represents a point at location (x/w, y/w)(x, y, w) represents a point at location (x/w, y/w) (x, y, 0) represents a point at infinity(x, y, 0) represents a point at infinity (0, 0, 0) is not allowed(0, 0, 0) is not allowed Convenient coordinate system to represent many useful transformations 1 2 1 2 (2,1,1) or (4,2,2)or (6,3,3) x y

35 Basic 2D Transformations Basic 2D transformations as 3x3 matrices Translate RotateShear Scale

36 Affine Transformations Affine transformations are combinations of … Linear transformations, andLinear transformations, and TranslationsTranslations Properties of affine transformations: Origin does not necessarily map to originOrigin does not necessarily map to origin Lines map to linesLines map to lines Parallel lines remain parallelParallel lines remain parallel Ratios are preservedRatios are preserved Closed under compositionClosed under composition Affine transformations are combinations of … Linear transformations, andLinear transformations, and TranslationsTranslations Properties of affine transformations: Origin does not necessarily map to originOrigin does not necessarily map to origin Lines map to linesLines map to lines Parallel lines remain parallelParallel lines remain parallel Ratios are preservedRatios are preserved Closed under compositionClosed under composition

37 Projective Transformations Projective transformations … Affine transformations, andAffine transformations, and Projective warpsProjective warps Properties of projective transformations: Origin does not necessarily map to originOrigin does not necessarily map to origin Lines map to linesLines map to lines Parallel lines do not necessarily remain parallelParallel lines do not necessarily remain parallel Ratios are not preservedRatios are not preserved Closed under compositionClosed under composition Projective transformations … Affine transformations, andAffine transformations, and Projective warpsProjective warps Properties of projective transformations: Origin does not necessarily map to originOrigin does not necessarily map to origin Lines map to linesLines map to lines Parallel lines do not necessarily remain parallelParallel lines do not necessarily remain parallel Ratios are not preservedRatios are not preserved Closed under compositionClosed under composition

38 Overview 2D Transformations Basic 2D transformationsBasic 2D transformations Matrix representationMatrix representation Matrix compositionMatrix composition 3D Transformations Basic 3D transformationsBasic 3D transformations Same as 2DSame as 2D 2D Transformations Basic 2D transformationsBasic 2D transformations Matrix representationMatrix representation Matrix compositionMatrix composition 3D Transformations Basic 3D transformationsBasic 3D transformations Same as 2DSame as 2D

39 Matrix Composition Transformations can be combined by matrix multiplication p’ = T(t x,t y ) R(  ) S(s x,s y ) p

40 Matrix Composition Matrices are a convenient and efficient way to represent a sequence of transformations General purpose representationGeneral purpose representation Hardware matrix multiplyHardware matrix multiply Matrices are a convenient and efficient way to represent a sequence of transformations General purpose representationGeneral purpose representation Hardware matrix multiplyHardware matrix multiply p’ = (T * (R * (S*p) ) ) p’ = (T*R*S) * p

41 Matrix Composition Be aware: order of transformations matters –Matrix multiplication is not commutative Be aware: order of transformations matters –Matrix multiplication is not commutative p’ = T * R * S * p “Global”“Local”

42 Matrix Composition What if we want to rotate and translate? Ex: Rotate line segment by 45 degrees about endpoint a and lengthenEx: Rotate line segment by 45 degrees about endpoint a and lengthen What if we want to rotate and translate? Ex: Rotate line segment by 45 degrees about endpoint a and lengthenEx: Rotate line segment by 45 degrees about endpoint a and lengthen aa

43 Multiplication Order – Wrong Way Our line is defined by two endpoints Applying a rotation of 45 degrees, R(45), affects both pointsApplying a rotation of 45 degrees, R(45), affects both points We could try to translate both endpoints to return endpoint a to its original position, but by how much?We could try to translate both endpoints to return endpoint a to its original position, but by how much? Our line is defined by two endpoints Applying a rotation of 45 degrees, R(45), affects both pointsApplying a rotation of 45 degrees, R(45), affects both points We could try to translate both endpoints to return endpoint a to its original position, but by how much?We could try to translate both endpoints to return endpoint a to its original position, but by how much? WrongCorrect T(-3) R(45) T(3) R(45) a a a

44 Multiplication Order - Correct Isolate endpoint a from rotation effects First translate line so a is at origin: T (-3)First translate line so a is at origin: T (-3) Then rotate line 45 degrees: R(45)Then rotate line 45 degrees: R(45) Then translate back so a is where it was: T(3)Then translate back so a is where it was: T(3) Isolate endpoint a from rotation effects First translate line so a is at origin: T (-3)First translate line so a is at origin: T (-3) Then rotate line 45 degrees: R(45)Then rotate line 45 degrees: R(45) Then translate back so a is where it was: T(3)Then translate back so a is where it was: T(3) a a a a

45 Will this sequence of operations work? Matrix Composition

46 After correctly ordering the matrices Multiply matrices together What results is one matrix – store it (on stack)! Multiply this matrix by the vector of each vertex All vertices easily transformed with one matrix multiply After correctly ordering the matrices Multiply matrices together What results is one matrix – store it (on stack)! Multiply this matrix by the vector of each vertex All vertices easily transformed with one matrix multiply

47 Overview 2D Transformations Basic 2D transformationsBasic 2D transformations Matrix representationMatrix representation Matrix compositionMatrix composition 3D Transformations Basic 3D transformationsBasic 3D transformations Same as 2DSame as 2D 2D Transformations Basic 2D transformationsBasic 2D transformations Matrix representationMatrix representation Matrix compositionMatrix composition 3D Transformations Basic 3D transformationsBasic 3D transformations Same as 2DSame as 2D

48 3D Transformations Same idea as 2D transformations Homogeneous coordinates: (x,y,z,w)Homogeneous coordinates: (x,y,z,w) 4x4 transformation matrices4x4 transformation matrices Same idea as 2D transformations Homogeneous coordinates: (x,y,z,w)Homogeneous coordinates: (x,y,z,w) 4x4 transformation matrices4x4 transformation matrices

49 Basic 3D Transformations IdentityScale TranslationMirror about Y/Z plane

50 Basic 3D Transformations Rotate around Z axis: Rotate around Y axis: Rotate around X axis:

51 Reverse Rotations Q: How do you undo a rotation of  R(  )? A: Apply the inverse of the rotation… R -1 (  ) = R(-  ) How to construct R-1(  ) = R(-  ) Inside the rotation matrix: cos(  ) = cos(-  )Inside the rotation matrix: cos(  ) = cos(-  ) –The cosine elements of the inverse rotation matrix are unchanged The sign of the sine elements will flipThe sign of the sine elements will flip Therefore… R -1 (  ) = R(-  ) = R T (  ) Q: How do you undo a rotation of  R(  )? A: Apply the inverse of the rotation… R -1 (  ) = R(-  ) How to construct R-1(  ) = R(-  ) Inside the rotation matrix: cos(  ) = cos(-  )Inside the rotation matrix: cos(  ) = cos(-  ) –The cosine elements of the inverse rotation matrix are unchanged The sign of the sine elements will flipThe sign of the sine elements will flip Therefore… R -1 (  ) = R(-  ) = R T (  )

52 Summary Coordinate systems World vs. modeling coordinatesWorld vs. modeling coordinates 2-D and 3-D transformations Trigonometry and geometryTrigonometry and geometry Matrix representationsMatrix representations Linear vs. affine transformationsLinear vs. affine transformations Matrix operations Matrix compositionMatrix composition Coordinate systems World vs. modeling coordinatesWorld vs. modeling coordinates 2-D and 3-D transformations Trigonometry and geometryTrigonometry and geometry Matrix representationsMatrix representations Linear vs. affine transformationsLinear vs. affine transformations Matrix operations Matrix compositionMatrix composition


Download ppt "Introduction to Computer Graphics CS 445 / 645 Lecture 5 Transformations Transformations M.C. Escher – Smaller and Smaller (1956)"

Similar presentations


Ads by Google