
2IV60 Computer Graphics 2D transformations Jack van Wijk TU/e Overview • Why transformations? • Basic transformations: – translation, rotation, scaling • Combining transformations – homogenous coordinates, transform. Matrices • First 2D, next 3D Transformations instantiation… world train animation… viewing… wheel modelling… image Why transformation? • Model of objects world coordinates: km, mm, etc. Hierarchical models:: human = torso + arm + arm + head + leg + leg arm = upperarm + lowerarm + hand … • Viewing zoom in, move drawing, etc. • Animation Translation y Translate over vector (tx, ty) x’=x+ tx, y’=y+ ty T P+T or P P'= P + T, with x x' x t x P'= ,P = and T = y' y t y H&B 7-1:220-222 Translation polygon Translate polygon: y Apply the same operation on all points. T Works always, for all x transformations of objects defined as a set of points. H&B 7-1:220-222 Rotation Rotate over an angle α : y x'= xcosα − ysinα P’ y'= xsinα + y cosα α P Or x P'= RP, with x' cosα − sinα x P'= ,R = and P = y' sinα cosα y H&B 7-1:222-223 Rotation around a point Q Rotate around origin : y P’ Px '= Px cosα − Py sinα α P '= P sinα + P cosα P y x y P−Q Q Rotate around Q over an angle α : x Px '= Qx + (Px − Qx )cosα − (Py − Qy )sinα Py '= Qy + (Px − Qx )sinα + (Py − Qy )cosα H&B 7-1:222-223 Scaling y Schale with factor sx and sy: P’ x’= sx x, y’= sy y or P Q’ P'= SP, with Q x x' s 0 x x P'= ,S = and P = y' 0 sy y H&B 7-1:224-225 Scaling with respect to a point F y Scale with factors sx and sy: P’ Px’= sx Px, Py’= syPy P With respect to F: P−F Q’ F Q Px’ − Fx = sx (Px − Fx), x Py’ − Fy = sy (Py − Fy) or Px’= Fx + sx (Px − Fx), Py’= Fy + sy (Py − Fy) H&B 7-1:224-225 Transformations y • Translate with V: S T = P + V R T • Schale with factor sx = sy =s: P S = sP x • Rotate over angle α: R’x = cos α Px − sin α Py R’y = sin α Px + cos α Py H&B 7-2:225-228 Transformations… • Messy! • Transformations with respect to points: even more messy! • How to combine transformations? H&B 7-2:225-228 Homogeneous coordinates 1 • Uniform representation of translation, rotation, scaling • Uniforme representation of points and vectors • Compact representation of sequence of transformations H&B 7-2:225-228 Homogeneous coordinaten 2 • Add extra coordinate: P = (px , py , ph) or x = (x, y, h) • Cartesian coordinates: divide by h x = (x/h, y/h) • Points: h = 1 (for the time being…), vectors: h = 0 H&B 7-2:225-228 Translation matrix Translation : x' 1 0 t x x y' =0 1 t y y 1 0 0 1 1 or P'= T(tx ,t y )P H&B 7-2:225-228 Rotation matrix Rotation : x' cosθ − sinθ 0 x y' = sinθ cosθ 0 y 1 0 0 1 1 or P'= R(θ )P H&B 7-2:225-228 Scaling matrix Scaling : x' s 0 0 x x y' = 0 sy 0 y 1 0 0 1 1 or P'= S(sx ,sy )P H&B 7-2:225-228 Inverse transformations Translation : -1 T (tx ,t y ) = T(−tx ,−t y ) Rotation : R-1(θ ) = R(−θ ) Scaling : −1 1 1 S (sx ,sy ) = S( , ) sx sy H&B 7-3:228 Combining transformations 1 ' P = M1P first transformation... '' ' P = M2P second transformation... Combined : '' P = M2 (M1P) = M2M1P = MP with M = M2M1 H&B 7-4:228-229 Combining transformations 2 ' P = T(t1x ,t1y )P first translation '' ' P = T(t2x ,t2 y )P second translation Combined : '' P = T(t2x ,t2 y )T(t1x ,t1y )P 1 0 t 1 0 t 1 0 t + t 2x 1x 1x 2x = 0 1 t2 y 0 1 t1y P = 0 1 t1y + t2 y P 0 0 1 0 0 1 0 0 1 = T(t1x + t2x ,t1x + t2 y )P H&B 7-4:229 Combining transformations 3 Composite translations : T(t2x ,t2 y )T(t1x ,t1y ) = T(t1x + t2x ,t1x + t2 y ) Composite rotations : R(θ2 )R(θ1) = R(θ1 +θ2 ) Composite scaling : S(s2x ,s2 y )S(s1x ,s1y ) = S(s1xs2x ,s1y s2 y ) H&B 7-4:229 Rotation around a point 1 Rotate over angle θ around point R : 1) Translate such that R coincides with origin; 2) Rotate over angle θ around origin; 3) Translate back. R 1) 2) 3) H&B 7-4:229-230 Rotation around a point 2 Rotate over angle θ around point R : ' 1) P = T(−Rx,− Ry )P 2) P'' = R(θ )P' ''' '' 3) P = T(Rx,Ry )P R 1) 2) 3) H&B 7-4:229-230 Rotation around point 3 ' 1) P = T(−Rx,− Ry )P '' ' 2) P = R(θ )P = R(θ )T(−Rx,− Ry )P ''' '' 3) P = T(Rx,Ry )P ' = T(Rx,Ry )R(θ )P = T(Rx,Ry )R(θ )T(−Rx,− Ry )P R 1) 2) 3) H&B 7-4:229-230 Rotation around point 4 ''' 1- 3) P = T(Rx,Ry )R(θ )T(−Rx,− Ry )P or cosθ − sinθ R (1− cosθ ) + R sinθ x y ''' P = sinθ cosθ Ry (1− cosθ ) − Rx sinθ P 0 0 1 R 1) 2) 3) H&B 7-4:229-230 Scaling w.r.t. point 1 Scale with factors sx and sx w.r.t. point F : 1) Translate such that F coincides with origin; 2) Schale w.r.t. origin; 3) Translate back again. F 1) 2) 3) H&B 7-4:230-231 Scaling w.r.t.point 2 Schale w.r.t. point F : ' 1) P = T(−Fx,− Fy )P '' ' 2) P = S(sx ,sy )P ''' '' 3) P = T(Fx,Fy )P F 1) 2) 3) H&B 7-4:230-231 Scaling w.r.t.point 3 ''' 1- 3) P = T(Fx,Fy )S(sx ,sy )T(−Fx,− Fy )P or s 0 F (1− s ) x x x ''' P = 0 sy Fy (1− sy )P 0 0 1 F 1) 2) 3) H&B 7-4:230-231 Scale in other directions 1 Scale with factors s1 and s2 w.r.t. rotated frame: 1) Rotate such that frame coincides with standard xy - frame; 2) Scale w.r.t. origin; 3) Rotate back again. 1) 2) 3) H&B 7-4:230-231 Scale in other directions 2 Scale in other direction : 1) P' = R(θ )P '' ' 2) P = S(s1,s2 )P 3) P''' = R(−θ )P'' 1) 2) 3) H&B 7-4:230-231 Scale in other directions 3 ''' 1- 3) P = R(−θ )S(s1,s2 )R(θ )P or 2 2 s1 cos θ + s2 sin θ (s2 − s1)cosθ sinθ 0 P''' = (s − s )cosθ sinθ s sin2 θ + s cos2 θ 0P 2 1 1 2 0 0 1 1) 2) 3) H&B 7-4:230-231 Order of transformations 1 Rotation, translation… Translation, rotation… y’ y y x’ x x Matrix multiplication does not commute. x''= T(2,3)R x''= R(30)T( The order of transformations makes a difference! H&B 7-4:232 Order of transformations 2 • Pre-multiplication: P’ = M n M n-1…M 2 M 1 P Transformation M n in global coordinates • Post-multiplication: P’ = M 1 M 2…M n-1 M n P Transformation M n in local coordinates: the coordinate system after application of M 1 M 2…M n-1 H&B 7-4:232 Order of transformations 3 OpenGL: glRotate, glScale, etc.: • Post-multiplication of current transformation matrix • Always transformation in local coordinates • Global coordinate version: read in reverse order H&B 7-4:232 Order of transformations 4 Local transformations: Global transformations: y y x x Local trafo x''= R(30)T( glTranslate(…); Global trafo interpretation glRotate(…); interpretation H&B 7-4:232 Matrices in general rotation and scaling translation H&B 7-4:233-235 Direct construction of matrix If you know the target frame: Construct matrix directly. y Define shape in nice local u,v coordinates, use matrix transformation to put it B in x,y space. A T x H&B 7-4:233-235 Direct construction of matrix If you know the target frame: Construct matrix directly. y P'= Au + Bv + T , or x u = ( ) y A B T v , or B 1 1 A x A B T u x x x T y = Ay By Ty v x 1 0 0 1 1 H&B 7-4:233-235 Rigid body transformation only rotation P'= MP , of translation x r r tr u xx xy x y y = ryx ryy try v B 1 0 0 1 1 A T r r xx xy x : orthonormal submatrix ryx ryy r r xx xy A = and B = , | A |=1,| B |=1,A ⋅B = 0 ryx ryy H&B 7-4:233-235 Other 2D transformations • Reflection • Shear Can also be combined H&B 7-4:240 Reflection over axis Reflext over x-axis: y x’= x, y’= −y or 1 0 0 x P'= 0 −1 0P 0 0 1 H&B 7-4:240-242 Reflect over origin Reflect over origin: y x’= −x, y’= − y or −1 0 0 x P'= 0 −1 0P 0 0 1 Same as P'= R(180)P H&B 7-4:240-242 Shear Shear the y-as: y x’=x+fy, y’=y θ or 1 f 0 x P'= 0 1 0P 0 0 1 with f = tanθ H&B 7-4:242-243 Transformations coordinates Given (x,y)-coordinates, y Find (x’,y’)-coordinates.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages57 Page
-
File Size-