2D Geometric Transformations

(Chapter 5 in FVD)

1 2D

• Scaling • • Shear • Matrix notation • Compositions • Homogeneous coordinates

2 2D Geometric Transformations • Question: How do we represent a geometric object in the plane? • Answer: For now, assume that objects consist of points and lines. A point is represented by its Cartesian coordinates: (x,y).

• Question: How do we transform a geometric object in the plane? • Answer: Let (A,B) be a straight line segment and T a general 2D transformation: T transforms (A,B) into another straight line segment (A’,B’), where A’=TA and B’=TB.

3 Translation

• Translate (a,b): (x,y) (x+a,y+b)

Translate(2,4)

4 Scale

• Scale (a,b): (x,y) (ax,by)

Scale (2,3)

Scale (2,3)

5 • How can we scale an object without moving its origin (lower left corner)?

Translate(-1,-1)

Translate(1,1) Scale(2,3)

6

Scale(-1,1)

Scale(1,-1)

7 Rotation

• Rotate(q): (x,y) (x cos(q)+y sin(q), -x sin(q)+y cos(q))

Rotate(90)

Rotate(90)

8 • How can we rotate an object without moving its origin (lower left corner)?

Translate(-1,-1)

Translate(1,1) Rotate(90)

9 Shear

• Shear (a,b): (x,y) (x+ay,y+bx)

Shear(1,0)

Shear(0,2)

10 Composition of Transformations

• Rigid transformation: – Translation + Rotation (distance preserving). • transformation: – Translation + Rotation + uniform Scale (angle preserving). • : – Translation + Rotation + Scale + Shear (parallelism preserving). • All above transformations are groups where Rigid  Similarity  Affine.

11 Affine

Similarity

Rigid

12 Matrix Notation

• Let’s treat a point (x,y) as a 2x1 matrix (a column vector): x    y

• What happens when this vector is multiplied by a 2x2 matrix?

a bx ax  by       c d y cx  dy

13 2D Transformations

• 2D object is represented by points and lines that join them. • Transformations can be applied only to the the points defining the lines. • A point (x,y) is represented by a 2x1 column vector, and we can represent 2D transformations using 2x2 matrices:

x' a bx        y' c d y

14 Scale

• Scale(a,b): (x,y) (ax,by)

a 0x ax       0 b y by

• If a or b are negative, we get reflection.

• Inverse: S-1(a,b)=S(1/a,1/b)

15 Reflection • Reflection through the y axis: 1 0    0 1 • Reflection through the x axis: 1 0   0 1 • Reflection through y=x:

0 1   1 0 • Reflection through y=-x:  0 1   1 0 16 Shear, Rotation

• Shear(a,b): (x,y) (x+ay,y+bx)

1 ax x  ay       b 1y y  bx

• Rotate(q): (x,y) (xcosq+ysinq , -xsinq + ycosq)

 cosq sinq x  xcosq  ysinq         sinq cosq y  xsinq  y cosq  • Inverse: R-1(q)=RT(q)=R(-q)

17 Composition of Transformations

• A sequence of transformations can be collapsed into a single matrix: x x ABC   D  y y • Note: order of transformations is important! (otherwise - commutative groups)

translate rotate

rotate translate

18 Composition of Transformations (Cont.)

D = A B C

D-1 = C-1B-1A-1

Proof:

D * D-1 = ABC * C-1B-1A-1 = AB*I*B-1*A-1= A*I*A = I

19 Translation x x  a • Translation(a,b):      y y  b • Problem: Cannot represent translation using 2x2 matrices.

• Solution: Homogeneous Coordinates

20 Homogeneous Coordinates • Homogeneous Coordinates is a mapping from Rn to Rn+1:

(x, y)  (X,Y,W)  (tx,ty,t)

• Note: (tx,ty,t) all correspond to the same non-homogeneous point (x,y). E.g. (2,3,1)(6,9,3).

• Inverse mapping:  X Y  (X ,Y,W )   ,  W W 

21 Translation

• Translate(a,b):

1 0 ax x  a      0 1 by  y  b 0 0 11  1 

• Inverse: T-1(a,b)=T(-a,-b) • Affine transformation now have the following form:

a b e    c d f  0 0 1 

22 Geometric Interpretation W

Y (X,Y,W) 1 y x (X,Y,1)

X • A 2D point is mapped to a line (ray) in 3D. The non-homogeneous points are obtained by projecting the rays onto the plane Z=1.

23 • Example: Rotation about an arbitrary point:

(x0,y0)

q • Actions: – Translate the coordinates so that the

origin is at (x0,y0). – Rotate by q. – Translate back.

1 0 x0  cosq sinq 01 0 x0 x 0 1 y sinq cosq 00 1  y y   0   0   0 0 1 0 0 10 0 1 1

cosq sinq x0 (1cosq ) y0 sinq x sinq cosq y (1cosq )x sinq y  0 0    0 0 1 1

24 • Another example: Reflection about an Arbitrary Line:

p2

p1

L=p1+t (p2-p1)=t p2+(1-t) p1

• Actions:

– Translate the coordinates so that P1 is at the origin. – Rotate so that L aligns with the x- axis. – Reflect about the x-axis. – Rotate back. – Translate back.

25 Change of Coordinates

• It is often requires the transformation of object description from one coordinate system to another. • How do we transform between two Cartesian coordinate systems? • Rule: Transform one coordinate frames towards the other in the opposite direction of the representation change.

y’ x’

y

x

26 Change of Coordinates (Cont.)

Example:

X

P’

O Y

X’

P

O’ Y’

27 • Example:

– Represent the point P=(xp,yp,1) in the (x’,y’) coordinate system.

P'MP

where

cosq  sinq 01 0  x0  1 1    M  R T   sinq cosq 00 1  y0      0 0 10 0 1 

y’ y x’

q

(x0,y0) (xp,yp) x

28 • Alternative method:

– Assume x’=(ux,uy) and y’=(vx,vy) in the (x,y) coordinate system .

P'MP

where

u u 01 0 x   x y  0  M vx vy 00 1  y0      0 0 10 0 1 

y’ y x’

(vx,vy) (ux,uy) (x0,y0)

x

29 • Example:

– P is at the y’ axis P=(vx,vy):

y

(vx,vy) (ux,uy)

y’ x’ x

u u 0  x y  vx  0      P' MP   vx vy 0 vy   1    1  0 0 1 1   

– What is the inverse?

30 • Another example: Reflection about an Arbitrary Line: p y 2

p1

x

• Define a coordinate systems (u,v)

parallel to P1P2: p  p u  u  2 1  x u  p2  p1  y 

 u  v  v  y  x   v   ux   y 

1 0 p u v 0 u u 01 0  p   1x  x x 1 0 0 x y  1x  M  0 1 p u v 0 0 1 0 v v 0 0 1  p  1y  y y   x y  1y    0 0 1   0 0 1  0 0 1  0 0 10 0 1 

31