Top Banner
Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1
54

Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

Mar 26, 2015

Download

Documents

Audrey Waddell
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

Computer Graphics:2D Transformations

Kocaeli UniversitesityComputer Engineering Department

Fall 2011

1

Page 2: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

Geometric Transformation

• What is geometric transformation?• Operations that are applied to the geometric

description of an object to change its position, orientation, or size are called geometric transformations

2

Page 3: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

3

2D Transformations

x

yx

y

x

y

Page 4: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

4

2D Transformations

x

yx

y

x

y

Applications:- Animation

- Image/object manipulation

- Viewing transformation

- etc.

Page 5: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

5

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 multiplications to the object vertices

Page 6: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

6

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

X’ a b c xY’ = d e f * y1 0 0 1 1

Page 7: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

7

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 (x,y)

(x’,y’)

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

tx

ty

Page 8: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

8

Translation

• How to translate an object with multiple vertices?

Translate individualvertices

Page 9: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

9

2D Rotation

• Default rotation center: Origin (0,0)

Rotate counter clockwise

Rotate clockwise

Page 10: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

10

(x,y)

(x’,y’)

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

(x’, y’)

How to compute (x’, y’) ?

r

2D Rotation

Page 11: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

11

(x,y)

(x’,y’)

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

(x’, y’)

How to compute (x’, y’) ?

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

r

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

2D Rotation

Page 12: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

12

2D Rotation

(x,y)

(x’,y’)

r

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

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

x’ = r cos ()

= r cos() cos() – r sin() sin()

= x cos() – y sin()

y’ = r sin ()

= r sin() cos() + r cos()sin()

= y cos() + x sin()

Page 13: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

13

2D Rotation

(x,y)

(x’,y’)

r

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

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

Matrix form?

x’ cos() -sin() x y’ sin() cos() y

=

Page 14: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

14

How to rotate an object with multiple vertices?

Rotate individualVertices

2D Rotation

Page 15: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

15

2D Scaling

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

x’ = x . Sx y’ = y . Sy

x’ Sx 0 xy’ 0 Sy y=

(1,1)

(2,2) Sx = 2, Sy = 2

(2,2)

(4,4)

Page 16: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

16

2D Scaling

(1,1)

(2,2) Sx = 2, Sy = 2

(2,2)

(4,4)

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

Page 17: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

Scaling facts

17

Page 18: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

18

Put it all together

• Translation:

• Rotation:

• Scaling:

y

x

t

t

y

x

y

x

y

x

t

t

y

x

cossin

sincos

y

x

y

x

t

t

s

s

y

x

0

0

Page 19: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

Homogeneous Coordinates -1

• It is well known that many application involves sequences of geometric transformations

• For example, an animation might require an object to be translated, rotated and scaled at each increment of the motion

• If you want to first rotates an object, then scales it, you can combine those two transformation to a composite transformation like the following equation

19

0 cos sincos sin*

0 sin cossin cosx x x

y y y

S S SA S R

S S S

Page 20: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

Homogeneous Coordinates -2

• However, it will be difficult to deal with the above composite transformation and translation together. Because, translation is not 2 by 2 matrix representation

• Consider how the matrix representations discussed in the previous sections can be reformulated so that such transformation sequences can be efficiently processed

20

Page 21: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

Homogeneous Coordinates -3

• A standard technique for expanding each two-dimensional coordinate position representation (x, y) to three-element representation, called Homogeneous Coordinates, where homogeneous h is a nonzero value such that

21

,h hx yx y

h h

• A convenient choice is simply to set h=1, so each two-dimensional position is then represented with homogeneous coordinate (x,y,1).

Page 22: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

22

Or, 3x3 Matrix Representations

• Translation:

• Rotation:

• Scaling:

x’ 1 0 tx x y’ = 0 1 ty * y1 0 0 1 1

x’ cos() -sin() 0 x y’ sin() cos() 0 * y1 0 0 1 1

=

x’ Sx 0 0 x y’ = 0 Sy 0 * y1 0 0 1 1

Why use 3x3 matrices?

Page 23: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

23

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!• How to represent a vector (vx,vy)?

Page 24: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

24

Composing Transformation

• Composing Transformation – the process of applying several transformation in succession to form one overall transformation

• If we apply transforming a point P using M1 matrix first, and then transforming using M2, and then M3, then we have:

(M3 x (M2 x (M1 x P )))

Page 25: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

25

Composing Transformation

• Composing Transformation – the process of applying several transformation in succession to form one overall transformation

• If we apply transforming a point P using M1 matrix first, and then transforming using M2, and then M3, then we have:

(M3 x (M2 x (M1 x P ))) = M3 x M2 x M1 x P

M

(pre-multiply)

Page 26: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

26

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) translation rotation?

