Top Banner
2D Transformations
47

2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Dec 22, 2015

Download

Documents

Shonda Heath
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: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

2D Transformations

Page 2: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

2D Transformations

• World Coordinates

• Translate

• Rotate

• Scale

• Viewport Transforms

• Hierarchical Model Transforms

• Putting it all together

Page 3: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Transformations

• Rigid Body Transformations - transformations that do not change the object.

• Translate

– If you translate a rectangle, it is still a rectangle

• Scale

– If you scale a rectangle, it is still a rectangle

• Rotate

– If you rotate a rectangle, it is still a rectangle

Page 4: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Vertices

• We have always represented vertices as (x,y)

• An alternate method is:

• Example:

y

xyx ),(

8.4

1.2)8.4,1.2(

Page 5: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Matrix * Vector

10

01

'

'

'

'

I

dycxy

byaxx

y

x

dc

ba

y

x

100

010

001

'

'

'

'

'

'

I

izhygxz

fzeydxy

czbyaxx

z

y

x

ihg

fed

cba

z

y

x

Page 6: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Matrix * Matrix

10

01?

*

,

dc

ba

dwcydzcx

bwaybzaxBA

wz

yxB

dc

baA

Does A*B = B*A? NO

What does the identity do?

AI=A

Page 7: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Translation

• Translation - repositioning an object along a straight-line path (the translation distance) from one coordinate location to another.

(x,y)

(x’,y’)

(tx,ty)

Page 8: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Translation

• Given:

• We want:

• Matrix form:TPP

t

t

y

x

y

x

tyy

txx

ttT

yxP

y

x

y

x

yx

'

'

'

'

'

),(

),(

1.4'

4.3'

2.8

1.7

1.4

7.3

'

'

2.81.4'

1.77.3'

)2.8,1.7(

)1.4,7.3(

y

x

y

x

y

x

T

P

Page 9: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Translation Examples

• P=(2,4), T=(-1,14), P’=(?,?)

• P=(8.6,-1), T=(0.4,-0.2), P’=(?,?)

• P=(0,0), T=(1,0), P’=(?,?)

Page 10: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Recall

• A point is a position specified with coordinate values in some reference frame.

• We usually label a point in this reference point as the origin.

• All points in the reference frame are given with respect to the origin.

Page 11: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Applying to Triangles

(tx,ty)

Page 12: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

What do we have here?

• You know how to:

Page 13: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Scale

• Scale - Alters the size of an object.

• Scales about a fixed point

(x,y)

(x’,y’)

Page 14: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Scale

• Given:

• We want:

• Matrix form:PSP

y

x

s

s

y

x

ysy

xsx

ssS

yxP

y

x

y

x

yx

'

0

0

'

'

'

'

),(

),(

6.6'

2.4'

2.2

4.1

30

03

'

'

2.2*3'

4.1*3'

)3,3(

)2.2,4.1(

y

x

y

x

y

x

S

P

Page 15: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Non-Uniform Scale

(x,y)

(x’,y’)

S=(1,2)

Page 16: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Rotation

• Rotation - repositions an object along a circular path.

• Rotation requires an and a pivot point

Page 17: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Rotation

)sin('

)cos('

sin

cos

)(

),(

ry

rx

ry

rx

R

yxp

Rpp

y

x

y

x

yxy

yxx

rry

rrx

'

cossin

sincos

'

'

cossin'

sincos'

cossinsincos'

sinsincoscos'

Page 18: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Example

• P=(4,4)=45 degrees

Page 19: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

RotationsV(-0.6,0) V(0,-0.6) V(0.6,0.6)Rotate -30 degrees

V(0,0.6) V(0.3,0.9) V(0,1.2)

Page 20: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Combining Transformations

Q: How do we specify each transformation?

Page 21: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Specifying 2D Transformations

• Translation– T(tx, ty)

– Translation distances

• Scale– S(sx,sy)

– Scale factors

• Rotation– R()– Rotation angle

Page 22: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Combining Transformations

• Using translate, rotation, and scale, how do we get:

Page 23: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Combining Transformations• Note there are two ways to combine

rotation and translation. Why?

Page 24: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Let’s look at the equations

cos'sin'"

sin'cos'"

'

'

'''

'

)(

),(

),(

yxy

yxx

tyy

txx

PRP

TPP

R

ttT

yxP

y

x

yx

y

x

yx

yx

tyxy

tyxx

yxy

yxx

TPP

PRP

tytxy

tytxx

cossin"

sincos"

cossin'

sincos'

'"

'

cos'sin"

sin'cos"

Page 25: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Combining them

• We must do each step in turn. First we rotate the points, then we translate, etc.

• Since we can represent the transformations by matrices, why don’t we just combine them?

PSP

PRP

TPP

'

'

'

Page 26: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

2x2 -> 3x3 Matrices

• We can combine transformations by expanding from 2x2 to 3x3 matrices.

100

0cossin

0sincos

cossin

sincos

100

00

00

0

0,

100

10

01

,

R

s

s

s

sssS

t

t

t

t

y

xttT

y

x

y

x

yx

y

x

y

x

yx

Page 27: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Homogenous Coordinates

• We need to do something to the vertices

• By increasing the dimensionality of the problem we can transform the addition component of Translation into multiplication.

2

22

147

2

63

2

14

6

7

3.,

1

2

4

2

4. ExEx

h

hh

yy

h

xx

h

y

x

y

xP h

h

h

h

Page 28: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Homogenous Coordinates

• Homogenous Coordinates - term used in mathematics to refer to the effect of this representation on Cartesian equations. Converting a pt(x,y) and f(x,y)=0 -> (xh,yh,h) then in homogenous equations mean (v*xh,v*yh,v*h) can be factored out.

• What you should get: By expressing the transformations with homogenous equations and coordinates, all transformations can be expressed as matrix multiplications.

Page 29: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Final Transformations - Compare Equations

PRPPRP

y

x

y

x

y

x

y

xR

PssSPPssSP

y

x

s

s

y

x

y

x

s

s

y

xssS

PttTPPttTP

y

x

t

t

y

x

y

x

t

t

y

xttT

yxyx

y

x

y

x

yx

yxyx

y

x

y

x

yx

1100

0cossin

0sincos

1

'

'

cossin

sincos

'

'

,,

1100

00

00

1

'

'

0

0

'

',

,,

1100

10

01

1

'

'

'

',

Page 30: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Combining Transformations

1

'

'

100

10

01

100

0cossin

0sincos

1

"

"

1

'

'

100

0cossin

0sincos

1

"

"

1100

10

01

1

'

'

)60(),2,4641.0(),4,3(

"'",'

y

x

t

t

y

x

y

x

y

x

y

x

t

t

y

x

RTP

PBAPPBPPAP

y

x

y

x

1100

cossin

sincos

1

"

"

1100

0cossin

0sincos

100

10

01

1

"

"

1100

cossincossin

sincossincos

1

"

"

y

x

t

t

y

x

y

x

t

t

y

x

y

x

tt

tt

y

x

y

x

y

x

yx

yx

Page 31: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

How would we get:

Page 32: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

How would we get:

Page 33: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Coordinate Systems

• Object Coordinates

• World Coordinates

• Eye Coordinates

Page 34: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Object Coordinates

Page 35: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

World Coordinates

Page 36: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Screen Coordinates

Page 37: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Coordinate Hierarchy

O b jec t #1O b jec t C oo rd in a tes

T ra n sfo rm a tionO b je ct # 1 ->

W o rld

O b jec t #2O b jec t C oo rd in a tes

T ra n sfo rm a tionO b je ct # 2 ->

W o rld

O b jec t #3O b jec t C oo rd in a tes

T ra n sfo rm a tionO b je ct # 3 ->

W o rld

W o rld C o o rd in a tes

T ra n sfo rm a tionW o rld -> S c re en

S c re en C oo rd in a tes

Page 38: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Let’s reexamine assignment 1

Page 39: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Transformation Hierarchies• (See chapter 10 for details)

• For example, a robot arm

Page 40: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Transformation Hierarchies

• Let’s examine:

Page 41: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Transformation Hierarchies

• What is a better way?

Page 42: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Transformation Hierarchies

• What is a better way?

Page 43: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

Transformation Hierarchies

• We can have transformations be in relation to each other

World Coordinates

Upper Arm Coordinates

Lower Arm Coordinates

Hand Coordinates

Transformation: Upper Arm -> World

Transformation: Lower -> Upper

Transformation: Hand-> Lower

Page 44: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

44 Angel: Interactive Computer Graphics 5E © Addison-Wesley

2009

Rotation about a Fixed Point

Start with identity matrix: C IMove fixed point to origin: C CTRotate: C CRMove fixed point back: C CT -1

Result: C = TR T –1 which is backwards – Cp

This result is a consequence of doing postmultiplications.Let’s try again.

Page 45: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

45 Angel: Interactive Computer Graphics 5E © Addison-Wesley

2009

Reversing the Order

We want C = T –1 R T so we must do the operations in the following order

C IC CT -1

C CRC CT

Each operation corresponds to one function call in the program.

Note that the last operation specified is the first executed in the program

Page 46: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

46 Angel: Interactive Computer Graphics 5E © Addison-Wesley

2009

OpenGL Example

• Rotation about z axis by 30 degrees with a fixed point of (1.0, 2.0, 3.0)

• Remember that last transform specified in the program is the first applied

glMatrixMode(GL_MODELVIEW);glLoadIdentity();glTranslatef(1.0, 2.0, 3.0);glRotatef(30.0, 0.0, 0.0, 1.0);glTranslatef(-1.0, -2.0, -3.0);glBegin(GL_TRIANGLES);...

Page 47: 2D Transformations. World Coordinates Translate Rotate Scale Viewport Transforms Hierarchical Model Transforms Putting it all together.

47 Angel: Interactive Computer Graphics 5E © Addison-Wesley

2009

Matrix Stacks• In many situations we want to save

transformation matrices for use later– Traversing hierarchical data structures (Chapter 10)– Avoiding state changes when executing display lists

• OpenGL maintains stacks for each type of matrix– Access present type (as set by glMatrixMode)

by glPushMatrix()glPopMatrix()