2D Transformations : 2D Transformations
Rotation About the Origin : Rotation About the Origin To rotate a line or polygon, we must rotate each of its vertices.
To rotate point (x1,y1) to point (x2,y2) we observe:
From the illustration we know that:
sin (A + B) = y2/r cos (A + B) = x2/r
sin A = y1/r cos A = x1/r x-axis
Rotation About the Origin : Rotation About the Origin From the double angle formulas: sin (A + B) = sinAcosB + cosAsinB
cos (A + B)= cosAcosB - sinAsinB
Substituting: y2/r = (y1/r)cosB + (x1/r)sinB
Therefore: y2 = y1cosB + x1sinB
We have x2 = x1cosB - y1sinB
y2 = x1sinB + y1cosB
Translations : 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 = P1 + T T = ( tx )
( ty ) P1 = ( x1 )
( y1 ) P2 = (x1 + tx)
(y1 + ty)
Scaling : 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 : 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
Rø = sin ø cos ø 0
0 0 1
Sx 0 0
S = 0 Sy 0
0 0 1
1 0 Tx
T = 0 1 Ty
0 0 1 Point P = (x)
(y)
(1)
Composite Transformations - Scaling : Composite Transformations - Scaling Given our three basic transformations we can create other transformations.
Scaling with a fixed point
A problem with the scale transformation is that it also moves the object being scaled.
Scale a line between (2, 1) (4,1) to twice its length.
(2 0 0) =
(0 1 0)
(0 0 1)
(2 0 0) =
(0 1 0)
(0 0 1) (2)
(1)
(1) (4)
(1)
(1) (4)
(1)
(1) (8)
(1)
(1)
Composite Transforms - Scaling (cont.) : Composite Transforms - Scaling (cont.) If we scale a line between (0, 1) (2,1) to twice its length, the left-hand endpoint does not move.
(2 0 0) =
(0 1 0)
(0 0 1)
(2 0 0) =
(0 1 0)
(0 0 1) (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. (0)
(1)
(1) (0)
(1)
(1) (2)
(1)
(1) (0)
(1)
(1)
Fixed Point Scaling : Fixed Point Scaling Scale by 2 with fixed point = (2,1)
Translate the point (2,1) to the origin
Scale by 2
Translate origin to point (2,1)
(1 0 2) (2 0 0) (1 0 -2) = (2 0 -2)
(0 1 1) (0 1 0) (0 1 -1) (0 1 0)
(0 0 1) (0 0 1) (0 0 1) (0 0 1)
(2 0 -2) =
(0 1 0)
(0 0 1)
(2 0 -2) =
(0 1 0)
(0 0 1) (2)
(1)
(1) (2)
(1)
(1) (4)
(1)
(1) (6)
(1)
(1)
More Fixed Point Scaling : More Fixed Point Scaling Scale by 2 with fixed point = (3,1)
Translate the point (3,1) to the origin
Scale by 2
Translate origin to point (3,1)
(1 0 3) (2 0 0) (1 0 -3) = (2 0 -3)
(0 1 1) (0 1 0) (0 1 -1) (0 1 0)
(0 0 1) (0 0 1) (0 0 1) (0 0 1)
(2 0 -3) =
(0 1 0)
(0 0 1)
(2 0 -3) =
(0 1 0)
(0 0 1) (2)
(1)
(1) (1)
(1)
(1) (4)
(1)
(1) (5)
(1)
(1)
Rotation about a Fixed Point : Rotation about a Fixed Point Rotation of ø Degrees About Point (x,y)
Translate (x,y) to origin
Rotate
Translate origin to (x,y) (1 0 x) (cosø -sinø 0)(1 0 -x) (cosø -sinø -xcosø + ysinø + x )
(0 1 y) (sinø cosø 0)(0 1 -y) = (sinø cosø -xsinø - ycosø + y )
(0 0 1) (0 0 1)(0 0 1) (0 0 1 )
You rotate the box by rotating each vertex.
Shears : Shears Original Data y Shear x Shear
1 0 0 1 b 0
a 1 0 0 1 0
0 0 1 0 0 1
GRAPHICS --> x shear --> GRAPHICS
Reflections : Reflections Reflection about the y-axis Reflection about the x-axis
-1 0 0 1 0 0
0 1 0 0 -1 0
0 0 1 0 0 1
More Reflections : More Reflections Reflection about the origin Reflection about the line y=x
-1 0 0 0 1 0
0 -1 0 1 0 0
0 0 1 0 0 1