2d transformations n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
2D Transformations PowerPoint Presentation
Download Presentation
2D Transformations

Loading in 2 Seconds...

play fullscreen
1 / 27

2D Transformations - PowerPoint PPT Presentation


  • 339 Views
  • Uploaded on

2D Transformations. y. 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). Point representation.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '2D Transformations' - paul


Download Now An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
2d transformation
2D Transformation
  • Given a 2D object, transformation is to change the object’s
    • Position (translation)
    • Size (scaling)
    • Orientation (rotation)
    • Shapes (shear)
point representation
Point representation
  • We can use a column vector (a 2x1 matrix) to represent a 2D point x

y

translation

Translate individual

vertices

Translation
  • How to translate an object with multiple vertices?
translation1

(x’,y’)

(x,y)

Translation
  • Re-position a point along a straight line
  • Given a point (x,y), and the translation distance or vector (tx,ty)

The new point: (x’, y’)

x’ = x + tx

y’ = y + ty

ty

tx

OR P’ = P + T where P’ = x’ p = x T = tx

y’ y ty

2d rotation

q

2D Rotation
  • Default rotation center: Origin (0,0)
  • > 0 : Rotate counter clockwise

q

  • < 0 : Rotate clockwise
rotation

(x’,y’)

(x’, y’)

q

f

(x,y)

Rotation

(x,y) -> Rotate about the origin by q

r

How to compute (x’, y’) ?

x = r cos (f)y = r sin (f)

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

rotation1

(x’,y’)

q

f

(x,y)

Rotation

x = r cos (f)y = r sin (f)

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

r

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)

rotation2

(x’,y’)

q

f

x’ cos(q) -sin(q) x

y’ sin(q) cos(q) y

=

(x,y)

Rotation

x’ = x cos(q) – y sin(q)

y’ = y cos(q) + x sin(q)

r

Matrix form?

3 x 3?

3x3 2d rotation matrix

(x’,y’)

r

q

f

x’ cos(q) -sin(q) 0 x

y’ sin(q) cos(q) 0 y

1 0 0 1 1

x’ cos(q) -sin(q) x

y’ sin(q) cos(q) y

=

=

(x,y)

3x3 2D Rotation Matrix
slide11

q

Rotate individual

Vertices

Rotation

  • How to rotate an object with multiple vertices?
2d scaling

x’ Sx 0 x

y’ 0 Sy y

x’ = x . Sx

y’ = y . Sy

=

(4,4)

Sx = 2, Sy = 2

(2,2)

(2,2)

(1,1)

2D Scaling

Scale: Alter the size of an object by a scaling factor

(Sx, Sy), i.e.

2d scaling1

(4,4)

Sx = 2, Sy = 2

(2,2)

(2,2)

(1,1)

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

x’ Sx 0 x

y’ 0 Sy y

=

x’ Sx 0 0 x

y’ = 0 Sy 0 * y

1 0 0 1 1

3x3 2D Scaling Matrix
put it all together
Put it all together

Which one is different than the others?

  • 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

= +

= *

= *

3x3 2d translation matrix

x’ = x + tx

y’ y ty

x’ 1 0 tx x

y’ = 0 1 ty * y

1 0 0 1 1

3x3 2D Translation Matrix

Use 3 x 1 vector

  • Note that now it becomes a matrix-vector multiplication
3x3 matrix representations

x’ 1 0 tx x

y’ = 0 1 ty * y

1 0 0 1 1

3x3 Matrix representations
  • Translation:
  • Rotation:
  • Scaling:

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

linear transformations

x’ a b c x

y’ = d e f * y

1 0 0 1 1

Linear Transformations
  • A general form of a linear transformation can be written as:

x’ = ax + by + c

OR

y’ = dx + ey + f

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

x 1 h 0 x

y = 0 1 0 * y

1 0 0 1 1

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

Interesting Facts:

  • Any 2D rotation can be built using three shear transformations.
  • Shearing will not change the area of the object
  • Any 2D shearing can be done by a rotation, followed by a scaling, and followed by a rotation

x 1 0 0 x

y = g 1 0 * y

1 0 0 1 1

Shearing in y

slide22

What if I want to rotate about an arbitrary center?

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

(px,py)

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)
slide24

x’ 1 0 px cos(q) -sin(q) 0 1 0 -px x

y’ = 0 1 py sin(q) cos(q) 0 0 1 -py y

1 0 0 1 0 0 1 0 0 1 1

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
slide25

What if I want to scale about an arbitrary pivot point?

Scaling Revisit

  • The standard scaling matrix will only anchor at (0,0)

Sx 0 0

0 Sy 0

0 0 1

slide26

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)
    • Scale 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 transformations
  • 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