Lab 6 Transformation
Lab 6 Transformation
y
x
x y
x
2D Transformation
Given a 2D object, transformation is to
change the object’s
Position (translation)
Size (scaling)
Orientation (rotation)
Shapes (shear)
Apply a sequence of matrix
multiplication to the object vertices
Point representation
We can use a column vector (a 2x1
matrix) to represent a 2D point x
y
Translation is a rigid-body
transformation
Translation
Re-position a point along a straight line
Given a point (x,y), and the translation
distance (tx,ty)
The new point: (x’, y’) P’(x’,y’)
x’ = x + tx
ty
y’ = y + ty P(x,y)
tx
OR P’ = P + T where P’ = x’ p= x T = tx
y’ y ty
Translation
How to translate an object with
multiple vertices?
Translate individual
vertices
2D Rotation
Default rotation center: Origin
(0,0) is rigid-body
Rotation
transformation
Rotate clockwise
Rotation
(x,y) -> Rotate about the origin by (x’,y’)
Matrix form?
x’ =
cos() -sin() x
y’ sin() cos() y
3 x 3?
3x3 2D Rotation Matrix
x’ =
cos() -sin() x (x’,y’)
y’ sin() cos() y
(x,y)
r
x’ =
cos() -sin() 0 x
y’ sin() cos() 0 y
1 0 0 1 1
Rotation
How to rotate an object with
multiple vertices?
* A positive value for the angle θ defines a
counterclockwise
rotation about the pivot point
Rotate individual
Vertices
2D Scaling
x’ = x . Sx x’ Sx 0 x
=
y’ = y . Sy y’ 0 Sy y
(4,4
)
(2,2) Sx = 2, Sy = 2
(2,2)
(1,1)
2D Scaling
(4,4
)
(2,2) Sx = 2, Sy = 2
(2,2)
(1,1)
x’ Sx 0 0 x
y’ = 0 Sy 0 * y
1 0 0 1 1
Put it all together
Translation: x’= x+ tx
y’ y ty
Scaling: x’ = Sx 0 * x
y’ 0 Sy y
Or, 3x3 Matrix
representations
Translation: x’ 1 0 tx x
y’ = 0 1 ty * y
1 0 0 1 1
(px,py)
Arbitrary Rotation Center
Translate the object so that P will coincide
with the origin: T(-px, -py)
Rotate the object: R()
Translate the object back: T(px,py)
(px,py)
Composing Transformation
Composing Transformation – the process of
applying several transformation in succession
to form one overall transformation
If we apply transform a point P using M1
matrix first, and then transform using M2, and
then M3, then we have:
(M3 x (M2 x (M1 x P ))) = M3 x M2 x M1 x
P (pre-multiply)
M
Composing Transformation
Matrix multiplication is associative
M3 x M2 x M1 = (M3 x M2) x M1 = M3 x (M2 x M1)
Transformation products may not be commutative Ax
B != B x A
Some cases where A x B = B x A
A B
translation translation
scaling scaling
rotation rotation
uniform scaling rotation
(sx = sy)
Transformation order
matters!
Example: rotation and translation are not
commutative
Translate (5,0) and then Rotate 60 degree
OR
x x