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 :

Point representation We can use a column vector (a 2x1 matrix) to represent a 2D point x
y
A general form of linear transformation can be written as:
x’ = ax + by + c
OR
y’ = dx + ey + f

Translation :

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’)
x’ = x + tx
y’ = y + ty OR P’ = P + T where P’ = x’ p = x T = tx
y’ y ty tx ty

3x3 2D Translation Matrix :

3x3 2D Translation Matrix Use 3 x 1 vector Note that now it becomes a matrix-vector multiplication

Translation :

Translation How to translate an object with multiple vertices?

Rotation (x,y) -> Rotate about the origin by q How to compute (x’, y’) ? x = r cos (f) y = r sin (f) r x’ = r cos (f + q) y = r sin (f + q)

Rotation :

Rotation r x = r cos (f) y = r sin (f) x’ = r cos (f + q) y = r sin (f + q) x’ = r cos (f + q)
= r cos(f) cos(q) – r sin(f) sin(q) = x cos(q) – y sin(q) y’ = r sin (f + q)
= r sin(f) cos(q) + r cos(f)sin(q) = y cos(q) + x sin(q)

Rotation :

Rotation r x’ = x cos(q) – y sin(q) y’ = y cos(q) + x sin(q) Matrix form? 3 x 3?

3x3 2D Rotation Matrix :

3x3 2D Rotation Matrix

Slide 12:

Rotation How to rotate an object with multiple vertices?

2D Scaling :

2D Scaling Scale: Alter the size of an object by a scaling factor
(Sx, Sy), i.e.

2D Scaling :

2D Scaling Not only the object size is changed, it also moved!!
Usually this is an undesirable effect
We will discuss later (soon) how to fix it

3x3 2D Scaling Matrix :

3x3 2D Scaling Matrix

Put it all together :

Put it all together Translation: x’ x tx
y’ y ty
Rotation: x’ cos(q) -sin(q) x
y’ sin(q) cos(q) y
Scaling: x’ Sx 0 x
y’ 0 Sy y = + = * = *

Or, 3x3 Matrix representations :

Or, 3x3 Matrix representations Translation:
Rotation:
Scaling:
Why use 3x3 matrices? x’ cos(q) -sin(q) 0 x
y’ sin(q) cos(q) 0 * y
1 0 0 1 1 = x’ Sx 0 0 x
y’ = 0 Sy 0 * y
1 0 0 1 1

Why use 3x3 matrices? :

Why use 3x3 matrices? So that we can perform all transformations using matrix/vector multiplications
This allows us to pre-multiply all the matrices together
The point (x,y) needs to be represented as
(x,y,1) -> this is called Homogeneous
coordinates!

Shearing :

Shearing Y coordinates are unaffected, but x cordinates are translated linearly with y
That is:
y’ = y
x’ = x + y * h

Slide 20:

Shearing in y

Slide 21:

Rotation Revisit The standard rotation matrix is used to rotate about the origin (0,0) cos(q) -sin(q) 0
sin(q) cos(q) 0
0 0 1

Arbitrary Rotation Center :

Arbitrary Rotation Center To rotate about an arbitrary point P (px,py) by q:
Translate the object so that P will coincide with the origin: T(-px, -py)
Rotate the object: R(q)
Translate the object back: T(px,py)

Slide 23:

Arbitrary Rotation Center Translate the object so that P will coincide with the origin: T(-px, -py)
Rotate the object: R(q)
Translate the object back: T(px,py)
Put in matrix form: T(px,py) R(q) T(-px, -py) * P

Slide 24:

Scaling Revisit The standard scaling matrix will only anchor at (0,0) Sx 0 0
0 Sy 0
0 0 1

Slide 25:

Arbitrary Scaling Pivot To scale about an arbitrary pivot point P (px,py):
Translate the object so that P will coincide with the origin: T(-px, -py)
Rotate the object: S(sx, sy)
Translate the object back: T(px,py) (px,py)

Affine Transformation :

Affine Transformation Translation, Scaling, Rotation, Shearing are all affine transformation
Affine transformation – transformed point P’ (x’,y’) is a linear combination of the original point P (x,y), i.e.
x’ m11 m12 m13 x
y’ = m21 m22 m23 y
1 0 0 1 1
Any 2D affine transformation can be decomposed into a rotation, followed by a scaling, followed by a shearing, and followed by a translation.
Affine matrix = translation x shearing x scaling x rotation

Composing Transformation :

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

Composing Transformation :

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 A x 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! :

Transformation order matters! Example: rotation and translation are not commutative Translate (5,0) and then Rotate 60 degree
OR
Rotate 60 degree and then translate (5,0)?? Rotate and then translate !!

How OpenGL does it? :

How OpenGL does it? OpenGL’s transformation functions are meant to be used in 3D
No problem for 2D though – just ignore the z dimension
Translation:
glTranslatef(d)(tx, ty, tz) -> glTranslatef(d)tx,ty,0) for 2D

Slide 31:

How OpenGL does it? Rotation:
glRotatef(d)(angle, vx, vy, vz) -> glRotatef(d)(angle, 0,0,1) for 2D (vx, vy, vz) – rotation axis x y You can imagine z is pointing out
of the slide

OpenGL Transformation Composition :

OpenGL Transformation Composition A global modeling transformation matrix
(GL_MODELVIEW, called it M here)
glMatrixMode(GL_MODELVIEW)
The user is responsible to reset it if necessary
glLoadIdentity()
-> M = 1 0 0
0 1 0
0 0 1

Slide 33:

OpenGL Transformation Composition Matrices for performing user-specified transformations are multiplied to the model view global matrix
For example,
1 0 1
glTranslated(1,1 0); M = M x 0 1 1
0 0 1
All the vertices P defined within glBegin() will first go through the transformation (modeling transformation)
P’ = M x P

Transformation Pipeline :

Transformation Pipeline Modeling
transformation …

You do not have the permission to view this presentation. In order to view it, please
contact the author of the presentation.

Send to Blogs and Networks

Processing ....

Premium member

Use HTTPs

HTTPS (Hypertext Transfer Protocol Secure) is a protocol used by Web servers to transfer and display Web content securely. Most web browsers block content or generate a “mixed content” warning when users access web pages via HTTPS that contain embedded content loaded via HTTP. To prevent users from facing this, Use HTTPS option.