2D Transformations: Larry F. Hodges (Modified by Amos Johnson)
2D Transformations: Larry F. Hodges (Modified by Amos Johnson)
(x2,y2)
(x1,y1)
B A
x-axis
From the illustration we know that: sin (A + B) = y2/r cos (A + B) = x2/r sin A = y1/r cos A = x1/r
Substituting:
Therefore: We have
P2 =
P1
Translations
Moving an object is called a translation. We translate a point by adding to the x and y coordinates, respectively, the amount the point should be shifted in the x and y directions. We translate an object by translating each vertex in the object. P2 = P 1 + T
Ty
Tx
P1 = ( x1 ) ( y1 )
T = ( tx ) ( ty )
Scaling
Changing the size of an object is called a scale. We scale an object by scaling the x and y coordinates of each vertex in the object. P2 = S .P1
S = (sx 0) (0 sy)
P1 = ( x1 ) ( y1 )
P2 = (sxx1) (syy1)
Homogeneous Coordinates
Although the formulas we have shown are usually the most efficient way to implement programs to do scales, rotations and translations, it is easier to use matrix transformations to represent and manipulate them. In order to represent a translation as a matrix operation we use 3 x 3 matrices and pad our points to become 1 x 3 matrices. cos sin 0 Sx 0 0 1 0 0 -sin cos 0 0 Sy 0 0 1 0 0 0 1 0 0 1 Tx Ty 1
R =
S =
T =
Larry F. Hodges (modified by Amos Johnson)
Before After
10
Before After
10
(0,0) is known as a fixed point for the basic scaling transformation. We can used composite transformations to create a scale transformation with different fixed points.
Larry F. Hodges (modified by Amos Johnson)
Before After
10
10
10
(1 0 x) (0 1 y) (0 0 1)
Larry F. Hodges (modified by Amos Johnson)
(cos -sin 0)(1 0 -x) (cos -sin -xcos + ysin + x ) (sin cos 0)(0 1 -y) = (sin cos -xsin - ycos + y ) (0 0 1)(0 0 1) (0 0 1 ) You rotate the box by rotating each vertex. 11
Shears
Original Data
y Shear 1 0 0 a 1 0 0 0 1
x Shear 1 b 0 0 1 0 0 0 1
Reflections
Reflection about the y-axis -1 0 0 0 0 1 0 1 0 0 0 1 Reflection about the x-axis 1 0 0 0 -1 0
13
More Reflections
Reflection about the origin -1 0 0 0 -1 0 0 0 1 Reflection about the line y=x 0 1 0 1 0 0 0 0 1
14