2IV60 Computer Graphics 2D Transformations

2IV60 Computer Graphics 2D Transformations

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.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    57 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us