Page 27: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

Example1: General Two-Dimensional Pivot-Point Rotation

• So we can generate a 2D rotation about any other pivot point (x, y) by performing the following sequence of translate-rotate-translate operations

27

(xr,yr

)(xr,yr

)(xr,yr

)(xr,yr)

Page 28: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

Example1 (Cont)1. Translate the object so that the pivot-point position

is moved to the coordinate origin2. Rotate the object about the coordinate origin3. Translate the object so that the pivot point is

returned to its original position

28

1 0 1 0 cos sin (1 cos ) sincos sin 0

0 1 sin cos 0 0 1 sin cos (1 cos ) sin

0 0 10 0 1 0 0 1 0 0 1

r r r r

r r r r

x x x y

y y y x

( , ) ( ) ( , ) ( , , )r r r r r rT x y R T x y R x y

Page 29: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

Example2: Scaling without translation

1. Translate the object to so that the fixed point coincides with the coordinate origin

2. Scale the object with respect to the coordinate origin

3. Use the inverse of the translation in step (1) to return the object to its original position

29

Page 30: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

Example2 (Cont)

30

(xr,yr

)(xr,yr

)(xr,yr) (xr,yr)

Translate Scale Translate

100

)1(0

)1(0

100

10

01

100

00

00

100

10

01

yfy

xfx

f

fx

f

f

sys

sxs

y

x

s

s

y

x

y

yxffffyxff ssyxSyxTssSyxT ,,,, ,,

Page 31: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

Some Other Transformations

Shearing and Reflections

31

Page 32: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

32

Shearing

• Y coordinates are unaffected, but x coordinates are translated linearly with y

• That is:– y’ = y – x’ = x + y * h

x 1 h 0 xy = 0 1 0 * y1 0 0 1 1

Page 33: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

33

x 1 0 0 xy = g 1 0 * y1 0 0 1 1

Shearing will not change the area of the object

Interesting Facts:

Shearing in Y

Page 34: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

34

Reflection

Page 35: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

35

Reflection

Page 36: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

36

Reflection

Page 37: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

37

Reflection about X-axis

Page 38: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

38

Reflection about X-axis

x 1 0 0 xy = 0 -1 0 * y1 0 0 1 1

Page 39: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

39

Reflection about Y-axis

Page 40: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

40

Reflection about Y-axis

x -1 0 0 xy = 0 1 0 * y1 0 0 1 1

Page 41: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

41

What’s the Transformation Matrix?

Page 42: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

42

What’s the Transformation Matrix?

x -1 0 0 xy = 0 -1 0 * y1 0 0 1 1

Page 43: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

More about reflection?

• Reflection about y=x• Reflection about y=-x

43

Page 44: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

44

The standard rotation matrix is used to rotate about the origin (0,0)

cos() -sin() 0 sin() cos() 0 0 0 1

What if I want to rotate about an arbitrary center?

Rotation Revisit

Page 45: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

45

Arbitrary Rotation Center

• To rotate about an arbitrary point P (px,py) by :

(px,py)

Page 46: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

46

Arbitrary Rotation Center

• To rotate about an arbitrary point P (px,py) by : – Translate the object so that P will coincide with the

origin: T(-px, -py)

(px,py)

Page 47: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

47

Arbitrary Rotation Center

• To rotate about an arbitrary point P (px,py) by : – Translate the object so that P will coincide with the

origin: T(-px, -py) – Rotate the object: R()

(px,py)

Page 48: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

48

Arbitrary Rotation Center

• To rotate about an arbitrary point P (px,py) by : – 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)

Page 49: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

49

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)

Put in matrix form: T(px,py) R() T(-px, -py) * P

x’ 1 0 px cos() -sin() 0 1 0 -px x y’ = 0 1 py sin() cos() 0 0 1 -py y1 0 0 1 0 0 1 0 0 1 1

Arbitrary Rotation Center

Page 50: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

50

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

Sx 0 0 0 Sy 0 0 0 1

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

Scaling Revisit

Page 51: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

51

To scale about an arbitrary fixed point P (px,py):

(px,py)

Arbitrary Scaling Pivot

Page 52: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

52

To scale about an arbitrary fixed point P (px,py): Translate the object so that P will coincide

with the origin: T(-px, -py)

(px,py)

Arbitrary Scaling Pivot

Page 53: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

53

To scale about an arbitrary fixed point P (px,py): Translate the object so that P will coincide

with the origin: T(-px, -py) Scale the object: S(sx, sy)

(px,py)

Arbitrary Scaling Pivot

Page 54: Computer Graphics: 2D Transformations Kocaeli Universitesity Computer Engineering Department Fall 2011 1.

54

To scale about an arbitrary fixed 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)

Arbitrary Scaling Pivot